Map Editor Documentation

Terrain & Height

Painting ground and water, the terrace elevation model, ramps, and the six ways a hand-edited height field goes wrong.

Build the world · Page 5 of 49

Terrain painting is a brush and a tile type. Grass, dirt, water, shallow water, trees, rock, lava and shallow lava, painted with the shared brush size and shape from the left rail (terrain paint is a hard mask; falloff is read only by the height tools). Gold, stone and oil have their own placement tools: a gold mine is a 3x3 stamp, stone is a single tile, and oil is a 2x2 patch that must sit on deep water.

Trees, gold, stone and oil are overlays on a base ground type. Trees keep whatever ground they were painted over (grass, if it was water), so clearing a forest reveals that ground; gold and stone always sit on grass, and oil on water.

Elevation is terraces, not a heightmap

Ground sits at an integer level from 0 to 15, and each level is one tile tall. Generated maps use 0 to 7; the levels above are there for your own mountains, crags and walled cities. A one-level difference between adjacent tiles is a cliff, and a cliff is impassable to ground units. A ramp is a tile flagged as crossable, and it is the only way ground units move between levels.

There is no free-form height painting and no float layer. That is a deliberate model rather than a missing feature: the movement rule, the pathfinding grid, the cliff geometry and the minimap all agree on integer levels, and a continuous heightmap would need all four to agree on a slope threshold instead.

The cosmetic rolling variation you can see in the 3D viewport is derived from the map's seed. It is not stored per tile and it does not affect movement. Only the seed (heightSeed) is stored with the map; the amplitude and wavelength of the rolling are engine constants shared by every map.

Height tools

ToolWhat it does
CliffRaises or lowers by one level with hard edges
HillRaises, then automatically ramps the slope it just created
SetPaints an absolute level
FlattenLevels the brush area to the median level already under the brush
SmoothRelaxes steps toward their neighbours
RampPaints or erases the ramp flag

Hill is worth reaching for by default. It runs the same slope-ramping pass the map generator runs on its own hills, so what you get is a hill the generator would have produced, already ramped, already free of the corner cases that make a hand-raised plateau unwalkable.

Every height operation re-establishes the one-level rule before it commits. If raising a region would leave a two-level step against its neighbour, the neighbour is brought along. This is not a repair pass you can skip; it runs as part of the edit, because a two-level step is not something the rest of the engine can represent.

What goes wrong, and what it costs

Freehand elevation editing has six failure modes. The Validation module finds all of them, locates them, and offers a repair.

What you didWhat happensSeverity
Left a two-level stepMovement refuses to cross it even with ramps on both sides, and the cliff geometry has a hole or a stretched face. The minimap looks fine and lies.Error
Ramped one side of a step onlyCrossing needs a ramp on both sides, so it is not a door.Error
Erased the only ramp off a plateauThe seat cannot reach its expansion, the opponent, or anything else.Error when it strands a gold mine or separates two starts; warning for other unreachable land
Raised land under a lakeWet tiles end up above sea level. This is repaired automatically on load, so the map appears to fix itself and you never find out why it looked wrong.Error, auto-repaired
Ramped flat groundSoftens a coverage boundary that should be hard. Harmless, looks wrong.Warning
Left one-tile pimples or one-wide ribbonsReads as Minecraft, and a one-wide terrace has no room to build on.Warning

The editor will not save or test a map with any error outstanding. "Repair all" runs the same repair primitives the generator uses on its own output, so the result is a map the generator would have been happy to produce.

Most of them you will never see. Anything with exactly one correct answer — a two-level step, a ramp with no partner, a stray cliff inside a rolling hill, water above sea level, lava touching a lake, a building left spanning two terraces — is repaired the moment you finish the stroke, and only the decisions that genuinely need you reach the panel. Where the fix moved terrain you drew, the panel says so in a line above the list rather than doing it silently; the full account is under "Fixed automatically".

"Repair all" is one undoable step. Ctrl+Z puts the whole thing back, including any hand-painted ramps that the connectivity repair regenerated — which is the one cost the button still carries, because repairing connectivity re-derives the entire ramp mask from the height field.

Reading elevation while you work

The heightmap colour ramp view shows the whole map at a glance. The editor adds level numbers at zoom 1.3 and above, a hatch pattern on ramp tiles, and pulsing markers on anything the validator flagged.

The minimap draws cliff edges and ramps at all times. Ramps are two pixels of gold, which at minimap scale is the fastest way to see whether a plateau has a way off it.

In 3D there is nothing to overlay: the geometry is the visualisation. If a cliff looks wrong in 3D it is wrong.

Water

Water levels normalise per connected body. A lake is one horizontal surface, and shallow water inside it carries no ramps. Dry tiles at the water's edge keep whatever height you gave them, so a beach and a cliff at the shoreline are both valid and both look like what you painted.

The seabed under the water is derived from the finished tile layout rather than stored. It is recomputed on load, which is cheaper than storing it and cannot disagree with the tiles.

Bulk edits and speed

Large brushes are expensive. Painting a radius-24 circle recomputes a significantly wider region of the ground coverage field and then rebakes the chunks that changed, which on a large map is measured in hundreds of milliseconds.

The editor handles that in two ways. Small brushes stay fully live: what you see under the cursor is the final ground. Above roughly 256 touched tiles during a drag, it paints a flat colour preview on the overlay and runs the real update when you release the mouse. This is what mature terrain editors do, and it is the difference between a smooth stroke and a slideshow.

Next: Lava & Biomes, which adds a terrain type with rules of its own.