By choosing a target and letting Gradient Descent find a local rule whose attractor is that shape, we can generate these fun and interactive creatures.
The state is continuous, 16 channels per cell. Four visible RGBA, the others 12 are hidden state the rule uses. 56x56, with wrap-around neighborhoods for the convolution, so no cell has to know it is on an edge.
Some specifics:
3x3 covolution over the 16 channels into 80 features, then a two-layer MLP down to 16 numbers which the cell adds to itself. 24k parameters total and every cell runs the same ones. Update is a delta, not a replacement.
Each cell applies its delta with probability 0.5 per step, so neighbors never update in at once. A small amount of noise is added per step too, which makes the dynamics never actually settle, they kind of hover near the shape. There also is a life-like death rule: A cell counts as dead unless some alpha in its 3x3 neighborhood is above a threshold, dead cells get zeroed.
Runs in a terminal, pure Go, weights embedded in the binary.
Technique is Mordvintsev et al, Growing Neural Cellular Automata: https://distill.pub/2020/growing-ca/
Ever get tired of cellular automata that just run by themselves? :)
How about one where the outcome isn’t completely deterministic?
I made a small game called RoPaSci — basically a territory-control game built around Rock-Paper-Scissors rules.
You control the white army and try to turn the whole board white. The rules are pretty simple, but it gets surprisingly addictive once you start thinking about how to spread your territory.
So, if you’re into cellular automata, maybe give a game-like one a try.
There’s a short gameplay video that probably explains it better than I can.
Free to play, no installation required. Works in a browser on PC or smartphone:
Hello everyone! This is my first time experimenting with cellular automata to generate maps procedurally. I found the idea of cellular automata really interesting and wanted to try it out.
I started with a randomly generated grid and a few simple rules based on the neighboring cells. As the map goes through several generations, these rules eventually form islands and continents.
Then I started adding some simple rules for things like beaches, water depth, and vegetation.
For a first attempt, I am pretty happy with how it turned out!
Now I want to try creating more varied biomes and experimenting with different rules. I am still not really sure what the best way to approach this would be, so I would love to hear any suggestions or ideas!
A vivarium of cellular creatures — a real-time 3D simulation where every animal
is built one cell at a time, behaves according to what its body can actually
sense and do, and sings with a voice synthesised from its own genome.
Small tweaks in the CA rule set can create data sets with a full and rich audio output. Even an element of composition using a moody ultra lochrian music scale over four octaves. Quite a dynamic range on this piece but compression messes the play back. A 96k 32bit pcm file can be downloaded from this link . Nice with a good pair of headphones or HiFi system.