MacTierra logo

Differences from Tierra

MacTierra is an independent implementation of Tierra, based initially on published works describing that system, and modified more recently after communiction with Tom Ray, the author of Tierra. As a result, the details of the implementation are fairly close, but not identical to Tierra. It is highly likely that the two programs will in future diverge -- Tierra is becoming network-savvy, and I have ideas for developing MacTierra in other, more modest, ways. Here I document those differences from Tierra that I know about.

This page may in future expand to present data from both systems performing runs with similar parameters.

Relative addressing

I made a decision early on in MacTierra to stick with 16-bit registers in the CPU stucture. This means that creatures can address a soup space of 64k in total, which is fine if the soup is 64k or smaller. However, larger soups require a different addressing scheme. Rather than increase the registers to 32-bit quantities, I took a different option, which is to make addressing relative. This means that, instead of containing an absolute address in the soup, each creature's instruction pointer contains a value which specifies an offset from the start of the creature. In this way, creaturs can address a space of 32k each side of themselves, so can spread through soups of any size. The evolutionary consequences of relative addressing are unclear at this point, though it does mean that creatures can sometimes lose instructions which, with absolute addressing, are needed to find one's beginning. Since creatures's registers are initialized to zero, they automatically point to the creature's start.

Flaw details

The details of flawed instruction execution are unlikely to be identical to those in Tierra. This may have quite significant effects on the evolutionary dynamics.


In MacTierra, creatures are entered into the genebank when they have reproduced just once, successfully (i.e. have created one offspring that is a faithful copy). Tierra uses a number of different criteria for entering creatures into the genebank, such as occupying a certain proportion of the soup, or creating two offspring.

Other implementation details

While developing MacTierra, I have strived to maintain execution speed, though hopefully not at the expense of accuracy in data collection. However, MacTierra is not as rigorous, for example in the genebanking code, as Tierra.

Table of contents Installation Running Soup settings Preferences Statistics
Assembling Interface How it works c.f. Tierra Bugs and features Legal stuff