I've been circling this idea for about a year. Conway's Game of Life has four rules, infinite emergent behavior, and a fifty-year catalog of named patterns built by researchers and enthusiasts since the 1970s. The question I kept coming back to: can that mathematical object become a game with real strategic depth, something you can pick up in under a minute but spend years actually learning?
That's what PETRI is trying to be.
Before building, I mapped the landscape. Two genres shaped how I thought about the problem.
Daily puzzle games reach wide audiences because the mechanic is immediately legible. One puzzle, one attempt, shareable result. Complexity can deepen over time, but the first experience has to be clear enough that you know whether what you did was good or bad.
Strategy games work differently. Their depth comes from a learned vocabulary, not from on-the-fly calculation. Players don't compute every consequence. They recognize named patterns and deploy them. The game becomes learnable because the pieces have names and behaviors you can internalize.
Conway's Game of Life gives PETRI something unusual: an inherited strategic vocabulary from day one. Fifty years of enthusiast research has named and documented hundreds of patterns — Blocks, Gliders, Eaters, Spaceships, each one with known behavior. That's what the game is built on.
| Reference | Depth source | Accessibility hook | Virality layer |
|---|---|---|---|
| Daily puzzles | Escalating challenge catalog | Clear win/lose in 30 sec | Shareable emoji grid |
| Classical strategy | Named opening theory | Named pieces with roles | Community, tournaments |
| Conway sandboxes | Pattern catalog (50yr) | None — educational only | Screenshots, math community |
| PETRI | Inherited Conway vocabulary | Named patterns + 1-min onboarding | Daily challenge + shareable result |
The first prototype worked. It was also visually identical to a debug view: flat grey squares in a column, two timers, Player 2 rotated 180° with no spatial language of its own. No identity, no tension. A debug tool pretending to be a game.
Before touching the visuals, I audited the mechanics against Salen and Zimmerman's meaningful play framework. Two criteria. Both failing.
The harder problem was structural. Toggling a single cell per turn on an 8×8 board of evolving Conway chaos fails both pillars:
The fix came from asking why strategy games work despite having the same problem: no one can compute every consequence in advance. Strategy players recognize named patterns and deploy them. The game is learnable because the pieces have names and known behaviors — not because players simulate the system.
Conway's community built exactly this vocabulary over fifty years: Block, Blinker, Glider, Eater. Switching from cell-toggle to pattern deployment changed the cognitive model entirely.
Three directions explored before committing. Each had a consistent worldview: palette, cell shape, motion vocabulary, timer treatment. The test was simple: which one reads as an artifact, something you'd want to carry on your phone?
The clinical lab direction won because it makes the game photogenic. A dish is something you want to screenshot. Warm paper reads on any phone wallpaper. Emerald glow halos survive dark mode. And it frames Conway's chaos as science — which changes what a player expects from every interaction.
Eight starter patterns, chosen for variety of role: two still lifes, four oscillators, two spaceships. The mix was validated through simulation before being locked. Defense-only palettes produced mutual extinction by turn 7. Offense-only became visually unreadable. A mixed palette was the only configuration that produced genuine momentum swings with both players leading at different points.
Every pattern is canonical Conway. Click any tile to watch it run in the dish.
A 2×2 square that never moves, never dies. Your immortal territory marker. Place it to claim a corner without risk.
The biggest risk for a game with rules this unfamiliar is losing players before they understand why it's interesting. If the first experience is confusion, they leave and don't come back.
Five steps, each teaching one Conway rule in isolation. Every step has its own live dish showing exactly that rule in action — one concept per screen, nothing doubled up. Language is clinical: Starved, Suffocated, Born. The dish stays pinned so it never jumps during transitions.
After the five steps, players land in the lab: an open dish where they can deploy any pattern from the vocabulary and watch it interact freely. The lab is where understanding turns into curiosity. Players experiment with combinations, build intuition, and arrive at the first match with a genuine sense of what they're doing.
Tap targets use Voronoi click detection — any pixel in the dish maps to the nearest cell, so there are no missed taps. The skip button is a visible bordered pill. Every one of those decisions came from watching people use the phone version and bouncing on exactly that surface.
The whole game runs on a 30-line Conway step function. Patterns are encoded as coordinate arrays, parsed from the canonical plaintext format the community has used for fifty years. The sim.js headless simulator that validated every design decision is the same step function — no graphics, no state management, just cells and neighbors.
// Four rules. The entire cellular automaton lives here. function stepConway(grid) { const rows = grid.length, cols = grid[0].length; const next = []; for (let r = 0; r < rows; r++) { const row = []; for (let c = 0; c < cols; c++) { let n = 0; for (let dr = -1; dr <= 1; dr++) for (let dc = -1; dc <= 1; dc++) { if (!dr && !dc) continue; // skip self const nr = r + dr, nc = c + dc; if (nr >= 0 && nr < rows && nc >= 0 && nc < cols && grid[nr][nc]) n++; } // Survive: 2–3 neighbors · Born: exactly 3 row.push(grid[r][c] ? n === 2 || n === 3 : n === 3); } next.push(row); } return next; } // Pattern definitions — canonical coordinate pairs const GLIDER = [[0,1],[1,2],[2,0],[2,1],[2,2]]; const EATER = [[0,0],[0,1],[1,1],[2,1],[2,2],[3,2],[3,3]]; const LWSS = [[0,1],[0,2],[0,3],[0,4],[1,0],[1,4],[2,4],[3,0],[3,3]];
The game didn't happen in a straight line. Here's how the decisions actually stacked up.
The mechanics are validated. The visual system is cohesive. The onboarding works. What's open is the container — the format that determines how people discover and return to the game. Three directions are being explored.
The game is shipped as a development preview. Build is live. Commits keep coming.