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
| Tool | What it does |
|---|---|
| Cliff | Raises or lowers by one level with hard edges |
| Hill | Raises, then automatically ramps the slope it just created |
| Set | Paints an absolute level |
| Flatten | Levels the brush area to the level under the cursor |
| Smooth | Relaxes steps toward their neighbours |
| Ramp | Paints 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 did | What happens | Severity |
|---|---|---|
| Left a two-level step | Movement 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 only | Crossing needs a ramp on both sides, so it is not a door. | Error |
| Erased the only ramp off a plateau | The seat cannot reach its expansion, the opponent, or anything else. | Error |
| Raised land under a lake | Wet 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 ground | Softens a coverage boundary that should be hard. Harmless, looks wrong. | Warning |
| Left one-tile pimples or one-wide ribbons | Reads 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.