This tool allows you to search through the large space of recursive automata. These are automata that follow a newly developed recursive algorithm.
Below is the tool in action, simply pick one of the six bottom boxes to bring it to the top and generate six new automata that are similar to the selected one.
This allows you to search the space for interesting results.
Here are some example animations produced:
Fractal automata from Tom Lowe on Vimeo. Advantages of this algorithm over standard cellular automata:
Disadvantages:
Download the program by clicking the down arrow button at the bottom of this page, for FractalAutomata.zip.
3d Automata FinderThe second zip at the bottom of the page is a 3d version of above. Here are three 3d static automata
It is quite simple to extend to 3d, there are three problems which need solving:
Visualising in 3dWhen searching for interesting automata there isn't time to pan around the object, so its 3d shape needs to be obvious from a single viewpoint.
I have used a fronton orthographic projection with shadows and diffuse lighting. A basic ambient occlusion can also be used for the static automata.
Fog is used to give depth to the image.
Update speedLarge 3d grids use a lot of clock cycles. Probably the best approach is to write the update routine in a fragment shader since it is a parallel algorithm. However, it is currently implemented on the CPU, so the performance is optimised by multithreading and by skipping some code in the empty areas of the screen.
I have also reduced the resolution of the dynamic automatas to half that of the static automatas.
Giant parameter spaceIn 3d the set of possible mappings is huge, even huger than the 2d version. A simple Moorelike neighbourhood of a voxel gives about 43 neighbours, so 2^{43} combinations of neighbours, so 2^{(2^43)} possible automatas. In fact the number of touching neighbours for one voxel could be as much as 353, making the number of automatas just over a googolplex.
So in order to find interesting automatas we need to find rule sets that cut down the number of parameters. A good start is to use symmetries. The core algorithm is already using translation and scale symmetry in time and space. We can choose to add on others such as:
Mirror symmetry three planes for a 3d gridRotation symmetry by 90 degree angles on a 3d grid Bit symmetry the mapping acts the same if you swap the 0s with the 1s
Time symmetry mappings that are timereversible'Shape symmetry' different shapes of neighbour voxels are considered the same if their size is the same, i.e. the neighbour voxel count is used, not the exact position of each neighbour voxel.Download the program by clicking the down arrow button at the bottom of this page, for 3DFractalAutomata.zip.
Fractal Automata Demo LevelThe 3d fractal automaton above are ideal for adding natural detail to a 3d level with perspective. The levels of detail already exist and new detail levels can be created when you get closer to the object.

Scale symmetry >