projectrtsunitygame developmentdevlogmap editorprocedural generationterrainlevel designenvironment artworld machine

Dev Diary #3: The Map Editor

October 1, 2026
4 min read

In the last part I promised to tell you about maps, and this part is about them. Let me make one thing clear right away: all the maps in the screenshots are test maps. I generated them with the editor just for variety, so there is somewhere to play and test the game. I'll make the real maps by hand once the editor is ready, so here I'm mostly talking about the tool itself.

Dev Diary #3: The Map Editor — 1

The screenshot shows one of the test maps in 3D: mountains, forest and rocks. None of it is drawn by hand, it's all calculated from a graph, which I'll describe below.

Why the Game Needs a Map Editor

In an online strategy game the map has to be identical for all players down to the smallest detail, so it can't simply be drawn like a regular location. It's a set of data that every computer reads and calculates in the same way. The second task is that the map has to be fair. Both players must have equal bases, resources and approaches, otherwise everything depends on who got which side. That's why my maps are symmetrical in walkability, while the fine terrain detail is not, so the eye doesn't see a mirror.

The First Version: A Generator Based on a Recipe

At first I had a simple generator that built a map from a recipe in layers: a sketch of zones, rivers with fords, landforms, walkability markup, placement of bases and resources, and a check at the end. Any map can be written as one line: the recipe, the size, the number of players and a seed. Change the seed and you get a different map from the same recipe. Later I added mountains, erosion, bridges and forests, and the maps started to look noticeably better.

Dev Diary #3: The Map Editor — 2

The screenshot shows the seed sheet: eight variants of one map. The editor checks every variant for fairness right away, and two of them failed. In one the enemy is too close, in the other the proportions of cliffs, water and walkability don't add up.

A Node-Based Editor, Like World Machine

A recipe turned out to be too much like a preset: pick a template, tweak a few settings. For someone used to World Machine and Gaea that wasn't enough, and on September 26 I rebuilt the map as a node graph. The set of nodes is familiar: noise, terraces, blur, erosion by drops and by slides, masks by height and by slope, blending. The graph is calculated on the graphics card, because on the processor a 256 by 256 map with erosion took from 0.6 to 2.3 seconds, and with that delay on every move of a slider it's inconvenient to work. All the math inside is integer, so the map comes out the same on any computer.

Dev Diary #3: The Map Editor — 3

Here is the graph of one of the test maps. Every node has a preview, the resulting map is on the left and the parameters are on the right. At the bottom right you can see the "Playable" mark: that is the result of the check.

Stages of Working on a Map

A day later I realised that one graph held absolutely everything: terrain, starting pads, oil and walkability thresholds. It was awkward to edit, and I wanted to place the start positions with the mouse right on the map, like in a regular location. So the work on a map split into stages. "World" is the graph, that is, nature only. In "Layout" I place starts and objects and draw zones and crossings. In "Look" I set the density of forest and rocks, the biome and the palette. The playability check lives in a tab inside "Layout". Each stage reads the result of the previous one and does not rewrite it.

Dev Diary #3: The Map Editor — 4

This is the "Layout" stage. The white frame is the border of the play area, the orange circles are the base pads.

Dev Diary #3: The Map Editor — 5

And this is the "Look" stage. There is already a choice of biome and season here, but that will be a separate part.

The World Beyond the Edge of the Map

Another thing I didn't like: the map always stood in a ring of mountains, like in a bowl, and the world beyond its edge looked like a separate backdrop, with a visible seam at the border. I asked to make the map and the world around it one piece, and leave the frame as just a border the player doesn't cross. Now the map is calculated together with the field around it, a river beyond the edge keeps flowing in its own bed, and mountains appear only where the terrain calls for them. In the screenshot above you can see it by the frame: the terrain doesn't break off behind it.

Import, Export and Publishing

So as not to be tied to a single editor, I added import and export of heightmaps. You can sculpt a mountain in Gaea, World Machine or Blender and bring it into the game, and the other way round. There are also stamps, a height curve and masks by curvature, by water flow and by closeness to water. A finished map turns into one protected file together with the world beyond the edge. From the editor it can be sent to the server with one button, and players will get an update with the new map.

What's Next

For now the editor only handles the land, and for a map I need more. Planned: a hand-edit layer on top of the graph, so you can sculpt a detail with a brush and regeneration won't wipe it out, prop placement, roads drawn as a line that lay themselves onto the terrain, and map types: nature, village, city, industrial zone. There's almost nothing to say about the city yet, it's a big separate topic. In the next part I'll talk about forest, snow and weather: how one map got four seasons and why I rejected the trees twice.