Watch life evolve in the palm of your hand! (And destroy it when it displeases you...)
Keep track of the latest developments and upcoming feature enhancements on our blog.
This app was inspired by the computer science technique known as Genetic Algorithms. The idea behind genetic algorithms is to apply evolutionary techniques such as inheritance, mutation, and selection to computing problems. I thought, why not go full circle and apply these techniques to a basic biology simulation? This app reflects one such attempt. I hope you enjoy it! New features will be added as free app updates.
Artificial Life is a simulation of the evolution of simple organisms, called protozoa. Each protozoa is represented on the screen as a small colored sphere. The world in which these protozoa live is quite simple. In the center of the screen there is a flickering Sun which provides a gravitational force in the world. The Sun will destroy any protozoa that touch it. Also in this world are "hiding spots" - red spheres that orbit the Sun. Protozoa can hide in these spheres to avoid being seen by other protozoa.
When a protozoa dies, its corpse is represented as a tiny hollow dot. The corpse of protozoa act as food in this world.
Here's a sample screen showing all the items in the Artificial Life world:
When first started, all the protozoa are given random behavior. The protozoa's rules of behavior are called chromosomes. These rules are simple choices built up of a combination of internal conditionals (such as hunger, sleepiness, desire, and life) or external conditions (such as distances to other objects in the world), and actions to be taken (such as kill a weaker protozoa, move towards or away from something, eat something, try to mate with another protozoa, etc.).
Given these collection of conditions to meet and actions to take, each protozoa is assigned 10 randomly created rules (or chromosomes) of behavior. A rule could be something like "if my hunger level is low, then move towards the sun" (obviously not a very useful rule for survival), or perhaps something more useful such as ("if my sleepiness is high, move towards a hiding spot").
Since the protozoa behavior is completely randomly generated, a lot of creatures will simply drift into the sun and die. However, over a short period of time, creatures with more useful rules will survive and become noticeable. Perhaps you'll see a predator that hides until a certain period of time, and then searches for a weaker protozoa to eat. If you tap on the "Age" portion of the menu bar on the bottom of the screen, the view will automatically be shifted to show the oldest living protozoa centered in the middle of the screen. It may be interesting to watch this creature to see why it has survived so long.
If a protozoa mates with another protozoa, a portion of its chromosomes will be passed on to its child. The child inherits from both parents, so it will get 5 rules from one parent and 5 rules from the other parent. There is also a small chance of a genetic mutation, in which case a rule may be changed randomly. Color is also a genetic attribute inherited from a parent. So, if you see a group of protozoa all of the same color, chances are they are related.
Protozoa may not live forever. Each one has an internal life meter. When a protozoa has not eaten in a long time, it will begin to lose life. When its life meter runs out, the protozoa dies and its corpse will drift. Other protozoa may eat the corpse for nourishment.
There are two different mode of play:
In Sandbox Mode, you can adjust environmental factors as well as the chromosomes defining the behavior of individual protozoa. There is no overall goal in Sandbox mode, other than to enjoy watching life evolve over time.
In Survival Mode, before the simulation starts, you create a custom protozoa with the goal of having it survive as long as possible. The simulation ends when your custom protozoa dies.
Part of the enjoyment of this simulation is simply observing life unfold. You can tap and drag your finger on the screen to move the view of the world and you can use two finger pinch and stretch gestures to zoom in and out to get a better view of what might be going on.
You can hide the menu bar by tapping once on the screen. Tap again to bring it back.
In Sandbox Mode, if you ever get lost and can't seem to find an interesting part of the world, simply bring up the main menu screen and tap on the "Sun" button. This will return you to viewing the area of the world with the Sun in the center.
while in Sandbox Mode, if you double-tap on a protozoa, that protozoa will be highlighted. A yellow circle will be drawn around it to aid you in tracking its movements about the screen and the camera will automatically keep the protozoa near the center of the screen. To stop tracking a protozoa, simply double-tap on a blank portion of the screen.
While in Survival Mode, your custom protozoa is always highlighted. You are not allowed to stop tracking it.
When the menu bar is visible and a protozoa is highlighted, the protozoa status bar will be displayed on the top of the screen. This will show summary information about the current protozoa - its age, life, hunger, sleepiness, and desire. If you tap on the downward-pointing triangle on the status bar, you can view all the chromosomes governing this protozoa's behavior. The chromosomes are applied in order, with the protozoa taking the first action that meets the condition. The current active rule in effect is highlighted in red. If no rules are currently in effect, no chromosome is highlighted.
While it is enjoyable to simply watch life play out in the world, it may also be fun to take an active hand in deciding what lives or dies. This is when the "finger of death" can be used. To use the finger of death, hold one finger on the electro-zap button on the menu bar and tap or drag another finger on the screen where there are things you want dead. A 20 pixel-wide swath of death will result, so if there's just one critter you want killed, be sure to zoom in first for better precision in your death-dealing.
The "finger of death" is not available in Survival Mode.
In Sandbox Mode, you have the ability to change many important details in this simulation. The following is an explanation of what each of these options does.
Choosing "Change the World" presents the following screen:
Deadly/Harmless: choose whether the Sun destroys things that touch it or not.
Gravity: adjust the strength of gravity in the world. The hiding spots will automatically adjust their orbiting speed so they remain in orbit of the Sun.
Radius: adjust the size of the sun.Hiding Spot Options
Radius: adjust the size of the hiding spots.
Quantity: adjust how many hiding spots there are in the world.Food Belt Options
Growth Time: adjust how quickly food grows. The smaller the number, the faster the growth, but a value of 0 means no food will grow.
Distance From Sun: adjust how far from the food growth area is.
Width: adjust the width of the food growth area.
Petri Dish Wall: toggle the barrier that prevents protozoa from wandering too far away.
Choosing "Protozoa Modifications" presents the following screen:
Number of chromosomes: adjust how many rules of behavior each protozoa has. Fewer rules leads to simpler behaviors. NOTE: adjusting this rule will cause a "reset" of the world and all existing protozoa will be destroyed.
Max speed: adjust how fast the protozoa can move.
Max energy: adjust the size of the protozoa's life meter. More energy means longer life.
Population Min: if the world population falls below this number, protozoa will be "spontaneously generated" to bring the population back up to this number. NOTE: due to the processing limitations of the iPhone/iPod, if you adjust this number above 100, you will notice a slow down in the speed of protozoa movement.
Population Max: The world population can not get larger than this number. If the world population reaches this max, protozoa are not allowed to reproduce. NOTE: due to the processing limitations of the iPhone/iPod, if you adjust this number above 100, you will notice a slow down in the speed of protozoa movement when the population grows above 100.
The "Defaults" button will reset the world settings to those when the app first started.
Below are some sample screenshots. Static images don't do justice to the dynamic movements that may emerge over time. A video demonstration is also available!
Software programming and design by Stormy Productions.
Visit us on the web at stormyprods.com.