The forest was not that slow: getting two clocks to agree

← All field notes

A dead tree in The Long Watch is supposed to stand as a snag for years, not days. Ours were standing for about five. Getting that right took two fixes — a wrong multiplier buried in the plant system, then a whole clock running out of step with the rest of the world — and it only closed once we built a way to actually watch a tree live out its life and time it.

A tool built to watch one tree grow

The trouble with catching a timing bug in a plant’s life is that you first have to watch a plant live it. The way we normally ran the simulation only got partway through a single in-game year in about fifteen minutes of real time — fine for testing whether the world holds together, useless for timing how a tree moves from seedling to snag to soil. So before we could fix anything, we built a fast, purpose-made instrument that could step one plant through its whole life on its own, at a pace we could actually sit and watch. And before trusting a single number it reported, we made it fail on purpose once, to prove it would actually notice a wrong answer instead of just reporting green.

Five days instead of years

With the tool running, the first number it produced was the problem itself. A snag — a dead tree still standing — was settling to litter after about five in-game days. The design called for something between two and seven years. That gap is roughly a hundred and sixty times, a tree finishing its afterlife fast enough that nobody watching a normal game session would ever catch a fallen tree still standing.

Three tries to get the correction right

Sizing the fix took three passes, and each one caught a mistake in the last. The first estimate converted the wrong kind of duration into calendar time and overstated the correction by more than five times. The second applied a single multiplier evenly across all six tree species — cleaner, but a flat number spread across things that don’t decay at the same rate quietly under-corrected two of them, landing both at exactly one year and missing what the design actually wanted for each.

The number that finally shipped was sized to the slowest species to decay, not the typical one. Set any lower, and the fastest species would come out right while the slowest stayed wrong.

A uniform factor over a heterogeneous set is bound by its extremum, not its exemplar.

Put plainly: when one shared correction has to cover several different things, it has to be sized to the worst case among them, or it will silently under-correct the rest. After the fix landed, a snag stood for roughly two to seven in-game years, matching what the design had called for from the start, and a check across the rest of the simulation confirmed nothing else had moved.

A weathered, moss-covered dead tree standing upright in a sunlit forest clearing, with young ferns and saplings growing at its base.Concept art · pre‑alpha
A snag now stands long enough to grow its own quiet history around it — moss, ferns, and years passing.

A second clock, out of step

Closing that arc surfaced a second, unrelated problem sitting underneath it. The plant system had been keeping its own internal clock, separate from the clock the rest of the game world runs on, and the two had drifted apart until the plant system was only managing to keep pace with about a twentieth of what the world clock had already ticked through — roughly a twenty-one-to-one gap. This wasn’t a number to retune. It was a structural mismatch between two clocks that were supposed to stay in step, and it’s not the first time a mismatched clock has cost this project accuracy without announcing it: a birth timestamp read on the wrong clock once aged a newborn about twelvefold too fast.

The fix uses a technique the team calls folding: instead of trying to jump the plant clock straight to where the world clock already sits, it lets the plant system catch up in bounded steps, while preserving the property that the same sequence of plant events happens in the same order no matter which machine runs the game — the guarantee the game’s save-and-replay behavior depends on. Measured afterward at a realistic population, a little over three thousand plants, the plant clock came back tracking the world clock almost exactly, up from under five percent before the fix. The catch-up has a ceiling: past roughly eight thousand plants it would start falling behind again, in a bounded but real way, and today’s plant counts sit comfortably under that ceiling, with about 1.6 times as much room again before they’d reach it.

How long an oak actually takes

With both clocks finally trustworthy, a follow-up measurement asked the question the whole arc had been circling: how long does a seedling oak actually take to grow into a mature tree? The answer came back at roughly six to seven in-game years, which at the corrected clock’s pace works out to somewhere around thirty-three to thirty-eight real-world hours to watch happen from seed to full maturity. That number was documented deliberately as an upper bound, since the measuring tool couldn’t fully capture one of the effects that speeds growth along in a real, lived-in world; the true figure should run a little faster.

It also overturned a number that had been sitting in the project’s own reference notes for months: an earlier estimate, computed rather than measured, had put an oak’s growing time at roughly fifteen times what it actually is. Nobody had watched a tree do it. Once someone built a way to, the old number didn’t survive contact with an actual tree.

Whether that same forest can replace itself, old trees seeding new ones that take root and grow up in turn, is a different question, and a separate count already answered it.

Two arcs, one thread: a number that meant something other than what it said, filed away long enough to become fact, until somebody built the one thing that could check it: a way to actually watch a tree live its life, and time it.

Keep reading

Concept art · pre‑alpha