I made a new emergence program around March 2022 and eventually got it working enough for it to be fun for me to play with. I still open it up a few times a week to see what I can make with it.
The name stands for Red Green Blue Cellular Automata. I've wanted to make an optimised ca program like this to run on my graphics card for a while. It was a pain to get working but I'm so glad I made it.
It's a real thrill to see so many possible rules on the screen at once. And whenever I find anything interesting there are millions of possible tiny variations to add to it, which lets me 'evolve' a rule to be more interesting and complex. Unfortunately the mp4s for this are pretty big so I can't include too many here...
The basic idea is to draw the previous CA frame with a shader that turns it into the next CA frame. Working with shaders is annoying, mind-bending, and very satisfying when it finally works. I got some help from slackermanz in making it perfectly-symmetrical.
The way the rules themselves work is quite complicated, I never have a good answer when someone asks me because I don't know what it's doing. It uses lots of seeded rng to determine which calculations it should do, which allows me to do fun stuff with exploring the multidimensional rulespace.
The actual mini-rules are something like...
- average the r/g/b value of cells around me in some neighbourhood based on rng
- take random pairs of these values, according to rng, combine them using some sum, according to rng
- add small parts of the result of this to form a larger rule
A larger rule can be made up of 1-20 mini-rules, and exploring the rulespace involves adding extra mini-rules with some scaling factor attached.
ouch my eyes
Once late at night I was search through patterns and the current rule made the whole screen flash between white and black each frame. This was really unpleasant and gave me a headache, I think it might have been partly due to the dark room I was in.
To stop this from happening again, I tried to make a shader to avoid this. After a few experiments I settled on blurring the output through time; the current frame is a mix of the last N 'real' frames. It's still really easy to pick out emergent complexity but you may notice some of the videos look a bit blurry due to this.
It's been a while since I updated this blog! I've been really busy with Slice & Dice; new update coming... one day maybe. I added a gallery recently, it was fun going through my old files to find ones to showcase. Also added some links to discord servers I run in about.