Skip to content
Iron Psalm

·Foundations·1 min read

Building the world before the game

Why Iron Psalm grows ten million years of geology, climate, and hydrology once at deployment, caches the genesis snapshot, and only then starts a single tick. The unfashionable choice and the reasons for it.

The fashionable way to build a procedural world is to ship a generator that runs at world-load time in a handful of seconds, make every cell of it streamable, and let the player walk in before the kettle has boiled. Iron Psalm does not.

A deep-time worldgen pipeline runs once at deployment, inside its own ten-minute budget. It grows a single u64 seed across roughly ten million simulated years of tectonics, climate burn-in, hydrology, erosion, glaciation, and biome classification. The output is a genesis snapshot: a deterministic blob of several hundred megabytes, which the running simulation reads in under a second on every subsequent boot. No player ever waits ten minutes. Most boots are instant.

The up-front cost is accepted because the qualities a world ought to have are not cheap. Mountain ranges with history written into their cross-sections; river systems whose oxbows record what their catchments used to do; ore distributions that a reader could predict from where they were standing because the distribution was a consequence and not a sprinkle. None of that comes out of a generator with fifty milliseconds to think.

The implementation discipline is severe. Every iterative solver in the pipeline (plate kinematics, climate burn-in, glaciation cycles, priority-flood hydrology) has a bounded upper limit measured in epochs, tuned to the ten-minute budget. There is no unbounded loop anywhere in the genesis path. The runtime simulation, which begins the moment the snapshot is loaded, holds itself to a far stricter rule: every allocation is made at startup, every queue has a fixed upper bound, every assertion checks both the positive and the negative space.

This is the unfashionable choice. The game will not be ready when the world is. The world has to be ready first.

  • design
  • worldgen
  • deep-time