We tried to make the artificial world similar to the real one. When creating it, we wanted to support it with all the features which allow the evolution process to be aimed at a direction, so that organisms can – without a purpose – discover new ways of living according to their fitness defined by the user. On the other hand, we tried to create reasonable conditions of living in the environment without any fitness criteria defined – that is, in a spontaneous evolution.
Biological evolution started from simple components. Much time had passed until the first creatures were able to reproduce. In our artificial world we skip this "chemical evolution" stage. We supply our creatures with basic functions: notation of their features in their genotypes, multiplication of genotypes, and energy management. We also set the rules of organism building. It would be difficult to simulate a world with quarks, atoms or even proteins as its basic elements. There would be too many of them regarding reasonable size of the artificial world and computational requirements. That is why the basic element of our organisms is much bigger – it is a rod (bar, stick, cylinder...). Such an element can be assigned various functions depending on its genetic description: it can be just a stick, or can transmit and process signals and therefore be a part of a "brain", or be a receptor, or can have "muscles" and cause moves, or can be specialized in supplying energy.
A group of connected sticks makes up an independent organism. It becomes alive when put into the simulator!
The physical simulation module computes interaction of an organism with the world ("Framsworld"), analyzes forces influencing particular sticks and computes their new positions. The simulation takes place in a three-dimensional space, and uses finite elements theory and rigid bodies dynamics.
The neural module computes excitations in neural nets, collects data from receptors and sends signals to muscles. Organisms' neuron nets are different from those usually used in AI because of their free topology and inertia of neurons.
The energetic module analyzes gains and losses of energy. From settings in an experiment definition an organism can, for example, gain energy by assimilation or absorption of food, and use it for the work of muscles and neurons. After using up all its energy an organism may "die".
The creation module creates new organisms, for example by mutating and crossing over genotypes of the best creatures which have lived so far (ancestors).
The simulator is controlled by the script which defines the experiment. A sample experiment is "standard.expdef".