Original post date: January 9, 2026

Self-Evolving Cellular Automata

SimulationsProgrammingEmergence

The main idea is to first make a linear system, where energy spreads over time in a very intuitive way. Then, by introducing nonlinearities and randomness, complexity starts to arise seemingly from nowhere.

Step 1

Mechanism spreading energy

Paused Step 0

Step 2

Bringing in randomness

Paused Step 0

Step 3

Adding nonlinearities

Paused Step 0

Step 4

More nonlinear features

Paused Step 0

The slider controls where the randomness is applied. You'll notice that new mechanisms primarily form where randomness is introduced, and quickly spread out to the area where there is no randomness.

When the mechanisms spread, they automatically start "competing" with each other with time, since the mechanisms that effectively gather the most energy to occupy the cells will remain and replace the ones that are less effective. Every now and then, these mechanisms can be quite complex.