GOL-022 · technical companion

Hidden Current

Invisible viruses follow living sight lines. Living hosts shelter nearby life, coupling a hidden moving layer to the familiar rhythms of Life.

At a glance

geometry
Two aligned square lattices
neighborhood
Eight bounded sight rays + Moore Life + square protection halo
states
Dead / alive + virus occupancy and remembered heading
update
Frozen attraction and protection, simultaneous collision resolution and Life
renderer
Canvas 2D

What to explore

Expose feedback between ordinary Life, attracted mobile viruses and survival halos. Viruses never transport the cell matrix directly. Cluster motion, if it emerges, must come from births and selective survival. Measure activity honestly; neither perpetual motion nor rigid traveling organisms is promised.

Rules, update order and replay

Two aligned binary square lattices, 80/120/160 square, toroidal by default or bounded with off-field cells absent. A virus additionally owns its last heading: -1 unassigned, then 0 N, 1 NE, 2 E, 3 SE, 4 S, 5 SW, 6 W, 7 NW. Minimum engine dimensions are 13 so radius-six wrapped neighborhoods are distinct.

Each Step freezes both layers. Viruses count living cells at distances 1 through sight distance along exactly eight straight rays; intervening life does not occlude later life, off-axis cells do not count, and the host is excluded. A strongest count at or above attraction threshold selects heading. A qualifying tie retains the old heading only when it is one of the maxima, otherwise the virus rests without erasing its remembered heading. Below threshold (including no life), weak-signal behavior either coasts along the remembered heading or rests without erasing it. An unassigned virus cannot coast. Selected headings are retained even when movement is blocked. A threshold above sight distance deliberately makes all signals weak; the composer explains this, and randomizers avoid this case.

Every Step senses life and updates headings, even between movement opportunities. All viruses may jump on Steps N, 2N, 3N, etc., where N is movement interval 1–8. The next Step is generation+1. Interval edits preserve generation and immediately use the new interval's multiples; no hidden private phase is introduced. Reset and Clear return to Step zero. Protection and ordinary Life still act every Step.

Moves jump exactly movement distance 1–6 spaces in the selected direction, with no intermediate movement, protection or collision substeps. Only landing occupancy matters; paths may cross and pass over intervening viruses. Out-of-bounds landings rest, with no shortened jump or edge bounce. All shared-destination claimants rest without retries. A move into an occupied viral position succeeds only if its occupant succeeds in leaving; blocking propagates backwards through chains. Closed cycles and swaps succeed simultaneously. No cell-layer occupancy blocks viruses. Virus number is conserved and there is at most one per position.

Current living hosts with a current virus protect all currently living cells at Chebyshev distance <= protection radius, including themselves. Protection does not propagate from protected neighbors and never revives a dead cell. Ordinary Life counts the frozen immediate Moore neighborhood using configurable B/S masks. Final life is ordinary Life OR (current living AND covered). Movement arrivals do not protect until the following Step. Commit both complete layers together.

Full replay state contains board, virus occupancy, remembered headings, Step and previous frozen occupancy, ordinary proposals, coverage, virus origins, proposed headings/targets, claim counts and movement reasons. No evolution randomness. Reset reconstructs both layers with independent named seeds, clears headings and evidence, and returns to Step zero. Clear empties both layers. Painting edits only life, preserves viruses/headings/Step and clears evidence. Rules and topology pause and preserve both matrices and headings. Initial density/seed edits apply on Reset; world/profile or pattern changes rebuild both layers from selected seeds.

Reading the simulation

Canvas 2D binary lime life by default. With Reveal viruses, outlined amber diamonds show viruses and cyan shows living cells saved by the previous Step's protection. Color off simplifies life without hiding explicitly revealed viral markers. Selected inspection outlines eight sight rays, the selected host's protection square, nearby protection sources and the movement target. Written evidence reports all eight counts, strongest count versus threshold, weak-signal behavior, next movement Step and countdown, remembered/proposed heading, target/claims/blocking reason, ordinary Life count/result, coverage source count, final next life and next viral occupancy. Previous-Step protection and movement reasons remain distinct from the forecast. Keyboard arrows select, Enter paints only outside inspection, P plays, S steps. Mobile shortcut follows instructions and calls the shared rail handler.

Reproduce an opening

Download the example above, open the simulation, expand the controls, then use Share & reproduce → Import JSON. The example uses authored rules and a fixed seeded starting field; it is independent of the site’s editable default composition. Import starts paused at Step zero.

Share links and JSON reproduce the configured starting conditions, including hidden layers rebuilt by Reset. They do not save an evolved board, hand-painted cells, speed or display preferences. Determinism applies to the same rule version and Step sequence; real-time playback rates vary by device.

Larger fields and more involved rules can reduce playback speed. Read the configuration format and automated-access guide for compatibility details.