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.

Page 4 of 12

Terrain painting is a brush and a tile type. Ground, dirt, water, shallow water, trees, gold, stone and oil, painted with the shared brush size, shape and falloff from the left rail. Fill is bounded by elevation level rather than by texture, which matters more than it sounds: filling a plateau with grass fills the plateau, not everything that happened to be the same colour.

Trees, gold, stone and oil are overlays. Each sits on a base ground type that is remembered underneath, so clearing a forest reveals whatever the ground was rather than defaulting to grass.

Elevation is terraces, not a heightmap

Ground sits at an integer level from 0 to 7. 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. Seed, amplitude and character are map settings, so you can change the character of the rolling without touching a single tile.

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 level under the cursor
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
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 2D viewport draws cliff lip strips, contact shadows scaled by the size of the drop, and cliff ink. On top of that the editor adds level numbers at zoom 1.3 and above, a hatch pattern on ramp tiles, a heightmap colour ramp view for reading the whole map at a glance, 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 WarCraft III and StarCraft II both 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.