PulseCore

Chapter 2 · Section 7

The Harmonics and the Order of the Novas

The BPT law

BPT Part 3.6 numbers every nova as a harmonic of the data lattice: "Harmonic 1, space, the Null Nova's Toroidal Genesis; Harmonic 2, the data lattice of the Data Nova; Harmonic 3, the physical layer; Harmonic 4, spacetime. The name Harmonic Novas is kept for those past saturation, Harmonic 5 and after, which add no new direction." Data Harmonics gives their times:

t_h = (1 − 3/h)·2^L,   T₁ = 4·2^L − 1,   T_∅ = ceil(√(8·4^L) − 1)

"Counted from the Physical Nova, Harmonic h arrives at t_h = (1 − 3/h)·2ᴸ Tempos: spacetime (h = 4) at a quarter of the life, h = 6 at a half, h = 12 at three quarters. The gaps, 3·2ᴸ/(h(h − 1)) Tempos, shrink toward zero, and the later harmonics crowd into the final well." Before the life, Harmonic 2 is the Data Nova at the start of the data's count and Harmonic 3, the Physical Nova, comes at (1 − 2/3)·2^L = 2^L/3 of it (Part 2.3). The Layer Count Law, h_max(L) = 3·2^L: "A universe of level L reaches Harmonic 3·2^L before its final well; the last harmonics arrive together as its life closes." "The count of distinct arrivals is smaller, about twice √(3·2^L), because the later harmonics come within one Tempo of each other and arrive together."

The names come from the Outward Expansion Set (Part 2.6): 1 Toroidal Genesis, 2 Dimensional Genesis, 3 Temporal Genesis, 4 Spacetime Genesis. BPT Part 3.5 sorts nova scales with the UniSpheral Data Nova Scale Law: S < 10³, 10³ ≤ S < 10⁶, 10⁶ ≤ S < 10⁹, S ≥ 10⁹, from "the smallest MicroNova to a universe-seeding HyperNova," with S "the Nova scale composite measure."

The established physics

None: a game method. The harmonic series 1 − 3/h is the theory's.

The game's math

  • harmonicTempo(h) app.js:4284, in Tempos since the Data Nova: for h ≤ 3, ceil(2^Lm·(1 − 2/max(2, h))), so 0 for h = 2 and ceil(2^Lm/3) for h = 3. For h ≥ 4, physicalTempo() + ceil(2^Lm·(1 − 3/h)).
  • uni.layers = 3·2^Lm (layerCeiling() universe.js:249, set at app.js:4248).
  • In the universe, each step (app.js:4586–4592) takes t = universePulses() and h = novaCount + 1. If harmonicTempo(h) ≤ t and t is a new Tempo, it advances h while h < layers and harmonicTempo(h + 1) ≤ t, sets novaCount = h − 1 and fires one nova, which makes novaCount = h. Harmonics that fall in the same Tempo arrive as one nova, named for the highest.
  • PHYSICAL_LAYER = 3 universe.js:389. At novaCount = 3 the Proto Wells become physical (promoteDataWells(), after failProtoWells(), Part 2.8) and the Pulsecore's gathered data bursts out (burstPulsecore(), the matter chapter).
  • Names: novaLayer(n) universe.js:401 gives "Harmonic n · <name>" for n = 1–4 from NOVA_SET (universe.js:378) and "Harmonic n" after. phaseName() app.js:210 calls the phase "Pulsecore" before the Null Nova, "Space" until the Data Nova, "Data scaffold" until the Physical Nova, then "Universe".
  • Class: novaClass(novaScale) universe.js:407 with novaScale = the lit drawn cells at the nova (countActiveCells(grid, decayGrid), imported).
  • The nova's place, for harmonic novas: every cell is scored by the lit cells within a square window of radius searchRadius = max(2, min(5, floor(min(rows, cols)/4))) (app.js:5103) on the previous frame, without wrap. The top-scoring cells are clustered within the same radius and each cluster's mean is a center (app.js:5160–5163); the middle of the field if there is none.

Desktop, Lm = 6: life 64 Tempos, physicalTempo 22, final well at 86. Harmonic 4 at 22 + 16 = 38, Harmonic 6 at 54, Harmonic 12 at 70, the last, Harmonic 192, at 22 + 63 = 85, one Tempo before the final well, as the Layer Count Law requires. The 189 harmonics from 4 to 192 arrive as 23 nova events (24 with the Physical Nova), against the book's estimate of about 2·√192 ≈ 28 distinct arrivals. Phone, Lm = 4: physicalTempo 6, Harmonic 4 at 10, Harmonic 48 at 21, final well at 22, 10 events in all.

In the game

The harmonics are the run's milestones on screen. The readout's Layer line (updateLayerHud() app.js:2113) reads "n of 192 · Harmonic n · <name>" on a desktop, adding "· physical" from Harmonic 3, and the tooltip explains the numbering: "1 the Null Nova (space), 2 the Data Nova (the lattice), 3 the physical layer (wells become physical), 4 spacetime, then Harmonic Novas" (index.php:76).

A banner marks each nova up to Harmonic 4 for 2.8 seconds (HARMONIC_BANNERS app.js:231; app.js:5333–5338). After the two Pulsecore novas (Part 2.6) come "Physical Nova · the big bang," titled "Harmonic 3 · Temporal Genesis," with "space erupts from the pin head, everywhere at once · the data on the scaffold condenses into matter," and "Harmonic 4 · spacetime," titled "Harmonic 4 · Spacetime Genesis," with "the fourfold scaffold is complete" and the stars and wells so far (app.js:5240–5245). Later harmonic novas pass without a banner; on a desktop that is 22 of the 24 life events, crowding toward the final well in the run's last seconds. The banner's color follows the nova's class (NOVA_HUE app.js:2720). With Enable Sound ticked, each nova sounds (soundNova() app.js:3992), and novas to Harmonic 4 are added to the Collection.

In 3D, from Harmonic 4 on, each nova adds a thin colored ring just outside the torus, each a step farther out than the last and each a new hue, the newest 24 kept (setLayer() scene3d.js:1243); the stripes stay on the torus to the end of the run (scene3d.js:1207). The epoch line follows the phases: "Universe · the data roams the scaffold at light speed" until the scaffold "draws in toward the pin head," then from the Physical Nova "Universe · expanding, N% of its final size" with the stars (app.js:2146–2148).

The Directions say "Watch for novas. Each one is a harmonic of your universe's life, recorded in Nova Data, under your name when you are signed in" (index.php:335), and the Algorithms panel states the series and the Layer Count Law (index.php:357). The player sets the harmonics only through the level; each nova is then fixed by the clock.

The scale model

The series is drawn at Lm: 192 harmonics on a desktop stand for the true 3·2^L (8.05×10⁸ at level 28), and uni.trueLayers keeps the true count for the readouts (app.js:4247, 2777).

Where the game and the theory differ

  • The nova class is not scaled. novaScale counts drawn lit cells, at most 65,536 on a desktop and 4,096 on a phone, so a desktop nova is never a MacroNova or HyperNova and a phone nova is at most a StandardNova, whatever the true level. The Data Nova Scale Law of BPT Part 3.5 is applied to the drawn field, not to the universe.
  • The Layer line's tooltip says the layers are counted "out of the Layer Count Law's 2^(L+1)" (index.php:76). The book's law, and the number the line shows, is 3·2^L.
  • NOVA_HUE (app.js:2720) has entries for MicroNova, MiniNova, Nova, SuperNova, MegaNova, MacroNova and HyperNova; novaClass() returns MicroNova, StandardNova, MacroNova or HyperNova. A StandardNova has no entry and takes the default hue 320.
  • app.js still carries a "Timeline split · Choose a timeline" prompt that pauses the game and asks the player to pick one of several nova centers (app.js:5180–5214). It runs only in the "post" genesis phase, set from a postPhaseToggle element (app.js:5674) that the v8.3 page does not have, so genesisPhase stays 'pre' (app.js:3506) and every center fires at once.

Fixed numbers

Number Where What it is Kind
3 in (1 − 3/h) app.js:4287 the harmonic series of the life BPT (Part 3.6, Data Harmonics)
2 in (1 − 2/h), max(2, h) app.js:4286 the data's count before the life BPT (Part 3.6)
3 (3·2^L) universe.js:249 the Layer Count Law BPT (Part 3.6)
3 (PHYSICAL_LAYER) universe.js:389 the Physical Nova, Temporal Genesis BPT (Part 3.6)
4 (names and banners to n = 4) universe.js:378, app.js:5314, 5333 the four named novas BPT (Part 3.6, Outward Expansion Set)
10³, 10⁶, 10⁹ universe.js:407 nova classes BPT (Part 3.5, Data Nova Scale Law)
2800 ms app.js:5337 how long a banner shows DISPLAY
265, 320; NOVA_HUE values app.js:5246, 2720 banner hues DISPLAY
2, 5, /4 (searchRadius) app.js:5103 the nova-center search window CAP (5 caps the window at every field size)
rows/2, cols/2 (fallback center) app.js:5167 the center when no cell is lit METHOD
novaCount ≤ 4 (collection) app.js:5314 which novas are added loudly to the Collection RECORD