<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Biogenesis</title> <meta name="description" content="Biogenesis is a program that simulates in a visual fashion the processes involved in the evolution of unicellular organisms at nature." /> <meta name="author" content="Joan Queralt Molina" /> <meta name="keywords" content="biogenesis, evolution, organism, simulation, microbiology, life, game" /> <meta name="date" content="2010-03-08T" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css" media="screen"> @import url( style.css ); </style> <script type="text/javascript"> <!-- Begin var timer; var resume_image1 = new Image(); resume_image1.src="images/menu_start.png"; var resume_image2 = new Image(); resume_image2.src="images/menu_stop.png"; var track_image1 = new Image(); track_image1.src="images/menu_track.png"; var track_image2 = new Image(); track_image2.src="images/menu_stop_tracking.png"; var state = 0; function toogleImages() { if (state == 0) { document.getElementById("resume_image").src = resume_image2.src; document.getElementById("track_image").src = track_image2.src; state = 1; } else { document.getElementById("resume_image").src = resume_image1.src; document.getElementById("track_image").src = track_image1.src; state = 0; } } function init() { timer=setInterval("toogleImages()", 5000); } function dispose() { clearInterval(timer); } // End --> </script> </head> <body onload="init()" onunload="dispose()"> <div id="rap"> <h1 id="header"><a href="#" title="Biogenesis">Biogenesis</a></h1> <div id="content"> <h2>User Manual</h2> <div class="post"> <h3 class="storytitle">Index</h3> <div class="storycontent"> <ul> <li> <p><span class="option"><a href="#intro">Introduction</a></span></p> </li> <li> <p><span class="option"><a href="#basic">Basic use</a></span></p> <ul> <li> <p><span class="option"><a href="#exec">Execution</a></span></p> </li> <li> <p><span class="option"><a href="#rend">Performance</a></span></p> </li> <li> <p><span class="option"><a href="#uninst">Uninstall</a></span></p> </li> </ul> </li> <li> <p><span class="option"><a href="#use">Program use</a></span></p> <ul> <li> <p><span class="option"><a href="#oppals">Main options</a></span></p> </li> <li> <p><span class="option"><a href="#mon">The world</a></span></p> </li> <li> <p><span class="option"><a href="#interacting">Interacting with the world</a></span></p> </li> <li> <p><span class="option"><a href="#estadis">Statistics window</a></span></p> </li> <li> <p><span class="option"><a href="#estat">State panel</a></span></p> </li> <li> <p><span class="option"><a href="#vgens">The genes viewer</a></span></p> </li> <li> <p><span class="option"><a href="#cparam">Parameters configuration window</a></span></p> </li> <li> <p><span class="option"><a href="#lab">The genetic laboratory</a></span></p> </li> </ul> </li> <li> <p><span class="option"><a href="#met">Metabolism</a></span></p> <ul> <li> <p><span class="option"><a href="#sol">Photosynthesis</a></span></p> </li> <li> <p><span class="option"><a href="#morg">Organic matter</a></span></p> </li> <li> <p><span class="option"><a href="#breath">Respiration</a></span></p> </li> </ul> </li> <li> <p><span class="option"><a href="#gens">Genetic code</a></span></p> <ul> <li> <p><span class="option"><a href="#segs">Segments</a></span></p> </li> <li> <p><span class="option"><a href="#mut">Mutations</a></span></p> </li> </ul> </li> <li> <p><span class="option"><a href="#param">Parameters</a></span></p> </li> <li> <p><span class="option"><a href="#credits">Credits and license</a></span></p> </li> <li> <p><span class="option"><a href="#comen">Downloads, bugs and collaborations</a></span></p> </li> </ul> </div> </div> <div class="post"> <h3 class="storytitle"><a id="intro"></a>Introduction</h3> <div class="storycontent"> <p>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.</p> <p>The organisms that will populate this <a href="#mon">world</a> 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 <a href="#segs">segments</a> 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 <a href="#gens">genetic code</a>, which its descendants will inherit in an identical form, with the exception of random <a href="#mut">mutations</a> that can happen in each generation.</p> <p>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.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="basic"></a>Basic use</h3> <div class="storycontent"> <h4><a id="exec"></a>Execution</h4> <p>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 <a href="http://java.com/en/">http://java.com/en/</a>. Once the virtual machine is installed you only need to double click on the <span class="file">biogenesis.jar</span> 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 <span class="option">Open with Java Runtime</span>, or run it from the command line with the command <span class="option">java -jar biogenesis.jar</span>.</p> <p>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: <span class="option">java -jar biogenesis.jar 12345</span>.</p> <p>See the <a href="#rend">performance</a> section to know how to improve program's performance for your computer.</p> <h4><a id="rend"></a>Performance</h4> <p>This program has a high CPU consumption. You need to set a few parameters in order to adapt it to your hardware.</p> <p>These are the parameters that you should configure. Remember that you can do this by selecting the <span class="option">Parameters</span> option under the <span class="option">World</span> menu.</p> <ul> <li> <p><span class="option">OpenGL</span>: 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.</p> <ul> <li> <p><span class="option">Disable fbobject</span>: 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.</p> </li> </ul> </li> <li> <p><span class="option">Time per frame</span>: 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.</p> </li> <li> <p><span class="option">Initial carbon dioxide</span>: 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.</p> </li> </ul> <p>See the <a href="#param">parameters</a> section for a full explanation of all existing parameters.</p> <h4><a id="uninst"></a>Uninstall</h4> <p>Biogenesis stores parameters in your hard drive (in the Windows registry or in a hidden file in Linux). The <span class="file">uninstall.jar</span> file can be used to remove this information from your disk, if you don't want to use Biogenesis any more.</p> <p>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.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="use"></a>Program use</h3> <div class="storycontent"> <h4><a id="oppals"></a>Main options</h4> <p>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:</p> <ul> <li> <p><span class="option">Game</span></p> <ul> <li> <p><img class="context" alt="New world" src="images/menu_new.png" /><span class="option">New</span>: this button allows you to create a new <a href="#mon">world</a> from the beginning. All existing organisms will be eliminated and new ones created.</p> </li> <li> <p><img class="context" id="resume_image" alt="Resume process" src="images/menu_start.png" /><span class="option">Start/pause</span>: this button allows you to make a pause in any moment without loosing the progress done and to continue again.</p> <p>This option can be activated at any time by pressing the P key.</p> </li> <li> <p><span class="option">Open</span>: 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.</p> </li> <li> <p><img class="context" alt="Save world" src="images/menu_save.png" /><span class="option">Save</span> and <span class="option">Save as</span>: they allow you to save the current world to a file, in order to continue with its execution later.</p> <p>This option can be activated at any time by pressing the S key.</p> </li> <li> <p><span class="option">Quit</span>: it quits the program immediately and all unsaved changes of the world are discarded.</p> </li> </ul> </li> <li> <p><span class="option">World</span></p> <ul> <li> <p><span class="option">Statistics</span>: when it is pressed, the <a href="#estadis">statistics window</a> 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.</p> </li> <li> <p><span class="option">Genetic Laboratory</span>: it shows the <a href="#lab">genetic laboratory window</a>. Through it you can create new beings with a new or modified genetic code.</p> </li> <li> <p><img class="context" alt="Increase CO2" src="images/menu_increase_co2.png" /><span class="option">Increase CO2</span>: it adds 500 units of CO2 to the atmosphere.</p> </li> <li> <p><img class="context" alt="Decrease CO2" src="images/menu_decrease_co2.png" /><span class="option">Decrease CO2</span>: it reduces 500 units to the CO2 in the atmosphere, if there isn't less.</p> </li> <li> <p><span class="option">Kill all</span>: it kills all alive organisms.</p> </li> <li> <p><span class="option">Disperse all</span>: it recovers the carbon dioxide inside all dead bodies and returns it to the atmosphere.</p> </li> <li> <p><span class="option">Parameters</span>: it shows the <a href="#cparam">parameters configuration window</a>. Through it you can change different values that affect at the world development. In the <a href="#param">parameters</a> section the meaning of each of these numbers is explained.</p> </li> </ul> </li> <li> <p><span class="option">Network</span></p> <p>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.</p> <ul> <li> <p><span class="option">Configure network</span>:</p> <p>This option shows a dialog that can be used to configure the network settings.</p> <p>Activate <span class="option">Allow connections from other users</span> if you want to let in connection requests from other Biogenesis users.</p> <p>Set the <span class="option">maximum number of allowed connections</span> and the <span class="option">local port to receive connections</span>. Remember that this port must be open.</p> </li> <li> <p><img class="context" alt="Manage connections" src="images/menu_manage_connections.png" /><span class="option">Manage connections</span>:</p> <p>Use this dialog when you want to set a new connection to another Biogenesis instance or when you want to close an existing connection.</p> <p>Write the IP address and port to the other program instance and click <span class="option">New connection</span> to start a connection.</p> <p>The other program must have its <span class="option">Allow connections from other users</span> option activated in order to stablish the connection.</p> <p>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.</p> <p>If at any moment the connection is closed or is lost, the rectangles will disappear.</p> <p>If you want to close an existing connection click on the corresponding <span class="option">Disconnect</span> button next to the connection information.</p> <p>Only genetic codes travel through the network. The amount of O2 and CO2 remains constant in your world.</p> </li> </ul> </li> <li> <p><span class="option">Help</span></p> <ul> <li> <p><span class="option">User Manual</span>: it opens the web navigator and connects to Biogenesis web page, at the user manual section.</p> </li> <li> <p><span class="option">Check last version</span>: it connects to the Biogenesis web to check the last released version and shows it together with the version you are using.</p> </li> <li> <p><span class="option">About Biogenesis</span>: it shows the program version number.</p> </li> </ul> </li> </ul> <h4><a id="mon"></a>The world</h4> <p>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 <a href="#estat">state window</a> will appear, and it will be marked with a surrounding orange rectangle.</p> <p>The world can be much larger than the application window. The lateral bars allow you to move through the whole world.</p> <p>The world is considered fluid, so organisms can move around using their cyan <a href="#segs">segments</a>, which work as cilia. A rubbing coefficient, which is applied on organisms speed in every frame, makes sure that they will stop.</p> <p>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 <a href="#estadis">statistics</a> window section.</p> <h4><a id="interacting"></a>Interacting with the world</h4> <p>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:</p> <ul> <li> <p class="option">Actions over living beings:</p> <ul> <li> <p><img class="context" id="track_image" alt="Track organism" src="images/menu_track.png" /><span class="option">Track/Abort tracking</span>: it causes that the application window centers on the selected organism and follows it. To stop following it a being you can select the <span class="option">Abort tracking</span> option or follow another one. When a being dies it is not tracked anymore.</p> </li> <li> <p><img class="context" alt="Feed organism" src="images/menu_feed.png" /><span class="option">Feed</span>: it give 10 additional energy points to this being. An equivalent amount of carbon is consumed from atmosphere.</p> </li> <li> <p><img class="context" alt="Weaken organism" src="images/menu_weaken.png" /><span class="option">Weaken</span>: 10 energy points are subtracted from this being and the same amount of carbon are freed to the atmosphere, in form of carbonate dioxide.</p> </li> <li> <p><span class="option">Force reproduction</span>: it forces the organism reproduction, even if it hasn't enough energy to do it.</p> </li> <li> <p><span class="option">Rejuvenate</span>: the age counter of this being is reseted to 0, as it has just been created.</p> </li> <li> <p><img class="context" alt="Kill organism" src="images/menu_kill.png" /><span class="option">Kill</span>: it kills the organism immediately, leaving its lifeless corpse in the world.</p> </li> <li> <p><img class="context" alt="Copy genetic code" src="images/menu_copy.png" /><span class="option">Copy</span>: it save a copy of an organism's genetic code that can be cloned later with the paste option in a world empty space.</p> </li> <li> <p><span class="option">Export</span>: 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.</p> </li> <li> <p><img class="context" alt="Save an image" src="images/menu_save_image.png" /><span class="option">Save an image</span>: it allows you to save an image of the being in JPG format.</p> </li> </ul> </li> <li> <p class="option">Actions over dead beings:</p> <ul> <li> <p><img class="context" alt="Revive organism" src="images/menu_revive.png" /><span class="option">Revive</span>: it takes the being back to live, with the remaining energy that the corpse has at that moment.</p> </li> <li> <p><img class="context" alt="Disperse organism" src="images/menu_disperse.png" /><span class="option">Disperse</span>: it returns all the carbon to the atmosphere immediately. The corpse disappears.</p> </li> </ul> </li> <li> <p class="option">Actions over empty space:</p> <ul> <li> <p><span class="option">Paste</span>: it creates a new being having the genetic code that has been previously selected with the <span class="option">copy</span> option.</p> </li> <li> <p><span class="option">Create randomly</span>: it generates a new being having a randomly created genetic code.</p> </li> <li> <p><span class="option">Import</span>: it creates a new being having a genetic code restored from a file that has been saved before with the <span class="option">export</span> option.</p> </li> </ul> </li> </ul> <h4><a id="estadis"></a>Statistics window</h4> <p>The statistics window shows general information about the process that is being executed. This window can be seen through the statistics button on the <a href="#oppals">main window</a> and contains the following information:</p> <ul> <li> <p><span class="option">Current state</span>: this section shows information about the current state of the world.</p> <ul> <li> <p><span class="option">Time</span>: 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.</p> </li> <li> <p><span class="option">Population</span>: it is the number of living organisms at that moment.</p> </li> <li> <p><span class="option">Remains of beings</span>: it is the number of dead (brown) organisms at that moment. Some organisms can feed from these bodies organic matter.</p> </li> <li> <p><span class="option">Oxygen</span>: it is the amount of this substance that is dispersed in the atmosphere. Oxygen is produced as a derivative product of the <a href="#sol">photosynthesis</a> of the organisms that posses green <a href="#segs">segments</a> and it is used by all organisms in the respiration process.</p> </li> <li> <p><span class="option">Carbon dioxide</span>: 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 <a href="#met">metabolism</a>. It's produced as a result of <a href="#breath">respiration</a> and it is consumed in the <a href="#sol">photosynthesis</a>.</p> </li> <li> <p><span class="option">Color proportion</span>: it is a graphical representation of the proportion of colors present in alive organisms segments.</p> </li> </ul> </li> <li> <p><span class="option">Remarkable organisms</span>: 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.</p> </li> <li> <p><span class="option">Population</span>: this section shows demography information.</p> <ul> <li> <p><span class="option">Population graph</span>: the graph shows the population and the number of births and deaths occurred in the last 100 time units.</p> </li> <li> <p><span class="option">Average population</span>: the average population in the world.</p> </li> <li> <p><span class="option">Average birth rate</span>: the average births per unit of time.</p> </li> <li> <p><span class="option">Average mortality rate</span>: the average deaths per unit of time.</p> </li> <li> <p><span class="option">Average infections rate</span>: the average infections per unit of time.</p> </li> <li> <p><span class="option">Generated organisms</span>: the total number of organisms created since life began in that world.</p> </li> <li> <p><span class="option">Maximum population</span>: shows the maximum population reached and the time when it was reached.</p> </li> <li> <p><span class="option">Minimum population</span>: shows the minimum population reached and the time when it was reached.</p> </li> <li> <p><span class="option">Mass extintions</span>: 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.</p> </li> </ul> </li> <li> <p><span class="option">Atmosphere</span>: this section shows information on the atmosphere composition.</p> <ul> <li> <p><span class="option">Atmosphere graph</span>: this graph shows the amount of oxygen and carbon dioxide present at the atmposhere in the last 100 units of time.</p> </li> <li> <p><span class="option">Maximum carbon dioxide</span>: the maximum amount of carbon dioxide reached and the time when it was reached.</p> </li> <li> <p><span class="option">Minimum carbon dioxide</span>: the minimum amount of carbon dioxide reached and the time when it was reached.</p> </li> <li> <p><span class="option">Maximum oxygen</span>: the maximum amount of oxygen reached and the time when it was reached.</p> </li> <li> <p><span class="option">Minimum oxygen</span>: the minimum amount of oxygen reached and the time when it was reached.</p> </li> </ul> </li> </ul> <h4><a id="estat"></a>State panel</h4> <p>The state panel shows information about the organism that has been selected using the mouse and that is shown at the <a href="#mon">world</a> surrounded by an orange rectangle. The following information is displayed:</p> <ul> <li> <p><span class="option">ID</span>: it is a number that identifies the organism in a unique form in the world.</p> </li> <li> <p><span class="option">Generation</span>: it is the number of generations that have exist in its evolutionary line since the world began, counting its own.</p> </li> <li> <p><span class="option">Age</span>: 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 <a href="#estadis">world time</a>. Organisms have a maximum life time, after which they die.</p> </li> <li> <p><span class="option">Energy</span>: it is the amount of <a href="#met">energy</a> 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 <a href="#segs">segment</a> has a constant energy consume that only depends on its length.</p> </li> <li> <p><span class="option">Children</span>: 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.</p> </li> <li> <p><span class="option">Victims</span>: it is the number of organisms killed by this organism.</p> </li> <li> <p><span class="option">Infected</span>: it is the number of organisms infected with this organism's genetic code.</p> </li> <li> <p><span class="option">Mass</span>: it is the total mass of the organism.</p> </li> <li> <p><span class="option">Reproduction</span>: the energy that this organism needs in order to reproduce.</p> </li> </ul> <p>The <span class="option">examine genes</span> button that appears next to this information allow you to open the <a href="#lab">genetic labortory</a> where you can examine in detail the <a href="#gens">genetic code</a> of the selected organism, or make modified version of it.</p> <h4><a id="cparam"></a>Parameters configuration window</h4> <p>In this window all <a href="#param">parameters</a> that affect the application's execution can be modified. The <span class="option">OK</span> button saves the preferences, which will be used from now on every time that the same user runs the program. The <span class="option">Cancel</span> button cancels all changes you have made. The <span class="option">Default values</span> button allows you to assign the original values that have been assigned to this program's version.</p> <p>As there are important changes in this version of the program, parameters assigned to old program versions will not be kept.</p> <p>All changes, except world size, have immediately effect. However, world size will only be applied when creating a new world.</p> <p>Any parameter that is assigned an invalid value will keep the value it had until then.</p> <h4><a id="lab"></a>The genetic laboratory</h4> <p>From the genetic laboratory it's possible to change the <a href="#gens">genetic code</a> 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.</p> <p>The following information is shown in this window:</p> <ul> <li> <p><span class="option">Symmetry</span>: 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.</p> </li> </ul> <table class="manual-table"> <tbody> <tr> <td style="width: 49%;"><p><img style="width: 51px; height: 52px;" alt="Organism with symmetry 4" src="images/sim4.png"/></p></td> <td><p><img style="width: 51px; height: 51px;" alt="Organism with symmetry 8" src="images/sim8.png"/></p></td> </tr> <tr> <td><p>Symmetry 4</p></td> <td><p>Symmetry 8</p></td> </tr> </tbody> </table> <ul> <li> <p><span class="option">Mirror</span>: 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:</p> </li> </ul> <table class="manual-table"> <tbody> <tr> <td style="width: 49%;"><p><img style="width: 50px; height: 51px;" alt="Organism with mirror" src="images/mirror.png"/></p></td> <td><p><img style="width: 53px; height: 51px;" alt="Organism without mirror" src="images/no_mirror.png"/></p></td> </tr> <tr> <td><p>With mirror</p></td> <td><p>Without mirror</p></td> </tr> </tbody> </table> <ul> <li> <p><span class="option">Disperse children</span>: 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.</p> </li> <li> <p><span class="option">Energy to reproduce</span>: it is the <a href="#met">energy</a> 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.</p> </li> <li> <p><span class="option">Life expectancy</span>: 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.</p> </li> </ul> <p>Next, a list of all organism's <a href="#segs">segments</a> are shown. For each segment, its coordinates, which indicate direction and length, and color are shown.</p> <p>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</p> <p>To the right part of the window, an organism with the genetic code you are editing is always shown.</p> <p>To the bottom, the <span class="option">Copy to clipboard</span> button allows you to save the genetic code created. You can create new being with this genetic code by selection the <span class="option">Paste</span> option at the world window.</p> <p>The <span class="option">Cancel</span> button closes the laboratory without saving the changes that you might have done, and the <span class="option">Clean</span> button removes all segments and allows you to create a new genetic code from the beginning.</p> <p>The <span class="option">Import</span> 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.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="met"></a>Metabolism</h3> <div class="storycontent"> <p>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.</p> <p>All organisms need energy to subsist and reproduce. Energy can be obtained from the Sun when carrying out <a href="#sol">photosynthesis</a> or through <a href="#morg">organic matter</a> 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.</p> <p>Even though there are many different metabolisms in nature, in this program's version there are only two:</p> <ul> <li> <p><span class="option">Photosynthetic metabolism</span>: 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).</p> </li> <li> <p><span class="option">Chemoorganotrophic metabolism</span>: 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.</p> </li> </ul> <p>Energy is necessary for different reasons:</p> <ul> <li> <p>Each <a href="#segs">segment</a> has a constant energy consumption that depends only on its length.</p> </li> <li> <p>Energy can be lost by entering in contact with specific segments of other organisms.</p> </li> <li> <p>The energy that an organism has at the moment of reproduction is shared between it and its descendants.</p> </li> </ul> <p>Organisms death can happen due to different circumstances:</p> <ul> <li> <p>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.</p> </li> <li> <p>The organism has exceeded its life expectancy. Organism's metabolism fails and it dies.</p> </li> <li> <p>The organism gets in touch with substances that are harmful to it, as other organism's red or gray segments.</p> </li> </ul> <p>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.</p> <p>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.</p> <p>Organisms reproduction is always asexual, so the descendants of an organism will have exactly the same <a href="#gens">genetic code</a>, with the exception of <a href="#mut">mutations</a> that may happen.</p> <h4><a id="sol"></a>Photosynthesis</h4> <p>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.</p> <p>Green <a href="#segs">segments</a> 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.</p> <h4><a id="morg"></a>Organic matter</h4> <p>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.</p> <p>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.</p> <p>Red <a href="#segs">segments</a> 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.</p> <h4><a id="breath"></a>Respiration</h4> <p>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.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="gens"></a>Genetic code</h3> <div class="storycontent"> <p>You can see an explanation of the genetic code operation at the section <a href="#lab">the genetic laboratory</a>.</p> <h4><a id="segs"></a>Segments</h4> <p>Every organism has a number of segments that varies from 4 to 64. The color and effect of segments are the following:</p> <ul> <li> <p><span class="option" style="color: rgb(0, 255, 0);">Green</span>: they obtain energy from the <a href="#sol">Sun</a> 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.</p> </li> <li> <p><span class="option" style="color: rgb(255, 0, 0);">Red</span>: they obtain energy from <a href="#morg">organic matter</a>. 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.</p> </li> <li> <p><span class="option" style="color: rgb(0, 0, 255);">Blue</span>: 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.</p> </li> <li> <p><span class="option" style="color: rgb(0, 255, 255);">Cyan</span>: 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.</p> </li> <li> <p><span class="option" style="color: rgb(255, 255, 255);">White</span>: 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.</p> </li> <li> <p><span class="option" style="color: rgb(128, 128, 128);">Gray</span>: they are harmful. When they touch another organism, it dies. When a gray segment gets activated the organism will be momentarily shown in gray.</p> </li> <li> <p><span class="option" style="color: rgb(255, 255, 0);">Yellow</span>: 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.</p> </li> </ul> <h4><a id="mut"></a>Mutations</h4> <p>There is a fixed percentage of a mutation happening for each of the <a href="#vgens">genes</a> every time that an organism produce a descendant. Its default value is 5%.</p> <p>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 <a href="#segs">segments</a> of the individual to be raised or lowered.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="param"></a>Parameters</h3> <div class="storycontent"> <p>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 <a href="#cparam">parameters configuration window</a>, where you can get through the <span class="option">Parameters</span> option of the world menu.</p> <p>The aspects that can be modified are:</p> <table class="param-table"> <tbody> <tr style="font-weight: bold;"> <td><p>Name</p></td> <td><p>Description</p></td> <td><p>Permitted values</p></td> <td><p>Default value</p></td> </tr> <tr> <td colspan="4"><p class="option">General</p></td> </tr> <tr> <td><p>Language</p></td> <td><p>The language used on all application messages.</p></td> <td><p>English, Spanish and Catalan</p></td> <td><p>System default</p></td> </tr> <tr> <td><p>Time per frame</p></td> <td><p>Number of milliseconds that pass between two frames. This quantity is basic to adjust the program's performance to your computer.</p></td> <td><p>From 1</p></td> <td><p>50</p></td> </tr> <tr> <td><p>Hardware acceleration</p></td> <td><p>If OpenGL should be used to accelerate graphic drawing or not.</p></td> <td><p>OpenGL or none</p></td> <td><p>None</p></td> </tr> <tr> <td colspan="4"><p class="option">World</p></td> </tr> <tr> <td><p>Width</p></td> <td><p>World's width in pixels.</p></td> <td><p>From 1</p></td> <td><p>1000</p></td> </tr> <tr> <td><p>Height</p></td> <td><p>World's height in pixels.</p></td> <td><p>From 1</p></td> <td><p>1000</p></td> </tr> <tr> <td><p>Initial oxygen</p></td> <td><p>Amount of oxygen that there is in the atmosphere of a new world.</p></td> <td><p>From 0</p></td> <td><p>0</p></td> </tr> <tr> <td><p>Initial carbon dioxide</p></td> <td><p>Amount of carbon dioxide that there is in the atmosphere of a new world.</p></td> <td><p>From 0</p></td> <td><p>5000</p></td> </tr> <tr> <td><p>Rubbing coefficient</p></td> <td><p>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.</p></td> <td><p>Between 0 and 1</p></td> <td><p>0,98</p></td> </tr> <tr> <td><p>Elasticity coefficient</p></td> <td><p>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.</p></td> <td><p>Between 0 and 1</p></td> <td><p>0,8</p></td> </tr> <tr> <td colspan="4"><p class="option">Organisms</p></td> </tr> <tr> <td><p>Initial number</p></td> <td><p>Number of organisms that are created in a new world.</p></td> <td><p>From 1</p></td> <td><p>15</p></td> </tr> <tr> <td><p>Initial energy</p></td> <td><p>Energy points that have organisms created at the beginning of the world.</p></td> <td><p>From 1</p></td> <td><p>50</p></td> </tr> <tr> <td><p>Life expectancy</p></td> <td><p>Maximum time of life for an organism.</p></td> <td><p>From 1</p></td> <td><p>30</p></td> </tr> <tr> <td><p>Mutation coefficient</p></td> <td><p>Probability that a mutation happens when a descendant is created, for each of its characteristics.</p></td> <td><p>Between 0 and 1</p></td> <td><p>0.05 (5%)</p></td> </tr> <tr> <td><p>Segment upkeep cost divisor</p></td> <td><p>Number that divides segment lengths to establish the amount of energy that is consumed per frame.</p></td> <td><p>From 1</p></td> <td><p>5000</p></td> </tr> <tr> <td><p>Substances drainage divisor</p></td> <td><p>Number that divides the amount of carbon dioxide present in the environment to establish how much can drain organisms in a single frame.</p></td> <td><p>From 1</p></td> <td><p>5000</p></td> </tr> <tr> <td><p>Energy lost by dead organisms</p></td> <td><p>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.</p></td> <td><p>From 0</p></td> <td><p>0.1</p></td> </tr> <tr> <td colspan="4"><p class="option">Photosynthetic metabolism</p></td> </tr> <tr> <td><p>Obtained energy divisor</p></td> <td><p>Green segments length is divided by this number to establish the amount of solar energy that can be obtained in a single frame.</p></td> <td><p>From 1</p></td> <td><p>500</p></td> </tr> <tr> <td colspan="4"><p class="option">Chemoorganotrophic metabolism</p></td> </tr> <tr> <td><p>Obtained energy</p></td> <td><p>Red segments length is multiplied by this number to establish the amount of energy that is stolen to another organism when it is touched.</p></td> <td><p>From 0</p></td> <td><p>0,5</p></td> </tr> <tr> <td><p>Released energy proportion</p></td> <td><p>Proportion of obtained organic energy that is released in carbon dioxide form instead of going directly to the organism's energy.</p></td> <td><p>Between 0 and 1</p></td> <td><p>0,1</p></td> </tr> <tr> <td colspan="4"><p class="option">Genes</p></td> </tr> <tr> <td><p>Probability</p></td> <td><p>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.).</p></td> <td><p>From 0</p></td> <td><p>30% for green, 20% for cyan i 10% for the rest.</p></td> </tr> <tr> <td><p>Cost</p></td> <td><p>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.</p></td> <td><p>From 0</p></td> <td><p>1 for white and gray segments and 0 for the rest</p></td> </tr> </tbody> </table> </div> </div> <div class="post"> <h3 class="storytitle"><a id="credits"></a>Credits and license</h3> <div class="storycontent"> <p>This program is free software and it is distributed under the terms of the <span class="option">GNU General Public License</span>. Take a look to <span class="option">copyright</span> and <span class="option">gpl.txt</span> files for further information.</p> <p>I want to thank the people who has contributed to this project, such as <span class="option">Álvaro Esteban</span> and <span class="option">Iván García</span> for involving in the development and testing of Biogenesis, <span class="option">Eva Rebollo</span> for her advice in biology themes, <span class="option">Ananda Daydream</span> and <span class="option"><a href="http://toolbaricons.sourceforge.net/">Florian Haag</a></span> for their artwork and to <span class="option">Laura Feliu</span> for her revision of some English translations.</p> <p>This program is based on <span class="option">Jason Spofford</span>'s <span class="option"><a href="http://www.io.com/%7Espofford/">Primordial Life</a></span>. I would like to thank him specially for giving me permission to study the source code of his program.</p> </div> </div> <div class="post"> <h3 class="storytitle"><a id="comen"></a>Downloads, bugs and collaborations</h3> <div class="storycontent"> <p>Biogenesis executable and source code can be downloaded from <a href="http://biogenesis.sourceforge.net">http://biogenesis.sourceforge.net</a>. Please, report any bug you find at the Biogenesis <a href="http://biogenesis.sourceforge.net/forum/">forums</a>, or send an email to <strong>joanq</strong> at <strong>users.sourceforge.net</strong>.</p> </div> </div> </div> </div> <p class="credit">Copyright © 2006-2010 Joan Queralt Molina</p> </body> </html>