Skip to content

How Rust builds a map

This page is about Rust’s own behavior, not Creator’s. It applies to any custom map, whichever tool built it: knowing the order the game generates a world in explains most of what goes wrong when you build one by hand, and all of what goes wrong when you run a generation pass at the wrong moment.

For what the individual biome and topology layers do once they exist, read Drizzza’s Rust biomes and topology explained. That page is the reference and this one is the order of operations; they fit together and neither repeats the other.

Everything below either writes a layer or adds to the list.

LayerWhat it holds
heightThe shape of the land, as a grid of heights.
waterThe water level, as its own grid, so a lake can sit above sea level.
splatWhich ground textures show, as eight weights per cell: dirt, snow, sand, rock, grass, forest, stones, gravel.
biomeWhich climate each cell is in, as weights.
topologyThe gameplay rules for each cell, as a set of flags: Field, Cliff, Beach, Ocean, Monument, Road, Rail, Building, Tier0 to Tier2 and the rest.
alphaWhere the terrain has holes in it, which is how cave and tunnel mouths exist.

The list is every placed object: monuments, rocks, buildings, deployables. Alongside it sits a list of paths: roads, rivers, rails and powerlines, each a line of nodes with a width and the layers it paints.

Topology is not decoration. It is the rulebook Rust reads at runtime, which is why a map can look perfect and spawn nothing.

Generation is a long list of passes, run in a fixed order, and each one reads what the ones before it wrote. Creator runs that same list in that same order, which is what the loading screen is showing you pass by pass. The shape of it is:

  1. The land. The heightmap, then the layers that are derived from it: biome, the first topology, the splat, erosion, and the ocean, cliff and clutter topology.
  2. The monuments. Mountains, canyons, lakes, oases, harbors, fishing villages, the military bases, the main monuments, tunnel entrances, the small monuments, swamps, ruins, caves, underwater labs, lighthouses, roadside monuments. Each pass looks for somewhere its monuments are allowed to sit, then seats them and writes their own masks into the layers under them.
  3. The paths. Rivers, then the rail ring and rail layout, then the road ring and road layout, then powerlines and their poles. These need the monuments to already exist, because what a road is for is connecting them.
  4. The rocks and the dressing. Coastal cliffs, hill cliffs, rock formations, river rocks, loose rocks, icebergs. Last, because they fill what is left.

The order is the whole reason the passes work. A road pass with no monuments has nothing to connect. A topology pass run after the monuments repaints the layers the monuments just wrote. Anything that rewrites a layer late undoes the work of everything that wrote that layer earlier.

That is the same trap Drizzza’s guides warn about, and it is why running only the passes your map still needs is the one habit worth building.

Size does not just scale a map, it gates it. Whole passes are skipped below a threshold, so some features cannot exist on a small map at any seed.

From this sizeYou get
3500Launch Site and the Excavator become placeable at all. They are the only two monuments in the game with a personal size gate.
4000The road ring, and the canyon, lake and oasis passes.
4250The rail ring, and therefore all surface rail.
5000The mountain pass.

Everything else scales rather than switching on: each placement pass has a target count that is scaled by world size, so a small map simply gets fewer attempts at everything. On top of that, monuments of the same kind have to stand a minimum distance apart, which on a small map rules out a second one even when the pass did run.

The practical reading: 4000 is the smallest size that behaves like a normal Rust map, 3000 is a small map that is missing structural features on purpose, and above 4250 you are adding space rather than features.

Generation is deterministic: the same size and seed give the same world. What moves it is the code, not the inputs.

Rust runs most of its passes off one shared stream of random numbers, drawn in a fixed order. One extra draw anywhere in that sequence shifts every number every later pass receives. So a change with nothing to do with monuments, a new decor pass or a tweak to how rivers are shaped, reshuffles the whole map on the same seed. It is not a bug and it is not avoidable: it is what a single shared stream means.

This is measurable rather than theoretical: between two Rust builds in August 2026, 30 of 38 single-instance monuments moved on the same seed.

The consequence for you is on Procedural generation: a seed reproduces a map only against the content snapshot it was generated on, because the snapshot pins the generator as well as the art.

This is the distinction that explains most “my map is empty” reports.

In the fileCreated by the server, every time it starts
Every terrain layer aboveTrees and forests
Every placed prefab, including monumentsOre nodes and collectibles
The train tunnel network under the railsAnimals
Underwater lab interiors, assembled at generationLoot in containers
Roads, rivers, rails, powerlinesAnything that respawns

So a map is a world plus a rulebook, and the living part of it is spawned on top from the biome and topology layers. If a region of your map comes up bare in game, you are looking for a layer, not a missing prefab. Drizzza’s Rust biomes and topology explained is the page that tells you which layer.

  • Move a monument after it has seated and the terrain it flattened stays flattened. Re-seat it with its own masks, which is the Prefab Modifiers buttons on build order step 8.
  • Sculpt under a road and the road’s own layer paint is still where it was. Re-apply the path, or expect the rules and the geometry to disagree.
  • Repaint topology anywhere and you are editing the rulebook. That is usually what you want, and it is always worth knowing you are doing it.
  • Delete a rock and nothing else changes, unless the map came from RustEdit, where the prefab count is part of how its data is addressed.