Synchronous Updates with B3/S23 Rules and Moore Neighborhood
Conway's Game of Life is a two-dimensional cellular automaton where each cell has two states: "alive" or "dead." In this tool, the eight cells surrounding a target cell, including diagonals, are counted as its neighborhood, and the next generation is determined using the standard B3/S23 rules.
A dead cell is born in the next generation if there are exactly 3 living cells around it. This is the "B (Birth)" in B3. A living cell survives into the next generation if there are 2 or 3 living cells around it.
This is the "S (Survival)" in S23. If a living cell has 1 or fewer neighbors, it dies of underpopulation; if it has 4 or more, it dies of overpopulation.
Other dead cells remain dead.
Crucially, this is a synchronous update where all 2,100 cells on the 60x35 grid are evaluated from the current generation's state, and the results are written to a separate array for the next generation.
Cells born during the calculation are never referenced by other cells in the same generation. As long as you start with the same initial arrangement and conditions other than speed, the board for each generation is determined according to the same rules.
The speed setting only changes the interval for advancing generations on the screen and does not alter the B3/S23 calculation results themselves.
60x35 Fixed Torus Board
The board for this Game of Life simulator is fixed at a total of 2,100 cells, with 60 columns and 35 rows. While the mathematical Game of Life is often explained assuming an infinite plane with no boundaries, the browser screen uses a finite board, so how the edges are handled directly affects the results.
The boundaries of this tool use a fixed torus method, where the top and bottom, and the left and right sides are connected. The upper neighborhood seen from the top row's cells is the bottom row, and the right neighborhood seen from the rightmost column's cells is the leftmost column.
For example, a moving pattern that crosses the right edge does not disappear but wraps around and appears on the left side. It is not a method of placing physical walls on the board or always treating the outside of the boundaries as dead cells.
This specification allows you to keep following moving patterns like gliders within a limited screen. On the other hand, because cells returning from the opposite side will collide with the original pattern or other cell groups, the behavior will not necessarily be the same as known on an infinite plane.
There are no settings to switch the board size or boundary method, and the displayed results are strictly for the 60x35 fixed torus board.
Display using 2D Arrays and Canvas 2D
The state of the board is managed by a 2D array in JavaScript, where each element's 0 is treated as a dead cell and 1 as a living cell.
During a generation update, an empty next-generation array is created, the eight neighbors are counted for all 2,100 cells of the current array, and values matching the B3/S23 rules are written.
By separating the current generation and the next generation, the entire board is updated from the state at the same point in time.
Upon updating, the number of living cells in the next generation is counted and displayed along with the generation number on the screen.
During automatic execution, if there is not a single difference between the current board and the next generation board, the execution stops, assuming a fixed board has been reached, and the final unchanged step does not increase the generation count.
However, manual step advances will increase the generation count even if the board is unchanged. The tool does not automatically detect oscillators with cycles of 2 or 3.
The drawing uses the HTML Canvas 2D context. Living cells are drawn as rounded rectangles with a bluish circular gradient, while dead cells are drawn as faint grid lines.
It does not use WebGL, GPU shaders, or bit-compressed large-scale boards. The internal resolution of the Canvas reflects the device's devicePixelRatio to suppress blurring on high-density screens, but the appearance varies depending on the browser, zoom ratio, and device screen characteristics.
Pen, Eraser, and Generation Execution Controls
On the board, you can select the pen (value 1) to make cells alive, and select the eraser (value 0) to make them dead. Use clicks or drags with a mouse, or taps or swipes on a touch device.
Touch quality is environmentally dependent. It is a method of setting the state corresponding to the selected tool, rather than an operation that automatically toggles the cell's state.
While you can draw during execution, it is difficult to maintain the intended shape if generation updates and operations overlap, so we recommend pausing to place the initial arrangement for easier confirmation.
The Start button begins automatic generation updates, and the Pause button stops it at the current board. Using "Advance one step" allows you to follow the changes generation by generation.
Clear returns all cells to the dead state and resets the generation count and living cell count to 0. "Chaotic arrangement (random initialization)" makes each cell alive with approximately a 25% probability, not a strict deterministic ratio, so the initial arrangement will differ every time the button is pressed.
The speed slider adjusts the wait time for advancing a generation in the range of 30 to 600 milliseconds using requestAnimationFrame.
Decreasing the value increases the update frequency, and increasing it displays one generation for longer. This setting does not calculate multiple steps to catch up for delayed frames.
The actual update interval and responsiveness to operations are influenced by device performance, the browser, load from other tabs, and execution restrictions in background tabs.
5 Types of Presets and Notes on the Finite Board
There are 5 types of presets: Glider, Pulsar, Lightweight Spaceship (LWSS), Gosper Glider Gun, and Acorn. Selecting a name replaces the current board, placing the prepared relative coordinates near the center and returning the generation count to 0.
"Try a moving glider" performs placement and runs automatically. Blocks and blinkers are not included in the preset list, but you can create any initial arrangement using the pen.
A Glider consists of 5 cells and moves diagonally as generations advance. A Pulsar is a large oscillator that changes with a cycle of 3.
An LWSS is an arrangement known as a spaceship that advances horizontally. The Gosper Glider Gun is a structure that periodically produces gliders, and Acorn is an initial arrangement starting from 7 cells that exhibits long, complex changes.
Because these properties are often introduced assuming an infinite plane, you must be aware of the differences with the finite torus board used here.
Generated gliders may return from the opposite edge and collide with the structure itself, and the spreading cell group of an Acorn may cross the boundary and self-interfere.
Therefore, please use these presets to observe changes that occur on a fixed board, rather than to verify known lifespans (like Acorn's 5206 generations on an infinite plane), stable shapes, or infinite emission counts.
Observation Purposes and Limits of This Simulator
The main purpose of this tool is to observe the process by which complex overall patterns emerge from simple local rules while changing the arrangement of cells.
You can change just one initial placement with the pen, or add another cell to the same preset, and compare the differences a few generations later.
It can be used as an educational tool to confirm basic cellular automaton concepts such as B3/S23, synchronous updates, neighborhoods, cycles, and moving patterns.
On the other hand, it is not a large-scale computing environment for research. The board is fixed at 2,100 cells and does not support infinite planes, variable sizes, changes to boundary methods, or dynamic computational domain expansion.
It also does not perform saving or importing/exporting of patterns, file output, URLs sharing states, input of arbitrary rules, speed measurement, or automatic cycle detection.
The update speed and ease of touch operations also vary depending on device performance.
Cell calculations and Canvas rendering are performed via JavaScript within the browser. However, this does not mean there is zero communication involved with using the site, such as the initial loading of the web page and required assets.
It does not guarantee complete offline operation, zero communication, or absolute safety. Furthermore, the behavior on the screen does not prove life phenomena, fluid phenomena, or computational theory, but is merely the result of the limited mathematical model B3/S23.