User Manual



This program imitates the evolutionary processes that happens on unicellular organism populations in nature. It has been tried to create an example of the elemental bacterial processes, simplifying them a lot and presenting them in a visual and comprehensible manner. Although it is not scientifically exact, regular mechanisms on bacterial evolution and life can be observed and it can be interesting as a didactic approximation to concepts like mutation, evolution or photosynthesis. It is also a good entertainment.

The organisms that will populate this world are not representations of natural unicellular organisms, but an abstraction has been used to be able to look more clearly at their virtual life. These organisms are formed by segments of different colors and lengths. The organism's segments color and length establish its properties, so that we can know what can an organism do only by looking at it on the screen. Moreover, these segments' configuration is a representation in the world of its genetic code, which its descendants will inherit in an identical form, with the exception of random mutations that can happen in each generation.

Organisms that obtain beneficial mutations will be the most successful ones, on the reproductive point of view, and will create a large number of descendants that will propagate its genes and its mutation in the future. However, those that suffer from a less appropriate mutation will not take a long time to die without being able to extend their species' lives longer than their own lives.

Basic use


In order to execute this program it is necessary to have a Java Virtual Machine installed in your computer. This version will only work with a 6 or later version, such as the official Sun machine, which can be downloaded from Once the virtual machine is installed you only need to double click on the biogenesis.jar file in order to execute it. It is not necessary to do any program installation. Alternatively, you can right-click on the file and select Open with Java Runtime, or run it from the command line with the command java -jar biogenesis.jar.

It is also possible to indicate a number following the file name. This number determines the sequence of the random numbers that will be generated. This way it is possible to recreate several times the same scenario if the same number is introduced. The call would be: java -jar biogenesis.jar 12345.

See the performance section to know how to improve program's performance for your computer.


This program has a high CPU consumption. You need to set a few parameters in order to adapt it to your hardware.

These are the parameters that you should configure. Remember that you can do this by selecting the Parameters option under the World menu.

  • OpenGL: The use of the OpenGL libraries greatly increases program's speed. This option is deselected by default because it doesn't work on all hardware and drivers combinations. You should try to enable it and restart the program. If it crashes or doesn't work, OpenGL will be disabled next time you run it.

    • Disable fbobject: Due to a bug in some graphic drivers, it may be necessary to activate this option for the OpenGL to work. If the first time that you try to activate them they don't work, try to activate them with this option.

  • Time per frame: This parameter controls the speed that the program will try to reach. If it is consuming a lot of CPU you should raise it, and if it is not and you want the process to execute faster, you should lower it.

  • Initial carbon dioxide: The CO2 is the limiting factor to life expansion. More CO2 means more organisms will populate the world, and more CPU needed to calculate their moves and draw them. If you change this parameter, it may be a good idea to change the world size accordingly to keep the same CO2 concentration.

See the parameters section for a full explanation of all existing parameters.


Biogenesis stores parameters in your hard drive (in the Windows registry or in a hidden file in Linux). The uninstall.jar file can be used to remove this information from your disk, if you don't want to use Biogenesis any more.

This can also be used if, for some reason, hardware acceleration stops working and Biogenesis crashes when started (for example, if you changed your graphics card and the new one is not supported). Then, you only need to uninstall the program and it will start again without hardware acceleration.

Program use

Main options

The program is easily controlled through the menu and tool bar that appears on the top of the application window and through context menus. The available menu options and their effect are described as follows:

  • Game

    • New worldNew: this button allows you to create a new world from the beginning. All existing organisms will be eliminated and new ones created.

    • Resume processStart/pause: this button allows you to make a pause in any moment without loosing the progress done and to continue again.

      This option can be activated at any time by pressing the P key.

    • Open: it allows you to recover a previously saved world. At the dialog that appears, make double click over the file that you want to recover.

    • Save worldSave and Save as: they allow you to save the current world to a file, in order to continue with its execution later.

      This option can be activated at any time by pressing the S key.

    • Quit: it quits the program immediately and all unsaved changes of the world are discarded.

  • World

    • Statistics: when it is pressed, the statistics window will be shown. Through it you can obtain general information about the world, like the time it has been active or the population that it has.

    • Genetic Laboratory: it shows the genetic laboratory window. Through it you can create new beings with a new or modified genetic code.

    • Increase CO2Increase CO2: it adds 500 units of CO2 to the atmosphere.

    • Decrease CO2Decrease CO2: it reduces 500 units to the CO2 in the atmosphere, if there isn't less.

    • Kill all: it kills all alive organisms.

    • Disperse all: it recovers the carbon dioxide inside all dead bodies and returns it to the atmosphere.

    • Parameters: it shows the parameters configuration window. Through it you can change different values that affect at the world development. In the parameters section the meaning of each of these numbers is explained.

  • Network

    Starting from version 0.5, it is possible to connect different ecosystems together over a network. In order to do this, an spare open port is needed and you need to know the IP address of the computer that you want to connect to.

    • Configure network:

      This option shows a dialog that can be used to configure the network settings.

      Activate Allow connections from other users if you want to let in connection requests from other Biogenesis users.

      Set the maximum number of allowed connections and the local port to receive connections. Remember that this port must be open.

    • Manage connectionsManage connections:

      Use this dialog when you want to set a new connection to another Biogenesis instance or when you want to close an existing connection.

      Write the IP address and port to the other program instance and click New connection to start a connection.

      The other program must have its Allow connections from other users option activated in order to stablish the connection.

      A pair of rectangles will appear at random positions in the world, one red and one blue. Organisms entering the blue rectangle will fall into the other connection side. Organisms coming from the other instance will appear inside the red rectangle.

      If at any moment the connection is closed or is lost, the rectangles will disappear.

      If you want to close an existing connection click on the corresponding Disconnect button next to the connection information.

      Only genetic codes travel through the network. The amount of O2 and CO2 remains constant in your world.

  • Help

    • User Manual: it opens the web navigator and connects to Biogenesis web page, at the user manual section.

    • Check last version: it connects to the Biogenesis web to check the last released version and shows it together with the version you are using.

    • About Biogenesis: it shows the program version number.

The world

The main window central part is the place that represents the world, where organisms are born, reproduce and die. World process is autonomous but the user can participate in what is going on by using the contextual menus that are called clicking the mouse right button over any world element. Moreover, he can examine with more detail any of the organisms, simply by clicking over it. In this case, the selected organism's state window will appear, and it will be marked with a surrounding orange rectangle.

The world can be much larger than the application window. The lateral bars allow you to move through the whole world.

The world is considered fluid, so organisms can move around using their cyan segments, which work as cilia. A rubbing coefficient, which is applied on organisms speed in every frame, makes sure that they will stop.

At the bottom of this window, basic statistics about the state of the world are shown: the time elapsed since it began, the current population and the amount of oxygen and carbon dioxide. You can obtain more information about these values at the statistics window section.

Interacting with the world

It is possible to do a lot of actions over the game's world directly and to change what is happening. All of these actions can be done by right clicking over the world elements: living organisms, dead organisms or empty space. In each of these cases, a set of different options will be shown:

  • Actions over living beings:

    • Track organismTrack/Abort tracking: it causes that the application window centers on the selected organism and follows it. To stop following it a being you can select the Abort tracking option or follow another one. When a being dies it is not tracked anymore.

    • Feed organismFeed: it give 10 additional energy points to this being. An equivalent amount of carbon is consumed from atmosphere.

    • Weaken organismWeaken: 10 energy points are subtracted from this being and the same amount of carbon are freed to the atmosphere, in form of carbonate dioxide.

    • Force reproduction: it forces the organism reproduction, even if it hasn't enough energy to do it.

    • Rejuvenate: the age counter of this being is reseted to 0, as it has just been created.

    • Kill organismKill: it kills the organism immediately, leaving its lifeless corpse in the world.

    • Copy genetic codeCopy: it save a copy of an organism's genetic code that can be cloned later with the paste option in a world empty space.

    • Export: it allows you to save an organism's genetic code to a file. This file can be recovered later with the import option in an empty space. File format follows the XML standard and can be modified using any text editor.

    • Save an imageSave an image: it allows you to save an image of the being in JPG format.

  • Actions over dead beings:

    • Revive organismRevive: it takes the being back to live, with the remaining energy that the corpse has at that moment.

    • Disperse organismDisperse: it returns all the carbon to the atmosphere immediately. The corpse disappears.

  • Actions over empty space:

    • Paste: it creates a new being having the genetic code that has been previously selected with the copy option.

    • Create randomly: it generates a new being having a randomly created genetic code.

    • Import: it creates a new being having a genetic code restored from a file that has been saved before with the export option.

Statistics window

The statistics window shows general information about the process that is being executed. This window can be seen through the statistics button on the main window and contains the following information:

  • Current state: this section shows information about the current state of the world.

    • Time: it is the time spent since the first organisms began to populate the world. As no all computer can execute the program at the same speed, this time is not represented in hours and minutes but in a unit that allows you to compare the time in different worlds and in different computers. This time unit is equivalent to 256 frames.

    • Population: it is the number of living organisms at that moment.

    • Remains of beings: it is the number of dead (brown) organisms at that moment. Some organisms can feed from these bodies organic matter.

    • Oxygen: it is the amount of this substance that is dispersed in the atmosphere. Oxygen is produced as a derivative product of the photosynthesis of the organisms that posses green segments and it is used by all organisms in the respiration process.

    • Carbon dioxide: it is the amount of this substance that is dispersed in the atmosphere. The carbon dioxide is the main source of carbon for the organisms and it is a key factor in every metabolism. It's produced as a result of respiration and it is consumed in the photosynthesis.

    • Color proportion: it is a graphical representation of the proportion of colors present in alive organisms segments.

  • Remarkable organisms: this section shows the organisms that have achieved a current world record, either by being the one that have the most children, the one that have killed more organisms or the one that have infected more organisms.

  • Population: this section shows demography information.

    • Population graph: the graph shows the population and the number of births and deaths occurred in the last 100 time units.

    • Average population: the average population in the world.

    • Average birth rate: the average births per unit of time.

    • Average mortality rate: the average deaths per unit of time.

    • Average infections rate: the average infections per unit of time.

    • Generated organisms: the total number of organisms created since life began in that world.

    • Maximum population: shows the maximum population reached and the time when it was reached.

    • Minimum population: shows the minimum population reached and the time when it was reached.

    • Mass extintions: the number of massive extintions occurred since the world began. It is considered that a mass extintion occurs when the number of deaths per unit of time is greater than the average deaths number during a period of time.

  • Atmosphere: this section shows information on the atmosphere composition.

    • Atmosphere graph: this graph shows the amount of oxygen and carbon dioxide present at the atmposhere in the last 100 units of time.

    • Maximum carbon dioxide: the maximum amount of carbon dioxide reached and the time when it was reached.

    • Minimum carbon dioxide: the minimum amount of carbon dioxide reached and the time when it was reached.

    • Maximum oxygen: the maximum amount of oxygen reached and the time when it was reached.

    • Minimum oxygen: the minimum amount of oxygen reached and the time when it was reached.

State panel

The state panel shows information about the organism that has been selected using the mouse and that is shown at the world surrounded by an orange rectangle. The following information is displayed:

  • ID: it is a number that identifies the organism in a unique form in the world.

  • Generation: it is the number of generations that have exist in its evolutionary line since the world began, counting its own.

  • Age: it is the time that has gone by since the organism is in the world and it's measured in the same manner than the world time. Organisms have a maximum life time, after which they die.

  • Energy: it is the amount of energy the organism has. Energy can be obtained from different sources, depending on the color of organism segments, and it is consumed in order to maintain the organism alive and when they reproduce. Each segment has a constant energy consume that only depends on its length.

  • Children: it is the number of direct descendants that this organism has produced, independently of them staying alive or not. The number of children that an organism can produce before its death is a simple measurement of its biological success.

  • Victims: it is the number of organisms killed by this organism.

  • Infected: it is the number of organisms infected with this organism's genetic code.

  • Mass: it is the total mass of the organism.

  • Reproduction: the energy that this organism needs in order to reproduce.

The examine genes button that appears next to this information allow you to open the genetic labortory where you can examine in detail the genetic code of the selected organism, or make modified version of it.

Parameters configuration window

In this window all parameters that affect the application's execution can be modified. The OK button saves the preferences, which will be used from now on every time that the same user runs the program. The Cancel button cancels all changes you have made. The Default values button allows you to assign the original values that have been assigned to this program's version.

As there are important changes in this version of the program, parameters assigned to old program versions will not be kept.

All changes, except world size, have immediately effect. However, world size will only be applied when creating a new world.

Any parameter that is assigned an invalid value will keep the value it had until then.

The genetic laboratory

From the genetic laboratory it's possible to change the genetic code of organisms or to create new ones. When it opens, the window shows the last genetic code that was copied to the clipboard, or a void genetic code if none had been copied.

The following information is shown in this window:

  • Symmetry: it indicates how many times the segment pattern will be repeated. An organism with symmetry 4, will have all of his segments repeated 4 times and distributed in a symmetrical way around a central point. The following organisms has a very similar genetic code, but the first one presents a symmetry of 4 while the last has an 8 one. As a consequence, the first organism has half of the segments than the last.

Organism with symmetry 4

Organism with symmetry 8

Symmetry 4

Symmetry 8

  • Mirror: it indicates if the organism has symmetry respect a straight that crosses the center or not. Two organisms that have exactly the same genetic code, except that the first has mirror and the second not, are shown as follows:

Organism with mirror

Organism without mirror

With mirror

Without mirror

  • Disperse children: it indicates if descendants will be provided with a different speed and direction than this organism, in order to spread them out the surroundings, or if they will have the same speed and direction, keeping them together.

  • Energy to reproduce: it is the energy needed by this organism to reproduce. An organism needs 40 energy points plus 3 points per gene in its genetic code: more complex organism needs more energy to reproduce than simpler ones.

  • Life expectancy: it is the time that takes to the organism to naturally die. When the organism exceed this age, it dies and its corpse stays in the world, slowly dispersing on the environment. All organisms have the same life expectancy.

Next, a list of all organism's segments are shown. For each segment, its coordinates, which indicate direction and length, and color are shown.

Using the different controls that appear, you can change code's characteristics (symmetry, mirror and children dispersion) and, with the buttons in the central section, you can add, delete or modify the different segments that conform the genetic code

To the right part of the window, an organism with the genetic code you are editing is always shown.

To the bottom, the Copy to clipboard button allows you to save the genetic code created. You can create new being with this genetic code by selection the Paste option at the world window.

The Cancel button closes the laboratory without saving the changes that you might have done, and the Clean button removes all segments and allows you to create a new genetic code from the beginning.

The Import button let you load an organism from a previously created file into the laboratory, in order to edit it or copy it to the clipboard.


Metabolism is the set of chemical processes that an organism does and has as its main objective to obtain energy from available matters in the environment.

All organisms need energy to subsist and reproduce. Energy can be obtained from the Sun when carrying out photosynthesis or through organic matter processing. In order to store energy that is not needed immediately, organism synthesize sugars, for which they need carbon. Carbon can be obtained by decomposition of the carbon dioxide spread in the atmosphere or by the processing of organic matter. Energy stored this way is called chemical energy, and to consume it, sugars must be decomposed again. In the process called respiration, environmental oxygen is absorbed and it is used to make sugars react and decompose them, obtaining effective energy and releasing the resulting carbon dioxide back to the atmosphere.

Even though there are many different metabolisms in nature, in this program's version there are only two:

  • Photosynthetic metabolism: it is done by those organisms that have green segments. They obtain energy from the Sun (photosynthetic), the carbon from the atmosphere (autotroph) and the reducing power from inorganic compounds (lithotroph).

  • Chemoorganotrophic metabolism: it is done by those organisms that have red segments. They obtain energy, carbon and reducing power from organic matter previously synthesized by other organisms.

Energy is necessary for different reasons:

  • Each segment has a constant energy consumption that depends only on its length.

  • Energy can be lost by entering in contact with specific segments of other organisms.

  • The energy that an organism has at the moment of reproduction is shared between it and its descendants.

Organisms death can happen due to different circumstances:

  • The organism cannot carry out respiration process, either because it has not enough chemical energy stored, either because there is not enough oxygen in the environment.

  • The organism has exceeded its life expectancy. Organism's metabolism fails and it dies.

  • The organism gets in touch with substances that are harmful to it, as other organism's red or gray segments.

When an organism dies but still has energy, its body stays in the world and it is shown in brown. Other organisms can absorb its energy before the corpse slowly dissolves with the environment.

An organism can only accumulate the double of the energy that needs to procreate, and this can only happen if its reproduction attempts have failed because there is not enough space around it. If an organism has space to reproduce and enough energy, it always will do it.

Organisms reproduction is always asexual, so the descendants of an organism will have exactly the same genetic code, with the exception of mutations that may happen.


Solar energy is absorbed in a process called photosynthesis that requires the presence of carbon dioxide in the environment. Carbon dioxide is transformed with the help of solar energy in more complex chemical compounds that store this energy in a chemical way. As a photosynthesis by-product oxygen is released to the environment. When stored chemical energy is necessary, previous chemical compounds are decomposed again, which frees the energy that was remained stored. Solar energy is the first origin of all organisms energy. The amount of carbon dioxide present in the atmosphere is the limiting factor to the organisms number growth.

Green segments are the ones that give the skill of carrying out photosynthesis to an organism. The amount of energy that it can obtain is proportional to the length of the photosynthetic segments.

Organic matter

Energy obtained through organic matter is elevated, but can only be obtained when contact with other beings happens. Instead of obtaining needed carbon for living from atmosphere, beings that live on organic matter absorb the carbon that other organisms have by contacting them. Carbon can be taken from either living or dead organisms, although in general dead ones are better victims because they can neither defend nor flee.

Organic matter processing never generates more energy than existed before, but only causes an energy transfer from the predated organism to the predator. Moreover, organic matter processing has not absolute effectiveness: a part of the extracted energy is not directly transformed into energy for the predator, but it is liberated in carbon dioxide form to the atmosphere again.

Red segments can absorb energy from other beings and they always do it in a way proportional to their lengths; blue segments are invulnerable to red segments effects.


Organisms carry out the respiration process in order to convert stored chemical energy to the effective energy they need at every moment. Through respiration environment oxygen is consumed and carbon dioxide released. This process has to be done continuously by them to keep alive; if it cannot be done, either because lacking of chemical energy, either because lacking of oxygen, the organism dies.

Genetic code

You can see an explanation of the genetic code operation at the section the genetic laboratory.


Every organism has a number of segments that varies from 4 to 64. The color and effect of segments are the following:

  • Green: they obtain energy from the Sun and the carbon dioxide and release oxygen. The quantity of energy obtained depends on the amount of carbon dioxide present at the environment and on the segment's length. The oxygen amount released is the same as the carbon dioxide absorbed.

  • Red: they obtain energy from organic matter. They steel energy from other organisms when they touch each other. A part of absorbed energy is released in the form of carbon dioxide. Red segments are effective against any other segment with the exception of the blue ones. The amount of energy absorbed is proportional to the segment size. When a red segment gets activated, the organism will be momentarily shown in red and its victim in yellow.

  • Blue: they are invulnerable to the effects of red, white and gray segments. When a blue segment gets activated, the organism will be momentarily shown in blue.

  • Cyan: they allow the organism to move through the surroundings. They get randomly activated and impel the being in the direction the segments points to with a speed proportional to its length. The environment has a rubbing coefficient that reduces the being speed progressively.

  • White: they infect the organisms they contact. The infected organism first descendant will be a member of the species that have infected it instead of its own. Genes' injection into another organism has an energetic cost and the infection will only happen if the infecting organism has at least this energy. An organism can only be infected once, so if the same organism is infected by two different organisms, only the last one will take effect. Moreover, if an organism infects another one two consecutive times, the second one has no effect and the needed energy for the infection is not spent. White segments are effective against any other segment with the exception of blue ones. When a white segment is activated, the organism will be momentarily shown in white and its victim in yellow.

  • Gray: they are harmful. When they touch another organism, it dies. When a gray segment gets activated the organism will be momentarily shown in gray.

  • Yellow: they increase fertility. Organisms produce a descendant every time that reproduce. For each yellow segment that they have, they produce one more descendant, at a maximum of 8. The number of descendants produced is always limited by the available space surrounding the reproducing being.


There is a fixed percentage of a mutation happening for each of the genes every time that an organism produce a descendant. Its default value is 5%.

When a new organism is created a random number is generated for each gene and the ones that are mutated are randomly created again. It is also possible for the total amount of segments of the individual to be raised or lowered.


There are a few parameters that define different aspects of the program's operation and that you can modify at your own taste. All of these parameters can be modified at the parameters configuration window, where you can get through the Parameters option of the world menu.

The aspects that can be modified are:



Permitted values

Default value



The language used on all application messages.

English, Spanish and Catalan

System default

Time per frame

Number of milliseconds that pass between two frames. This quantity is basic to adjust the program's performance to your computer.

From 1


Hardware acceleration

If OpenGL should be used to accelerate graphic drawing or not.

OpenGL or none




World's width in pixels.

From 1



World's height in pixels.

From 1


Initial oxygen

Amount of oxygen that there is in the atmosphere of a new world.

From 0


Initial carbon dioxide

Amount of carbon dioxide that there is in the atmosphere of a new world.

From 0


Rubbing coefficient

It determines the amount of movement that is kept at every frame. If it equals 1, organisms never stop. If it equals 0, movement is not kept between two frames.

Between 0 and 1


Elasticity coefficient

It determines the amount of movement that is kept after a collision. If it equals 1, no energy is lost when a collision happens. If it equals 0 organisms stop after a collision.

Between 0 and 1



Initial number

Number of organisms that are created in a new world.

From 1


Initial energy

Energy points that have organisms created at the beginning of the world.

From 1


Life expectancy

Maximum time of life for an organism.

From 1


Mutation coefficient

Probability that a mutation happens when a descendant is created, for each of its characteristics.

Between 0 and 1

0.05 (5%)

Segment upkeep cost divisor

Number that divides segment lengths to establish the amount of energy that is consumed per frame.

From 1


Substances drainage divisor

Number that divides the amount of carbon dioxide present in the environment to establish how much can drain organisms in a single frame.

From 1


Energy lost by dead organisms

It is the amount of energy that a dead organism lost in every frame. This energy fall off the body and move to the atmosphere in the form of CO2.

From 0


Photosynthetic metabolism

Obtained energy divisor

Green segments length is divided by this number to establish the amount of solar energy that can be obtained in a single frame.

From 1


Chemoorganotrophic metabolism

Obtained energy

Red segments length is multiplied by this number to establish the amount of energy that is stolen to another organism when it is touched.

From 0


Released energy proportion

Proportion of obtained organic energy that is released in carbon dioxide form instead of going directly to the organism's energy.

Between 0 and 1




For each segment color, which is the probability that this color appears when a mutation occurs or when a new random being is created. Probabilities are calculated out of the sum of all color probabilities (for example, if the sum of all probabilities is 100 then the probability of each segment is given in a percentage.).

From 0

30% for green, 20% for cyan i 10% for the rest.


For each segment color, the energy cost that implies to use a segment of this color. Note that green segments are used at every frame and cyan ones are also used very often, so a little cost in these segments harms organisms that have some of them a lot.

From 0

1 for white and gray segments and 0 for the rest

Credits and license

This program is free software and it is distributed under the terms of the GNU General Public License. Take a look to copyright and gpl.txt files for further information.

I want to thank the people who has contributed to this project, such as Álvaro Esteban and Iván García for involving in the development and testing of Biogenesis, Eva Rebollo for her advice in biology themes, Ananda Daydream and Florian Haag for their artwork and to Laura Feliu for her revision of some English translations.

This program is based on Jason Spofford's Primordial Life. I would like to thank him specially for giving me permission to study the source code of his program.

Downloads, bugs and collaborations

Biogenesis executable and source code can be downloaded from Please, report any bug you find at the Biogenesis forums, or send an email to joanq.biogenesis at

Copyright © 2006-2010 Joan Queralt Molina