FreeSimulationNo signup

Conway's Game of Life

Two rules. Three states. One of the most surprising systems in all of computing.

Ready
Step 0 / 0
Agents: 0
Group AGroup BEmpty
10/s

Parameters

Random
0.300

Only used when pattern is Random.

0.050.6

Tweak parameters, then press Reset to apply.

What you just saw

A cell comes alive if it has exactly three live neighbors. A live cell survives only with two or three. That's the whole rule set. From it you get still lifes, oscillators, spaceships, glider guns, and — if you arrange the cells carefully enough — Turing-complete computation. This simulator uses a toroidal grid (wraps at the edges) so patterns don't hit walls.

The science behind it

John Horton Conway invented the Game of Life in 1970 and Martin Gardner popularized it in Scientific American the same year. It was the first cellular automaton to capture the public imagination and is still actively studied: logic gates, memory cells, and universal Turing machines have all been built inside it. The Gosper glider gun (1970) was the first infinite-growth pattern and earned the first prize Conway offered.

Try these experiments

  1. 1. Random soup

    Settings: preset=random density=0.3

    What to look for: A rapid die-off, then a slow settle to still lifes and oscillators.

  2. 2. Single glider

    Settings: preset=glider

    What to look for: A five-cell pattern marches diagonally across the grid, wrapping at edges.

  3. 3. Gosper glider gun

    Settings: preset=gun

    What to look for: A stable factory that emits a new glider every 30 steps, forever.

Sprint 1 scaffold. Full long-form article, references, and FAQ will land in the content sprints (3–6). The simulation above is already wired to the production worker.
SimLab

Run this at 100x scale

Game of Life runs in your browser up to 14,400 cells agents. With SimLab, the same model runs on GPU at 10M+ cells, with ensemble parameter sweeps and publication-ready output.

from scirouter import SciRouter
client = SciRouter(api_key="sk-sci-...")
result = client.simulation.run(
    model="game_of_life",
    params={"grid_size": 3000, "preset": "random", "density": 0.3},
    steps=5000, seed=42,
)

Related simulations

Frequently asked questions

Is Game of Life really Turing-complete?

Yes. You can build AND/OR/NOT gates, clocks, and memory from gliders and stable patterns. A full universal Turing machine has been constructed — though it occupies a grid the size of a city block.

Why use a toroidal grid?

So patterns don't die at the edges. Real Life usually runs on an unbounded grid, but in a browser we wrap edges to approximate infinite space without unbounded memory.