The equilibrium that wouldn’t settle: when the right answer was to ship and defer

← All field notes

A population balance is a tug-of-war you build from both ends at once. Death pulls the number down; birth pulls it back up; and a world worth tending is the narrow place where those two forces lean on each other and hold. We had just finished the down-pull — creatures that die of accumulated vulnerability rather than a countdown, and a fox that adds a little more of it nearby.

So we built the up-pull, reproduction, expecting to dial the two against each other until the herd settled into something living. It would not settle. This is the story of why, and why the right answer turned out to be shipping a finished mechanism with the balance left openly undone.

You can’t tune one half against a broken other half

The thing we kept relearning is that a population balance is joint. There is no birth rate that is correct in isolation — it is only ever correct against a particular death rate. So before reproduction could mean anything, the down-pull had to be real. Two pieces of that were already in place: a creature now dies when age and hunger raise its vulnerability past a single seeded draw, and a fox raises that same vulnerability for nearby prey without any separate kill event. We were careful, when we built the fox, to keep it a shaping pressure rather than a balance — gentle and fixed, both species persisting — precisely so that reproduction would have a steady, known weight to pull against. (The fox carries its own surprises; a backwards tuning number we trusted enough to trace is its story, not this one.) Equilibrium, we told ourselves, was reproduction’s job.

So we built reproduction: mature adults with a partner nearby produce young, the newborn enters small and grows up before it can breed in turn, and its traits are a blend of both parents with a little drift. The player-facing shape of that — a child built from two parents and nudged a little — is a post of its own. What matters here is what happened when we finally had both ends of the rope and pulled.

A hundredfold sweep, and no living middle

To find the balance we built a small instrument that runs the world forward under a chosen birth rate and watches the population’s trajectory over a quarter of an in-game year. Then we swept the birth chance across roughly a hundredfold range, low to high, looking for the band where the number holds — or gently rises and falls — instead of running away.

There was no band. The system was violently stiff. Set the birth rate low and the founding population went extinct in about three in-game days, gone before it could replace itself. Nudge it high enough to matter and the population exploded past anything the world could hold in under a single in-game day. Between extinction-in-three-days and explosion-in-one-day there was no wide, robust middle — only collapse or boom, nothing legible to stand in.

A balance you can only hit by threading a needle isn’t a balance. It’s an accident waiting to tip.

That stiffness is itself a finding. A living world has to forgive a little — a hot season, a year of more foxes — and drift back; a system with no slack is one bad week from extinction in either direction. So the question stopped being “what’s the right birth rate” and became “why is there no birth rate that works at all.”

The down-pull was the wrong knob

The instinct is to blame the thing you just built. But reproduction wasn’t the mis-scaled part — the death side was. When we’d built causal death, the numbers that govern how fast a creature ages and slows were never tuned to be real lifespans. They were quick placeholders, scaled to make the instrumentation run fast enough to watch, with old age setting in after about eight seconds of real time. Eight seconds. In a world meant to be lived over in-game days and seasons, that is a creature that ages and dies many times too fast — fast enough to drive roughly eighty-five percent mortality every in-game day.

Against a down-pull that strong, no up-pull is stable. A birth rate low enough not to explode can’t outrun that death rate, so the herd starves to extinction; a birth rate high enough to keep pace overshoots instantly and booms. The hundredfold cliff wasn’t reproduction misbehaving. It was the sweep faithfully reporting that the axis underneath it was calibrated to a stopwatch, not to a life. The fix the result pointed at was clear: recalibrate the miscalibrated axis, don’t over-tune the correct one.

A small herd of grazing creatures, a few of them young, spread comfortably across a sunlit voxel meadow by a stream at golden hour.Concept art · pre‑alpha
The living middle we were after — a herd that holds rather than vanishes or floods.

The catch a determinism check could never make

One bug from this stretch is worth telling on its own, because of how it was caught. Before we ever turned births on, we found that a newborn was being stamped with the wrong internal clock — reading the slow ecology clock instead of the simulation clock — which meant every newborn would age many times too fast the moment births went live. The thing that did not catch it was our reproducibility check.

We lean hard on a guarantee that the world replays identically from the same seed. It is the backbone of the whole project. But it has a blind spot that is easy to forget under pressure: it can only tell you an answer is consistent, never that it is correct. A newborn aged at twelve times the right rate is perfectly reproducible — wrong on every machine, identically. The check would have shrugged and passed. The bug was caught instead by re-deriving the arithmetic by hand and noticing the number was absurd. (That a green check can verify nothing is a lesson we paid for once before, and wrote down; its own story is here.) What this episode taught us specifically was to add a separate check that asserts the newborn’s clock is right — the correctness witness a determinism check can never be — so a wrong-but-consistent value can’t sail through again.

A second wall: pairing that gets quadratically slower

The sweep surfaced one more thing any future tune has to clear first. The logic that decides which adults pair off scans eligible adults against each other, and that scan gets quadratically slower as the population grows — double the herd and the work roughly quadruples. At the small numbers a collapsing population reaches, you never feel it. But a slower, healthier death rate is exactly the world where the population grows large and stays there — exactly where that scan would stall the simulation. So order matters: make the pairing cheaper, recalibrate the lifespan, then tune births and death together. Fixing the balance before the cost would just move the wall.


The honest call: ship it proven, switched off, and say so

Here is where it would have been easy to cheat. We could have hand-picked a birth rate that looked stable for the length of a demo — threaded the needle, captured a screenshot of a herd holding steady, and called reproduction balanced. It would have been a lie with a short shelf life: the first hot season or extra fox would have tipped it, and we’d have shipped a number we knew was a coincidence.

So we did the other thing. The reproduction mechanism is complete, proven, and deterministic — and switched off by default, its birth chance at zero so it sits byte-for-byte inert in a saved world. The balancing is deferred to its own future task, openly: recalibrate the lifespan so a creature’s felt span is measured in in-game days and seasons rather than seconds, make the pairing scan cheap enough for a thriving population, and only then tune the two forces together until the living middle appears. The work is named and the reason is written down, rather than buried under a number that happens to look calm.

You don’t win. You tend.

That ethos is exactly why this couldn’t be faked. A game about tending a world over its slow life can’t have creatures that age out in eight seconds and a herd one warm week from collapse. The equilibrium that wouldn’t settle wasn’t a failure of the mechanism we’d just built. It was the system doing the most useful thing a system can do: pointing, unambiguously, at which knob was actually wrong — and trusting us enough to say so out loud instead of papering over it.

Keep reading

Concept art · pre‑alpha