Introduction to Evo(rand)

The World of Evo(rand)

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:

  • Height of the Ground, and height of the water (which can be fix, or changing with the tide).
  • The type of the ground (like sea, desert).
  • If it is below or above the current height of the tide.
  • Number of Creatures currently present on the Ground.

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:

Attribute configuration

The Creatures of Evo(rand)

Similar to the Grounds, each Creature also has a number of attributes, both pre-defined and custom. Examples of pre-defined attributes are:

  • The Speed of the creature: the velocity at which it currently moves in the World.
  • The number of immediate descendants, and the total number of descendants.
  • If it is alive or dead, or if it is pregnant.
  • It's DNA mutation and growth rates.

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

Creature Mute attribute configuration

Behaviour of the Creatures

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:

Eat Action configuration

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