The Origins of DragonMail


The DragonMail you see here is (depending on how you count) the fourth game in an evolutionary series, the previous ones rightly never being let out.

Early 2019 I spent several weeks in hospital, during which I played a lot of Polytopia, which after Breath of the Wild got me thinking about virtual exploration without all the tedious mucking around in fights (see Why a non-violent game?). So I started learning how to create procedurally generated landscapes – if I wanted to explore, there was no point in drawing my own maps.

When I got out of hospital and started convalescing, I got to work on a diamond-square implementation in Python, using Pyglet to render archipelagos. Which worked nicely, apart from the fact that just the render was stressing the MacBook I was using so hard that there was no way adding any kind of playability on top was going to work.

So I went prodding around cross-platform, free gaming engines, and settled on Unity (I can’t remember now all the reasoning behind that decision – I know that my primary objection to Unreal was having to write in C++ which I’ve come to loathe through professional use, but I don’t know why I passed over Godot). My first real attempt was a horrible glue-together of freely available resources, attempting to retrofit a game plotline to those. It was a useful learning experience, particularly as I was picking up a brand new language and a brand new discipline. But I realised it wasn’t going to deliver what I wanted—in particular, it was obviously going to suffer from a lack of replayability due to the landscapes being static terrains.

With that under my belt, I started over with something that (a) had something resembling a plot which didn’t depend on the resources I had and (b) would return to the concept of a procedurally generated archipelago. On top of which came procedurally generated building complexes, and some kind of procedurally generated puzzles. It was all coming along nicely (although the whole puzzle idea was a bit problematic) but it became apparent that the MacBook was really struggling with the landscape rendering and it was time to spec up a proper games machine and switch to my preferred development platform (Linux).

The project ported over kind of OK, but there were a couple of hitches. Firstly, the procedural music generator I’d downloaded turned out to be Windows and Mac only. Secondly, getting game controllers working cross-platform (and for different kinds of controller – I’d been working with both Switch and Xbox) can be a headache. So I stopped and reconsidered.

And thought (a) there’s still a huge amount of work to do here before it’s remotely playable (b) I’m not sure how replayable it will be, given how much is driven by story and non-procedural puzzles, and (c) maybe I’ve bitten off more than I can chew in this design. I recognise (c) as a personal character flaw, and so, without guilt put aside the bold visions to go for something in easier reach.

Which brings me onto the first iteration of DragonMail. This came from careful consideration of what I wanted it to be, not what makes a generally great game, and very specifically taking inspiration from Cyclone, one of my favourite 8-bit games. I realised you could have a random archipelago (which is more than Cyclone did) with (mostly) non-procedural islands, and have replayability value in (a) random targets within a fixed but large landscape, (b) not having a story, but (c) having some kind of end condition, so that something between 20min (how long I can generally keep a Normal mode game of Mini Metro going) and an hour or so (the length of Polytopia game I enjoy) constitutes a satisfactory unit of play.

The idea behind the story was still influenced by available resources – I saw the gorgeous “animal knights” and decided I had to write something for them. My original thought was MouseCarl, with a mouse knight-wannabe questing for a cure for the king or some such. Then I found the small red dragon, and realised that a greater asymmetry between player and non-player might be a good thing. But what career opportunities could there be for small dragons other than growing into big dragons and killing people? And from somewhere the idea of a Postdragon came to me.

There wasn’t really much of either of the previous games I could reuse (the dialogue box and altimeter are about it), but I had a much better idea of what I was doing. Things progressed well, and I started sharing teaser screenshots. There was a slight worry that I’d still bitten off more than I could chew, but at least I could see there would be an incomplete-but-playable stage which would be ready Any Day Now. I suppose that day has finally arrived, but it’s taken another restart, or at least a complete replacement of the landscape.

There were two or three big problems with this first DragonMail. Firstly, it was really difficult settling random structures into a pre-defined landscape. I’d gone through this with my first Unity game, and wound up just dropping ruins out of the sky (which meant that sometimes you got to see a column cartwheeling down a mountainside as it loaded). Relatedly, I wanted to have NPCs who could wander from settlement to settlement, but getting those random settlements to mesh (literally) with the static terrain between them never really worked. Then there were performance issues. It all seemed to be running smoothly, but when it was at the point when it was Really Going To Drop This Weekend I made a gameplay video and … it stuttered horribly.

Profiling showed it was pretty much all down to the heavy graphics demands of having multiple islands in view with a complex water simulation between them (a reflective layer with tides, and on top of that a refractive layer with swell, all operating under the moving light source of the sun). I almost abandoned the project at that point, but remembered I’d seen a procedural landscape generator which included decreasing detail with distance from player (which the one I’d used in the second game didn’t).

And so work started on the second iteration of DragonMail, which is what you’ve got here. I dropped the complexities of ocean simulation by moving the setting inland, and put a bound on how much terrain could be in view by making it a crater. Not only does this version place far less demand on the graphics renderer, but random settlements can be made to sit in the terrain much more easily (the landscape generator carves out locations for them as it runs.) And I’m hoping that it will let me take a different, simpler approach to travelling NPCs.

There’s still stuff to add in which I expect will increase the load, but at least I now feel confident that it will run smoothly on a reasonable graphics card. And that means it’s time to give other people access.

Get DragonMail

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.