GOL-021 · technical companion
Two Rings
Eight near neighbors and sixteen further neighbors follow independent rules. Let them decide together with separate birth and survival priorities, or alternate one ring per Step.
At a glance
- geometry
- Square lattice
- neighborhood
- Disjoint inner 8 and outer 16 rings
- states
- Dead / alive + alternating phase + decision evidence
- update
- Frozen simultaneous priorities or alternating synchronous ring Steps
- renderer
- Canvas 2D
What to explore
Make the difference between two scales acting on one frozen board and two scales alternating across evolving boards directly observable. Both rings must matter, with disagreement and the exact next phase visible rather than hidden in code.
Rules, update order and replay
Binary square lattice, 80/120/160 square; toroidal by default, optionally bounded with off-field inputs dead. Inner ring is Chebyshev distance exactly one (8 positions). Outer ring is distance exactly two (16 positions). Neither includes the center; the outer ring excludes all inner positions. Minimum engine dimension is five so wrapped positions remain distinct. Each ring has independent exact birth and survival masks. Empty masks intentionally disable the corresponding path. All cells read frozen current occupancy and commit synchronously.
Simultaneous mode evaluates both rules against the original current cell state and current ring counts. Agreement stands. On disagreement, birth priority selects the winning ring at a dead position and survival priority selects the winner at a living position. Priority is authoritative in both directions: the winner may permit or deny life. This first iteration offers inner/outer priority, not extra AND/OR combination operators.
Sequential mode applies only the active ring for one complete Step, then flips inner to outer or outer to inner. The outer Step reads the board committed by the preceding inner Step. Reset starts inner. Mode changes preserve the field and Step number, clear prior evidence, and restart at inner. Other rule edits pause, preserve phase and occupancy, and clear evidence. Inactive precedence settings remain editable and preserved. Painting preserves phase/Step and clears evidence. Topology changes pause and preserve the field and phase, clearing evidence.
Replay state includes board, next sequential ring, Step number, last applied phase, each prior ring count/proposal, prior occupancy and decision source. Configuration, geometry and topology accompany the state. No evolution RNG or scan-order priority. Reset recreates the selected starting field from its seed and clears phase/evidence. Clear starts an empty field at Step zero, inner next.
Reading the simulation
Canvas 2D with binary occupancy; living inner decisions cyan, living outer decisions violet, living agreement lime. Dead decisions stay background. Inspector outlines inner inputs solid cyan and outer inputs dashed violet, reports both current counts/proposals, agreement/conflict, birth/survival priority, next phase, exact next result and previous-Step evidence. Written labels preserve all meaning in simplified Color mode. Keyboard and pointer inspection pause painting.
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.