Cellular Automata

Cellular automata (CA) are virtual particles which are emitted from agents, such as food and plants, allowing creatures and other agents to "smell" this agent and make navigation decisions accordingly. Cellular automata were introduced in the Creatures Evolution Engine games such as Creatures 3, Creatures Village and Docking Station.

Sometimes the emitting agents are invisible so as to give the appearance an area is emitting CAs; for example, an agent in the Grendel Jungle emits Grendel Home smell, which entices the Grendels to live there. CAs are called "scentons" in the help menu for the smell emitter.

In creatures, the Cellular Automata enter through the foot that is in contact with the ground, then interpreted by the smell lobe. The reason why creatures smell with their foot touching the ground is to avoid changes which could happen when creatures turn around. Creatures also emit smell themselves depending on their genus: Norns emit the Norn smell (12), while Grendels and Ettins emit their own smells respectively. In Creatures Village, male and female norns have different CA scents.

Cellular automata are used in Creatures 3, Docking Station and Creatures Village as follows:

Fan-made expansions in C3 and DS
Players have created fixes which give greater use of the cellular automata available as below:


 * The Butterfly Norn Flower Smell creates a flower smell by associating CA 9 with plants and flowers.
 * Critter and Bug Smells links CA 0 to critters and bugs.
 * Detritus Smell - links detritus to CA 9, conflicts with the Butterfly Norn agent above.
 * New Toy Smell links toys to CA 19.

Players have also created agents that allow experimentation with CAs:


 * CAev - creates CA emitters easily ingame.
 * Heat Transfer - allows for heat to transfer through water.
 * Magic Words - a module allows for easy creation of CA links (encourages exploration behaviour).

Commands
There are various CAOS commands used to control cellular automata and to give them meaning to creatures.

The command ALTR is used to tweak the existing CAs in a room by a certain amount, often seen in decomposing critters, food, etc. It does not have to be the same CA as the one CACL-linked to its genus. The command CACL is used to link the CA to an object in the Creatures' minds, for example, that smell 18 means a gadget. In DS, this can be seen in the Bootstrap cos file z_DS agent smells.cos. In C3 this can be seen with the Bootstrap cos file z_agent smells.cos. The agent included with the Butterfly Norn creates a flower smell by associating CA 9 with plants and flowers. The command EMIT is commonly used in the creation script of new objects to make it smell like its genus (as determined by the command CACL.) Cellular Automata only travel between rooms which are linked horizontally, not vertically. To link vertical rooms (as is used in the lift shafts) the command LINK is used. In DS, this can be seen in the Bootstrap cos file "lift ca linkers.cos". Using the LINK command without the permeability value returns the permeability between the two rooms. The command PROP is used when making metarooms to set the amount of a CA in a room, and if you leave out the CA_VALUE it returns the amount of a CA in the specified room. The RATE command is used to set how fast a smell travels through rooms. This command is used in the !map.cos file and in the Heat Transfer agent which allows heat to travel through water. Using the RATE command with only ROOM_TYPE and CA_INDEX returns the gain, loss and diffusion values for that smell/room type combination.
 * ALTR
 * CACL (command) FAMILY (integer) GENUS (integer) SPECIES (integer) CA_INDEX (integer)
 * EMIT
 * LINK (command) ROOM1 (integer) ROOM2 (integer) PERMEABILITY (integer)
 * PROP (command) ROOM_ID (integer) CA_INDEX (integer) CA_VALUE (float)
 * RATE (command) ROOM_TYPE (integer) CA_INDEX (integer) GAIN (float) LOSS (float) DIFFUSION (float)