Aivola Home
alt="Aivola Universe requires Java Runtime, please install"
Hit Hit Boom

This is Aivola Universe beta release


Aivola Universe is based on a long term effort started in 1995 when I first investigated how to simulate complex behavior and interactions using genetic algorithms. For years JuhasWorld was my primary platform for the AI/AL/GP experiments, but now finally after 12 years the next generation simulation environment has born: Aivola Universe. Currently the most visible change is that the simulation is now continuous instead of starting each new generation with a "big bang". The continuous simulation combined with a gradual introduction of new cross-bred creatures seems so much more biologically correct way to simulate an artificial life system.


Artificial creatures called "actors" compete against each other for survival in a simulated world. When the world starts, some random genes are created and a set of best genes are loaded from a global gene database.

Parent actors, the most successful ones, provide the genetic material for the next generation actors through cross-breeding. Each new actor is a crossbred offspring of two parents, with some random mutations. Not all parents produce as many descendants: More healthy parents are more likely to take part in the cross-breeding process. To take part in the cross-breeding process, the parent must have survived to adulthood and there must be another valid parent to be found close by.

The best genes are saved periodically to the central database and shared with other users running Aivola Universe. Your actions will affect the overall outcome of the global evolution process.

You can reward (give more energy), punish (try NUKE and see what I mean), change environment (add or remove death zones and walls), and in general have fun breeding and training the artificial creatures!


Actor's genetic material is simply a byte array interpreted as cells or connections between the cells. There are three main cell classes: sensors, nerves, and actuators. The sensors offer the only way for actors to collect data about the world, like "Am I touching an energy zone?". The sensor data is fed into the nerves which process the data. Each nerve either passes the data forward to the other nerves or to some actuators. An actor uses the actuators to affect the world or its own state (turn, move, etc).

Actors born small and eventually grow physically as they reach more maturity. Actor's health can be detected visually from "breathing speed/size". Healthy actors have large body size and a clearly visible breathing effect. This effect is best visible in the adult-sized actors.

Actors need to learn how to gather energy and how to avoid excessive loss of energy. Actually one specific actor doesn't learn anything during its life, but rather acts based on inherited behavior. Actors do have some internal state "memory" that changes over time - which, in theory, enables learning. However, the amount of internal state is so limited that its effect should be irrelevant compared to the inherited behavior. In practice actor puts its genetic material into test, and good genetic material survives. From the simulation point of view it might seem like actors would be learning new skills, but all "learning" is simply based on evolution with each generation coping better because they have better static rules (cell network constructed based on inherited genes) to follow.

Actors can obtain more energy by finding and consuming energy zones (green areas). Actors will lose energy if they touch death zones (red areas), or world boundaries. Moving has a small energy cost too. And of course, weapons cause an extreme loss of energy..

Actors naturally die if they lose all their energy, but actors can die of old age too. Dying of old age is a surprisingly important feature of the Aivola Universe algorithm, because without dying of old age some extremely good actors could live forever - effectively stopping the evolution. It's good to note that simply staying alive doesn't indicate that there is no room for improvement. Environment just happens to be too easy. Next generations can still improve a lot through cross-breeding and mutations, so with semi-technical terms dying of old age helps to avoid getting stuck in the local maximum.

Actor's color gives some hint of genetic closeness to other actors. Similar color indicates similar genetic material affecting behavior. Even though the color generation algorithm is not very accurate, it still visualizes how the population of actors can divide into distinguishable races. In an extreme case, it's possible that the members of different races can't produce viable siblings any more because of too large genetic differences - effectively creating world with multiple species. This is an interesting area of study, but current simulation can't visualize such things in any other way than colors not mixing any more even if the different colored healthy actors are constantly near each other enabling the cross-breeding.


The world consists of energy zones (green), death zones (red), walls (brick texture), and open area (black). Actors consume energy all the time and turn energy zones into open area, but new energy zones are created constantly according to automation rules. The rate of creating new energy zones is decreasing over time to simulate increasingly challenging environment for actors.

Actors can collide with screen boundaries, walls, or other actors. Collisions consume energy and don't give any benefits, so actors will eventually learn how to avoid the collisions.

The simulation proceeds in steps. During each step each actor is "run" once, dead actors are removed, new actors are created, and the world is re-drawn.


Aivola Universe employs algorithms that are closer to genetic programming than traditional genetic algorithm, but it's really not strictly either. Actors are controlled with a multi-operator calculation graph with some specialized cell types for input-output, which reminds a lot genetic programming. On the other hand the functionality of the cross-breeding algorithm and the connections between the cells are heavily influenced by more traditional neural networks optimized with genetic algorithms. Maybe the most advanced property of the whole algorithm set is the parameter optimizer that tunes the parameters of the breeding/mutation process on the fly. It's best described as a second level genetic-algorithm running within the main algorithm - constantly adapting parameter values to better suite the current phase of the evolution. Actually this parameter optimization process is really one of the most critical parts of the overall algorithm, because static set of parameters would fit well only a very limited time slot in the evolution time space. To enable persistent continuous optimization of the parameters, the parameter values are saved together with the actual genes to the global gene database.


If you find a bug or want to propose a new feature, just send your feedback to juhakaki(at)

More Good Stuff from Us!

For newer stuff from us, visit Haavepaja company main page.