Publishing makes a map downloadable and playable by other people. Before it does anything else, it runs the validator.
The same validator runs twice: once in the editor, so you can fix things while you can see them, and once inside the publish request on the server, so a hand-crafted request cannot skip it. It is one function used by both, which is the only way to be sure the two agree.
What blocks publishing
Every rule below is an error, and every one of them catches something that fails silently at runtime. None of them is a matter of taste.
| Rule | What it prevents |
|---|---|
| Too few spawn points | Seats with nowhere to start |
| A spawn point outside the map | A seat that cannot be placed |
| Two spawn points on one tile | Two seats sharing a base |
| A one-seat map with standard victory on | The match declaring victory on tick 1 |
| No gold mines | Every faction's opening needs gold, so no seat can act |
| A duplicate authored id | A trigger finds one of the two entities; the other is unreachable |
A mercenary camp in buildings | The camp spawns as an invulnerable prop with no stock |
| A spawner with an empty squad | It ticks forever and produces nothing |
| An unknown unit or building id | The entity never spawns and nothing says so |
| An entity outside the map | Same |
| Two overlapping footprints | One of them fails to spawn and vanishes |
| A height invariant violation | See Terrain & Height |
| Lava touching water | See Lava & Biomes |
| An entity standing on lava | It spawns somewhere it cannot be |
| An unknown asset key in a data override | A unit that renders as a coloured circle |
Two of these deserve more than a table row.
The mercenary camp rule. Mercenary stock is attached by one specific spawn
path, and the mercCamps field is what routes a camp through it. A camp
written into buildings takes the ordinary building path instead and arrives
as an inert, invulnerable prop. It has the right model, sits in the right
place, and cannot be interacted with. Nothing in the game reports it. It is the
quietest failure in the whole map format, which is why it has its own rule.
Overlapping footprints. Two entities claiming the same tile means one of them fails placement at load and is dropped. The map you published and the map that loads are different maps, and the difference is silent. The editor validates every member of a multi-selection drag before committing it for the same reason.
What warns but does not block
| Rule | Why it is only a warning |
|---|---|
| Uneven resources between seats | Deliberate asymmetry is a real design |
| No ramp connecting a seat to the others | An air-only or naval start is a real design |
| Terrace speckle and one-wide ribbons | Ugly, not broken |
| A ramp on flat ground | Softens a boundary that should be hard |
Warnings are worth reading. Most of them are mistakes most of the time.
What happens to your map
Publishing produces a self-contained file. If your map links a mod, the mod's overrides and trigger library are copied into the map at publish time, and the map records which mod and version they came from as a note rather than as a dependency. See Data Overrides for why that matters: a live dependency would let a host and a joiner run different content, which surfaces as a total desync at tick zero.
The map is also hashed, and the hash is checked when a match starts, so a mismatch is reported as a clear error rather than as a mysterious disagreement about the state of the world.
Updating a published map
Editing a published map and publishing again replaces it. Anyone with the old copy who joins a match hosted on the new one will be told the copies differ rather than desyncing partway through.
Version your map name if you want the old version to stay playable. There is no automatic version history.
A short pre-publish list
- Validation clean, warnings read and dismissed on purpose.
- Tested from a seat other than seat 0.
- Every wave, objective and cutscene fired at least once.
- Debug text messages removed.
- Starting resources and fog back to what you actually want.
- The map name and description say what the map is. The description is what people read in the browser before they download it.
That is the whole authoring path. Back to Introduction for the map of these pages.