Crystal 2D - template-based self replication

Unfortunately, your browser does not support Java.
A Java applet is the central focus of this page.
You're encouraged to try again using a Java-aware browser.

A version of this applet using Sun's Java plug-in is available here.


This applet displays a cellular automata substrate displaying a novel type of self-reproducing automaton.


This automata is a sequel to the Crystal 1D automaton.

It's based on a different principle to that of the (more common) self-reproducing loops or worms.

Loops and worms have something in common, namely they rely on passing each segment through a "splitter" to accomplish self replication.

This automaton works on a rather different principle. It reproduces using synchronous template reproduction - with the synchrony provided by a counter in each cell. Replication alternates with a stage of motion which separates mother and daughter, so subsequent births have space to happen in.


The design was inspired by the theories of A. G. Cairns-Smith.

Cairns-Smith envisages that the first organisms used the processes of crystal growth to maintain high-fidelity information transfer across generations.

For example, some crystals grow in one direction, while preserving information (in the form of cross-sectional area, and fault structures) between layers as the crystal grows.

The result is a long crystal, somewhat like a stick of rock with "Brighton" written down the middle. Then the crystal breaks in two, and the process continues.

In the highly abstracted version here, template replication alternates with drift away from the mother cell, to produce an environment which could support heritable variation and evolution.

The automaton uses the Von-Neumann neighbourhood.

Interactive controls

The applet is interactive, allowing you to apply selection based on organisms visual characteristics using a variety of implements.

  • Use - tool selection - controls which type of tool to use to manipulate the environment;
  • Click to - set the tool's behavior - controls how the tool in use is applied;
  • Display - controls which aspect of the automata is presented;
  • Size - controls how many cells are displayed, and their size;
  • Show - configures how frequently the display is updated;
  • Delay - configures how much delay occurs between frame updates;
  • Radiation - causes random deletions;
  • Mutation - causes random modifictions to the organisms;
  • Step - allows a paused automata to be single-stepped;
  • Pause - allows the automata to be stopped and started;
  • Clear - completely blank all the universe's cells;
  • Restart - resets the universe to its initial configuration;


This applet can also be run as an application. Download this jar file (using shift-click) and double-click on it.
Source code is available - with a "no-restrictions" license. Download this zip file.

Index | HAL | HexHAL | Crystal1D | Crystal2D | EoSex | Firefly | CA | Links |