DarwinBots is no doubt one of the most comprehensive "artificial life" programs ever made. Here are some excerpts from the official site to give you an idea of how complex the program is: |
"The DarwinBots universe is a big, flat field, populated by flat individuals called 'robots'. Every robot is a simple square of fixed size, so shape is not involved in evolution in any way. What is involved in evolution is the robot behaviour, which is determined by a variable length code (a 'DNA') that's in fact a complete program written in a special language.
Like any other program, the robots' DNA needs, in order to work, to manipulate the values stored in a memory array. Each robot has a 1000 integers' memory array that the DNA can access for read and write operations. To interact with its world, a robot has a set of senses and 'muscles' which are the same for all robots. What may vary, however, is the ability to use the information provided by these senses and to control the muscles in order to feed and reproduce. Every robot has an energy parameter, which is worth nothing else than stating when a robot is dead: that is, when its energy reaches zero. Energy is consumed by any operation made by the robot (that is, moving, but also storing values in memory or just by compare operations) so that there is a cost/benefit ratio for every action. But you can't really say a robot is more healthy the more energy it has: there could be the case of species in which the average individual has really little energy, but is very successful; and, on the contrary, there could be species in which individuals have on the average plenty of energy, but are scarcely able to reproduce (why? 'cause they're stupid!).
The simulated universe is simple but quite powerful. Each robot has an aim (represented by a white spot) which indicates the direction in which a robot is pointing. Any of the robot movements or input senses is related to the aim position, so that none of his senses gives him absolute knowledge about the environment. There are only two types of objects in the universe: the robots and the shots, or particles. While robots are square and cannot overlap, but tend to bounce off each other, shots are completely immaterial, so they don't collide with each other. Shots are produced by robots, and carry information or energy. For example, a robot eats by shooting an opponent with a particular particle jet. When (if) the target is reached, it's forced by the particle jet itself to respond with another jet, carrying tokens of its own energy. But shots can also carry information, in the form of a couple addresses/values that are stored -- when reached -- in the receiver's memory. Since the memory is made both by unused -- but usable -- cells and cells connected to the input or output organs, such jets can easily be used also to mess up other robots. Finally, there's a last semi-physical object, that is ties between robots. You can see those ties when a robot is duplicating itself -- they will be strong but temporary -- as well when a robot voluntarily creates them, and in that case they will be weak but everlasting."
DarwinBots is a lot of fun. Just watching the robots mutate and trying to figure out how it happens is one of the best parts of the game, and the ability to share DNA files with friends makes it much more robust and replayable. If you like artificial life programs, DarwinBots is simply a must-have -- and it's freeware to boot.
Reviewed by: Underdogs