Chapter 10 · Section 11
The Final Well
- At 2^L of its own Tempos after the big bang, the universe forms its final well (the Rupture Rule, Part 1.7).
- Wells still orbiting would fall together here; with the paired orbits switched off (Part 3.5) there are none, and the last merger has already happened in the matter step.
- The census (
takeCensus(), Part 3.14): every well, physical and data, is ranked by mass, and each child's depth is read from its well's share of the universe's matter, L_child = L + log₂(8.1 · share / multiplicity) (Ascendant Wells). - The children are listed, the first twelve by rank; a merged well's child is the merger's, with the merger's spins. The rest are made when the player taps their wells.
- Each child's outcome is drawn from the Reproductive Outcome Distribution: viable 67%, chaotic 18%, a branch-line offshoot 9%, failed 6% (Part 1.12). The draw is a hash of the lineage's step count, the well and the wells' birth times, so a replay draws the same.
- The field at the final well is kept, so any well's child can be made later.
- Credits: each well is worth the frame ratio s of the universe that made it.
- The universe is saved with its record: children, wells, the law's progeny 2^(L/3) against the census, folds, credits.
- The return begins.
The code:
// public/game-v8.4/app.js:4518 updateCore()
if (uni && epoch === 'universe' && !ruptured && !reverse && universePulses() >= lifeEndTempo()) { rupture(); return; }
// public/game-v8.4/app.js:2538 rupture()
lifeSample(); takeCensus('final well');
lineage.children = [];
for (const e of (census ? census.entries : [])) {
if (lineage.children.length >= 12) break;
…
lineage.children.push(childOfEntry(w, mg));
}
lineage.children.forEach((ch, i) => { ch.index = i + 1; const o = childOutcome(uni.gen ?? uni.L, ch.fromWell, i); ch.outcome = o.key; ch.failed = o.key === 'failed'; applyCensus(ch); });
…
credits = lineage.total * uni.s;
…
dissipating = { start: pulseCounter, frames: DISSIPATE_FRAMES, tick: 0, k: 0 };
// public/game-v8.4/app.js:957 takeCensus(), a child's depth
const depth = share > 0 ? L0 + Math.log2(ASCENDANT_RATIO * share / mult) : -Infinity;
// public/game-v8.4/universe.js:184 the outcomes
export const OUTCOMES = [
{ key: 'viable', p: 0.67, name: 'viable' },
{ key: 'chaotic', p: 0.18, name: 'chaotic' },
{ key: 'branch', p: 0.09, name: 'branch-line offshoot' },
{ key: 'failed', p: 0.06, name: 'failed' }
];