Evo(rand) is a 2.5D world made of sea, hills, desert and mountains. Each brick of the world (named Ground) has an associated height, which is used to position rivers and lakes. It also has several attributes, some being pre-defined, others being customised by the user. Examples of pre-defined attributes are:
Additional attributes can be created, and for each of those attributes it is possible to define its initial value and the way it evolves over time. Below is an example of such customised attribute:
Similar to the Grounds, each Creature also has a number of attributes, both pre-defined and custom. Examples of pre-defined attributes are:
Creatures also have an associated DNA, and attributes (predefined or custom) can be read from the DNA. Here is the example of the predefined attribute Mute (the DNA mutation rate) configured as read from the DNA: the Gene is 2 bytes long and encodes a value between 50% and 0.5%. If the Gene is not present in the DNA, the DNA mutation rate is 50%.
The behaviour of the Creatures is governed by its Program. The Program is a set of rules which are used by the Creature to decide its next Action. The list of possible Actions, as well as the result of executing a given Action is configurable. Here also, there are pre-defined Actions and custom ones. The result of executing an Action can affect the Creature itself, a Ground, a Ground area, or one or more other Creatures. Here is an example of the configuration of a custom Action:
The Program is coded in the DNA, and may have any number of Rules. Here is an example from a very interesting simulation of territorial defense.
The Program may be empty (i.e. with 0 Rules). In this case the behaviour of the Creature is governed by a default behaviour defined as a set of Actions, each with an associated probability. For example: 88% Move, 12% Clone (i.e. reproduce itself).
Through the combination of attributes for the Ground and the Creatures, and the possibility of defining various types of Actions, there is nearly no limitation to what can be simulated with Evo(rand).