How complex structures can emerge from simple rules: Cellular automata

Wikipedia | Examples for rules | Cellular Automata Subreddit Multidimensionality
Last changed: 22.04.2021

Let's start with the most famous cellular automation: the life-likes. Life-like cellular automaton are simulations with a distinct rulesets, leaning on Conway's Game of Life. The one shown below is EightLife. There are basically two rules in each ruleset. How many neighboring cells a dead cell needs to be born (B) and how many neighboring cells an alive cell needs to survive (S), in the next iteration of the simulation. All other cells will stay dead or turn so.

In Eightlife a dead cell needs three living neighbors to be born and an alive cell needs two, three, or eight to stay alive. These are expressed in a rulestring: B3/S2,3,8 The WebGL implementation of the simulation below can be found here.

You can try out different rulestrings here: e.g. B3/S4,5, B3,4/S8; Conway's: B3/S0,2,3

Things get more interesting when not just the direct neighbors influence a cells next state, but those two, three or more spaces away aswell. The multicellular javascript code is here.

Radius Rulestring Behaviour
2 B6,7/S5
2 B6,7/S7,8,9
3 B9,7/S9
4 B15,10/S11,10,5
7 B18,22,21/S23,43,49 slowly degenerative
10 B38,50,70,45,61,91,90/S43,49,61 degenerative
10 B60,38,50,70,45,61,91,90/S43,49,61 degenerative
10 B60,38,46,50,70,61,91,90/S40,49,61,65,78,81,99 very slowly degenerative
20 B60,38/S81,99 stable

Try out rulestrings: And set the radius:

Spicing things up with an extra dimension

The app was writting in javascript and the help of additional 3D WebGL code. In three dimensions more complex structures can emerge. The top inner surface is connected to the bottom surface. The same is true for all other sides. The cube is interconnected with itself. (Email me if you know how to express this correctly). You can explore this demo by clicking inside the canvas.
Look around with your mouse, use W,S,A and D for surface movement, E to go up and Q to go down.

Try out rulestrings: