Conway's Game of Life

In 1970 the mathematician John Horton Conway constructed a cellular automaton he called the Game of Life to be difficult to decide whether an initial pattern would grow indefinitely or not.

More information

A NetLogo model by Rik Blok.

This NetLogo model implements Conway's Game of Life a cellular automaton John Horton Conway designed to be difficult to anticipate the dynamics of starting patterns. This implementation incorporates some ideas I focused on in my research: finite-size effects [Blok97] and asynchronous updating [Blok99].

Each site on the square 2-dimensional lattice can be in one of two states (alive or dead). All sites are updated in parallel according to the following rules:

  • Loneliness: An alive site with less than two of its 8 nearest neighbours also alive becomes dead;
  • Overcrowding: An alive site with more than three alive neighbours becomes dead; and
  • Birth: A dead site with exactly three alive neighbours becomes alive.

Otherwise, sites remain in the same state.

In this implementation, alive sites are shown in bright yellow. Dead sites fade to black.

Choose world-size and initial-density of alive sites and press setup to create a random starting configuration. You may also press draw to draw your own starting configuration with the mouse.

Press go to repeatedly apply the rules and watch the configuration evolve. Adjust the speed slider at the top as desired. You may also draw while the simulation is going.

You may adjust the synchronicity of the simulation -- the fraction of sites that are updated on each iteration. When synchronicity=100% we have Conway's original Game of Life. As synchronicity is reduced some sites are skipped in each step, so the dynamics start to deviate from Conway's. As synchronicity approaches 0% most sites are not updated in any one iteration, and the simulation approaches asynchrony -- almost the same as one site updating at a time. Notice how the patterns differ as synchronicity varies.

To perturb a configuration -- by toggling one site -- press bump. You may want to do this once the dynamics have settled to a stable (or simply repeating) pattern. Some bumps will have little effect but occasionally they will cascade through the whole space, changing the entire system. It is difficult to predict the size of the cascade.

Since there are a fixed, finite number N of sites there are only a finite number of possible configurations (2^N) and the configuration must necessarily repeat as it evolves. In principle the period between repeating configurations could be anything up to 2^N but in practice it is much shorter: typically 1 or 2. A notable exception can occur when synchronicity=100% and a glider is present -- rarely a glider may travel around the entire length of the space and return to its original position.

Try drawing your own starting configuration. Set the initial-density=0% and press setup to set all sites to dead. Press the draw button to activate drawing mode, then use the mouse to draw a shape, such as the R-pentomino.

This implementation defaults to periodic boundary conditions: the left side can be thought of as wrapping around to touch the right and the top touches the bottom. In the native version of NetLogo (not the applet) you can switch to cold boundaries where any sites outside of the visible area are assumed to be dead -- press Settings... at the top-right of the interface and toggle the World wraps... checkboxes. Notice that periodic boundaries reduce edge effects [Blok97].

[Blok97] Hendrik J. Blok and Birger Bergersen. Effect of boundary conditions on scaling in the "game of Life". Phys. Rev. E, 55:6249-52. doi:10.1103/PhysRevE.55.6249. 1997.

[Blok99] Hendrik J. Blok and Birger Bergersen. Synchronous versus asynchronous updating in the "game of life". Phys. Rev. E, 59:3876-9. doi:10.1103/PhysRevE.59.3876. 1999.

[NetLogo] Wilensky, U. NetLogo. Center for Connected Learning and Computer-Based Modeling, Northwestern University. Evanston, IL. 1999.



  • science/popmod/conway_s_game_of_life/start.txt
  • Last modified: 2016-12-17 10:52 (7 years ago)
  • by Rik Blok