Lava is a terrain type in its own right, painted with the same brush as everything else. It is not a variant of water and not a flag on a water tile, and that distinction determines everything about how it behaves.
What lava does
Every gameplay consequence of lava is something it does not do:
| Requirement | How it is met |
|---|---|
| Ground units cannot walk on it | It is not in the walkable set |
| Ships cannot sail it | It is not water, so no naval movement |
| Docks and other coastal buildings cannot use it | A coastal tile needs adjacent water; lava is not water |
| Nothing can be built on it | It is not in the buildable set |
| Air crosses it freely | Flying ignores the ground grid entirely |
That is why lava was added as its own terrain type. The alternative considered was a per-map flag on water tiles, which would have made ships sail lava and docks build on it unless the three most-used movement predicates were changed to depend on map state. Those predicates are read by the pathfinding grid build, they run for every tile, and making them map-dependent is a lockstep hazard. It would also make a map with both water and lava impossible.
The one rule: lava must not touch water
Adjacent lava and water is an error and blocks publishing. The validator finds every contact and marks it, and the repair separates them deterministically: run it twice and nothing changes the second time.
The rule exists for a rendering reason and a physical one. Both surfaces render from the same mesh with a mask deciding which material a tile takes, which is safe precisely because no tile ever mixes the two. It also looks wrong: molten rock meeting open water without so much as steam reads as a mistake, because it is one.
Loading a map never silently moves your tiles. The loader asserts the rule and reports it rather than repairing it, because a map that quietly edits itself at match start is a surprise even when the edit is deterministic. Repair happens in the editor, where you can see it.
What lava looks like
The rock rim around a lava lake is not new art. A lava tile drives every other ground coverage channel to zero, so the rock layer shows through, and the same distance field and noise that give a shoreline its organic edge give the rim a crenellated one that respects cliffs. It is the rock texture the cliff faces already use, laid flat.
The surface itself is a shader and needs no texture at all. Where lava is present the deep-to-shallow water ramp becomes a crust-to-hot ramp, waves and foam are suppressed, and slow-pulsing magma cracks are generated from noise as an emissive. A charred ring near the edge comes from packing per-tile lava proximity into a channel of an existing texture that was previously written as a constant and never read.
The 2D renderer mirrors the same maths baked into canvas tiles, so a lava lake looks like a lava lake in both viewports.
Biomes
Ten biomes ship, and they differ only in look: ground textures, tree species, water and sky palettes, rock colour, and default weather.
| Biome | Character |
|---|---|
| Forest | Temperate green, the default |
| Winter | Snow ground, pale high-key sky, snow weather |
| Plains | Straw-gold wheat country under a warm sky |
| Jungle | Saturated green under a royal-blue sky, heavy rain |
| Swamp | Dark, sallow, green-tinted air |
| Glade | High-elf autumn under a turquoise sky |
| Gloom | Violet ground under a purple daytime sky |
| Wasteland | Dry orange-brown, no weather |
| Desert | Sand and hot gold haze, no weather |
| Cave | Enclosed, no sky, scarlet mushroom growth |
| Deep cave | Cracked basalt, the biome lava maps are built for |
Deep cave is the one built alongside lava. It suppresses the sky and mounts the same overhead enclosure cave does, and its ground is cracked basalt rather than recoloured grass. Recolouring is a real technique and is used for its rock, dirt, forest floor, shore and water, but a recoloured grass blade is still a grass blade, so the ground layer was generated fresh.
Every table the renderer reads is keyed by biome with a fallback to forest, so a half-configured biome renders as temperate forest rather than crashing. That is loud and recoverable, which is the behaviour you want from a missing table entry.
Mixing biomes on one map
A map has one biome, but each of its thirty ground texture slots can be sourced from a different one; see Creating a Map for the panel and its two warnings. Fully blending two complete tilesets the way StarCraft II does is not possible here: the ground coverage field is four channels and all four are allocated, and a seventh ground layer would be a seventeenth texture on a shader that already binds sixteen, which is the hardware guaranteed minimum. A seventeenth does not degrade, it fails the shader link, and the entire ground renders flat white with nothing thrown.
Per-slot sourcing gets most of the way there without that risk.
Next: Units & Properties.