← knowledge base

Conway's Life,
in three dimensions

Conway's rules don't survive the jump to 3D — 23/3 in a 26-neighbour grid explodes on contact. This is an explorer for the rules that do work, starting with the ones Carter Bays found in 1987.

runs entirely in your browser 64³ = 262,144 cells at ~8ms/step no server, no data collected
What you're looking at

A cellular automaton living in a box.

Every cell in a 64×64×64 grid is either empty or alive. On each tick, a cell looks at its 26 neighbours and a short rule decides whether it lives, dies, or is born. Nobody designs the shapes you see — they're the only thing the rule permits.

Press Play, drag to orbit, and try a few presets. Everything below the viewer is optional reading.

Why the cubes are different sizes and colours. In most of these rules a dying cell doesn't vanish at once — it fades through a fixed number of decay generations first. Freshly born cells are drawn large and bright; cells partway through dying shrink towards small dark specks. That's what lets you see into the volume instead of only ever seeing its outer shell.
dying
fresh

Drag to orbit · scroll to zoom · click the viewer, then Space play · S step · R reseed · C clear · P next palette

01 · The problem

Conway's rule dies immediately in 3D.

In two dimensions a cell has 8 neighbours, and Conway's Life is written 23/3: survive on 2 or 3 neighbours, be born on exactly 3. That balance is the whole reason it produces gliders and still lifes instead of noise or emptiness.

Move to a cube and a cell suddenly has 26 neighbours. "Born on exactly 3" now fires almost everywhere, because in any half-populated region three live neighbours is nearly guaranteed. The grid saturates within a few generations. Nudge the numbers the other way and everything starves instead. The interesting band is narrow, and 23/3 is nowhere near it.

Try it. Type 2-3/3/2/M into the rule box — Conway's exact rule, lifted into 3D — and press Apply. It collapses almost at once. Now switch to a Bays preset and watch the difference.
02 · The fix

Carter Bays went looking for the rules that balance.

In Candidates for the Game of Life in Three Dimensions (Complex Systems 1, 1987, 373–400 — full PDF), Bays searched the 3D rule space for rules that neither die out nor explode, and published the survivors. He writes a rule as a 4-tuple of environment and fertility bounds, printed as four digits: the first pair is the survival range, the second the birth range. Conway's own rule is 2333 in that notation, so 5766 means survive on 5 to 7 neighbours, be born on exactly 6.

5766 is his headline result, and it has a glider — a pattern that translates through space rather than sitting still or oscillating. Finding one was the main evidence that 3D Life is genuinely Life-like and not just noise with good PR.

They look quiet, and that's correct. Drop a random soup into any of the three Bays rules and it mostly collapses into sparse leftover debris within about fifty generations — exactly what Conway's 23/3 does in 2D. The interesting phase is the beginning. Use Step rather than Play, and expect stillness at the end rather than a light show.
03 · Decay states

Later rules let cells die slowly, which is why they look organic.

A binary rule gives every live cell the same value, so the render is a single flat colour — you can see the shape and nothing else. The hobbyist strand that grew up around Softology's Visions of Chaos (3D Cellular Automata, which is where most of the rule names in circulation come from) adds one parameter: a cell is born at full strength and counts down through N states before it's finally gone.

That single change is what turns a box of blinking cubes into something that looks grown. It also carries real information — the decay value tells you how recently each part of the structure was built, so you can see where a pattern is actively working versus where it's just cooling off.

Only fresh cells count

A decaying cell is not counted as a neighbour by anyone. It occupies its site and blocks new births there, but it no longer participates.

Decay is unstoppable

Once a cell starts counting down it will reach zero regardless of what its neighbours do. Nothing rescues it.

Two states means no decay

Set states to 2 and you get Bays' original binary behaviour back, monochrome and all. Drag the states slider on a living pattern to watch it change character.
04 · Reading a rule

Every rule here is four fields.

FieldMeansExamples
survive neighbour counts at which a living cell stays alive 5-7 · 4,6,8-9
born neighbour counts at which an empty cell comes alive 6 · 13-14,17-19
states 2 for classic binary; higher adds that many decay generations 2 · 10
neighbourhood M = Moore, all 26 surrounding cells · N = von Neumann, the 6 face-touching ones M · N

So 5-7/6/2/M is Bays 5766, and 4-7/6-8/10/M is Pyroclastic: survive on 4 to 7, born on 6 to 8, ten decay states, Moore neighbourhood.

Seeding is part of the rule, not a detail. Each preset also sets a seed size and density, because a rule needing 13 live neighbours to sustain itself simply cannot survive a sparse start — and one with a narrow survival window drowns in a dense one. The Bays rules die instantly at density 0.35, since 26 neighbours at that density averages about 9 live ones, well above 5766's ceiling of 7.
05 · Things worth trying

Where the interesting behaviour hides.

Sweep the states slider

Pick Pyroclastic, let it grow, then drag states from 10 down to 2. Editing by hand keeps the current pattern, so you watch the same structure go from organic to crisp.

Watch a crystal grow

Crystal Growth starts from 8 cells and never kills anything — survive 0-6 covers every von Neumann count — so it's pure accretion with fractal faces until it hits the walls.

Switch to Mono

With hue removed, only the geometry is left. It's the best palette for reading what a structure actually is rather than how fresh it is.

Break it deliberately

Try 0-26/0-26/2/M to fill the box instantly, or 1/26/2/M for a rule almost nothing can satisfy. Invalid strings report the problem instead of breaking the page.

Turn the grid up

96³ is 884,736 cells at roughly 27ms a step. Slower, but the structures get room to develop before they hit a wall.

Find your own rules

Most of the rule space is dull — of 400 random rules, about 58% went extinct, 22% were too sparse to see and 17% filled the box. Three of the presets here were found by searching for the remainder.
06 · Honest limits

What this doesn't do.

No universal computer

Conway's Life can compute anything. There's no known 3D equivalent — a glider is as far as the analogy has been carried.

Bounded box, not a torus

Cells outside the grid are permanently dead. Wrapping makes growth rules collide with themselves and muddies the structure.

Dense rules hide their insides

Shrinking decayed cells buys you three or four layers of depth, not x-ray vision. A rule occupying a third of the box still mostly shows you its shell.

Some famous presets are missing

Names like Amoeba and Coral circulate widely, but the rule numbers I had for them froze solid or filled the box when measured. They're left out rather than shipped mislabelled.
07 · Sources

Where this comes from.

Almost nothing here is original — the rules, the notation and the decay convention are all borrowed. These are the places worth reading.

Carter Bays (1987)

Candidates for the Game of Life in Three Dimensions, Complex Systems 1 (1987) 373–400 · PDF. The origin of 5766, 4555 and 5655, the four-digit notation, and the 3D glider.

Softology's Blog

3D Cellular Automata by Jason Rampe. The source of the decay-state convention this implements, and of most named 3D rules in circulation.

Conway's Game of Life

Wikipedia — the 2D original, and the best starting point if 23/3 is new to you.

three.js

threejs.org — the WebGL renderer. Living cells are instances of a single cube geometry; the simulation itself is plain typed arrays on the CPU.

viridis

The Viridis palette follows the colormap by Stéfan van der Walt and Nathaniel Smith (matplotlib colormaps), chosen because its lightness rises evenly from end to end.

This page

The simulation is a padded (n+2)³ typed array with a dead border, so the inner loop needs no bounds checks. Roughly 8ms per generation at 64³.