Chapter 10 · Section 8
Every Step of the Universe's Life
From the Data Nova to the final well, every flip runs the cell rule and then, in this order (updateCore()):
- The drag: the spin's frame drags the field round its centre (Part 2.10).
- The spin through the nova: the pinpoint's spin is carried into the torus; the inside-out turn moves the data outward, so its rate falls to 0.8 of the pinpoint's, and as the universe grows it falls as 1/scale² (the skater's arms going out).
- The flow (
flowSlice()): the data circulates round the torus at light speed. Data crossing the throat passes through the Source and out again, and is counted. - The wells (
stepWells()): each well, and from the Physical Nova each heavy cluster of matter, turns the data round it at its Kepler rate and draws it in; with many wells, each reaches out to half the way to its nearest neighbour (Part 3.11). - The core (
stepInner(),stepInnerGas()): empty since the Data Nova. - The lattice (
rideLattice()): the scaffold turns with the data's spin. Between the Data Nova and the Physical Nova the torus draws in toward the pin head, faster as the Physical Nova nears. - The matter (
stepMatterTo()): four sub-steps of gravity a flip, once matter exists (Part 4.1). - A life sample every fourth flip, for the record.
- The dilation: the scale grows from 1 at birth toward 2f at the final well, 1 + (2f − 1) · n / 2^L (Dilation Toward the Final Well, Part 2.11).
- The mergers: after the matter moves, two wells whose horizons touch, or that are bound and within reach, merge into one at their centre of mass, shedding a share of their mass as gravitational waves; the merged well's spin and its child's signature are read from the merger (
mergeWells(), Part 3.10). One merger a step. (stepOrbits()still runs here, but the paired-orbit code that would fill it is switched off, so it does nothing; Part 3.5.) - The finds (
stepFinds()): states, strings and the wells' rings are watched for (Chapter 7). - The checks: if the life is over, the rupture (Part 10.11); otherwise, if the next harmonic is due, its nova (Part 10.10).
The code:
// public/game-v8.4/app.js:4518 updateCore(), the universe's step
flowSlice(dt);
stepWells();
stepInner();
stepInnerGas();
rideLattice(dt);
stepMatterTo(1); matterSubDone = 0; matterWant = 0;
if (pulseCounter % 4 === 0) lifeSample();
scale = dilation(universePulses(), uni.L, uni.f);
if (scene) scene.setScale(scale);
applyVoid();
stepOrbits();
stepFinds();
// public/game-v8.4/engine.js:113 dilation()
export function dilation(n, L, f) {
const cap = Math.pow(2, L);
const x = Math.max(0, Math.min(1, cap > 0 ? n / cap : 1));
return 1 + (2 * f - 1) * x;
}