Automata Finder

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:

Here are some examples from type 7, which is only upwardly dependent so is stationary

As you can see, there are a wide variety of shapes and available by using different mappings.

Download the program by clicking the down arrow button at the bottom of this page, for FractalAutomata.zip.

3d Automata Finder

The 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 3d

When 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 front-on 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 speed

Large 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 multi-threading 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 space

In 3d the set of possible mappings is huge, even huger than the 2d version. A simple Moore-like neighbourhood of a voxel gives about 43 neighbours, so 243 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 grid

    Rotation 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 time-reversible 

    '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 Level

The 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.

applying a fractal automata

the underlying voxel grid

  Download the program by clicking the down arrow button at the bottom of this page, for FADemo.zip.