Repository navigation
Releases: stoatworks-labs/conway
Release list
v0.1.0
Conway's Game of Life for Resolume Arena and Avenue, as two FFGL plugins in one download: SW Conway (LF01), a source that plays Life and twelve of its relatives from a random soup or a famous pattern, and SW Conway Over (LF02), an effect whose clip seeds the field and keeps feeding it. Nothing is drawn as a picture of Life: a grid of cells, one R32UI texel each, is updated by one rule over its eight neighbours, one pass per generation, in integer arithmetic, so the automaton is the same on every GPU. Gliders, spaceships, blinkers and pulsars, Gosper's gun firing a glider every 30 generations, the R-pentomino boiling for 1103 generations and a soup burning down to ash all fall out of the rule. Thirteen rules (Conway's B3/S23, HighLife, Day & Night, Seeds, Life without Death, Maze, Replicator, Diamoeba, 2x2, Morley, Anneal, and the Generations rules Brian's Brain and Star Wars) are parsed from their notation. Cells are coloured by their age and the just-dead trail; the plugin counts every generation's live cells exactly (an occlusion query) and reseeds when the count has settled into repetition. Audio onsets can step the field on the beat and drop patches of new cells; in the Over, Feed keeps breeding cells wherever the clip is bright.
What is verified
By tools/verify.sh on an M4 Max, macOS 26.4, on 2026-10-04, at two rasters (320×180 and 1280×720) and again on Apple's software renderer (what CI's runners fall back to), against the real plugin classes in a headless GL context:
- The literature, asked of the plugin. Five still lifes stay still; the blinker, toad and beacon come back at period 2, the pulsar at 3 and the pentadecathlon at 15, and not before; the glider moves (1,1) and the lightweight spaceship 2 cells every 4 generations, and the glider is home on a 24×24 torus at exactly 96; Gosper's gun adds 5 cells every 30 generations; Diehard is gone at 130, on a torus and with dead edges; the R-pentomino on a 640×640 torus has 118 cells at generation 1102 and 116 at every generation from 1103 to 1200. The harness's own stepper reproduces every one of those numbers on an unbounded plane first, with the shipped rule table's Conway.
- The family. Day & Night and Anneal are symmetric under swapping live and dead (0 cells disagree in 20 generations); Life without Death kills nothing; Seeds keeps nothing; the Replicator turns a 7×7 pattern into 8 copies at ±8 after 8 generations; Brian's Brain keeps nothing and never rebirths a cell straight after it died.
- Every rule, bit for bit. All 13 rules, on a torus and with dead edges, 64 generations of soup on a 157×93 grid, identical to the harness's independent stepper, every cell's age and time since death included.
- The count. The occlusion query's population equals the state's for every one of 301 generations; Auto Reseed fires on ash with a population period of 30 at exactly generation 149 (its window of 120 plus 30, less one), on an empty field at 7, and never on the R-pentomino in its first 1000 generations.
- Clock, picture, Over. From a host clock at 499,000,000 ms every frame's dt is within 6×10⁻¹¹ s and the generation count is floor( Speed × elapsed ) at every checkpoint; each pixel is the live area it covers to within its float bound (exact at half-pixel cells); Reseed from the clip makes exactly the cells whose centres are bright, not mirrored, a saturated blue counted; Mix 0 returns the clip bit for bit; a same-shape resize keeps the field bit-identical and a new shape keeps the overlap.
- Fourteen deliberately wrong models each fail their check; five one-character mutants (three in the shipped GLSL, two in the C++) are caught; all 41 parameters over both plugins move the picture;
oxbowloads both (SW Conway/LF01/ source,SW Conway Over/LF02/ effect) and renders 120 frames through each. - Render cost (median frame, on a machine shared with other builds): 0.2–0.4 ms for the source and 0.2–0.7 ms for the Over from 720p to 4K, and under 0.5 ms with two million cells.
- Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, no sound device, 2026-10-04): the DLLs of this source load from Extra Effects, register as
SW Conway/LF01/ source andSW Conway Over/LF02/ effect, all 24 + 30 host controls match the declaration, both render, and Arena's log stays clean: 15 of the fleet gate's 15 checks, audio skipped. On the source all 14 valued controls were confirmed live one at a time; on the Over 7 were, and 13 read inconclusive, none dead, because the field changes every generation and lifts the gate's noise floor. Software rendering says nothing about a GPU or about speed.
What is not
- Never loaded into Resolume on macOS. Footage has been seen only through the harness's
--pipe(the project video, on Resolume's bundled demo clips). Filming found no defect. - Auto Reseed is a heuristic: a population that repeats exactly, with a period of 30 or less, for 120 generations. With Noise above 0 it never fires; a large field can take minutes to settle; in a host the counts arrive a frame or two late.
- Threshold reads one pixel per cell, by the brightest channel × alpha: a dim grey clip seeds almost nothing at the default and a bright one fills the field (the guide says which way to move it).
- The colours are chosen by eye. The literature was checked against Wikipedia for this release (the LifeWiki refuses automated reads) and reproduced by the harness. No real audio has reached it in a host. No presets, no OpenFX port.
There is a user guide at https://stoatworks-labs.com/software/conway/guide/ and a browser demo at https://conway-demo.stoatworks-labs.com/ (a port to a web page, not the plugin). Video: https://www.youtube.com/watch?v=GOdiQPrVwPA
The macOS build is universal and Developer ID-signed and notarised (both the .dmg and the bundles in the .zip, signed by the release pipeline shortly after publication; if macOS refuses a download, it predates the signing, so download it again). The Windows build is unsigned, so SmartScreen warns once.