Ecosim is a sandbox virtual life simulator for GNU/Linux, written in C and OpenGL. It provides a virtual environment in which simulated living agents are able to co-exist within a greater ecosystem. Over the course of a simulation run, agents continuously adapt and evolve in order to survive the ever-changing environment. This results in a diverse population of artificial creatures inhabiting the simulated world.
The inhabitants of Ecosim possess all the hallmarks of biological life. Consumption of matter is required to fuel their bodies, allowing them to grow, move and reproduce. Asexual reproduction occurs via a splitting process once certain criteri is met. An agents genetic material is cloned upon splitting; however, occasionally slight mutations occur. With only the best mutations being able to survive, a process of natural selection begins and new creatures are gradually conceived, giving rise to a process of evolution.
This process of evolution is influenced greatly by environmental factors. For example: when food is sparse, slower-moving, energy- conserving lifeforms tend to thrive. As evolution progresses, agents adapt in unique ways and various behaviours and survival techniques emerge. Whereas some begin to cluster into groups which work as a single, multicellular organism, others act alone, operating independently as unicellular life.
The evolution of agents is achieved via a genetic algorithm. Each agent possesses a data structure which represents its DNA; values that dictate exactly how the agent will behave within the simulation. These behavioural traits include metabolic rates, dietary preference and flocking (clustering) behaviour.
As this is a sandbox style simulation, users are encouraged to experiment as much as possible. Interaction is achieved in a number of ways: from a simple mouse click to a more laborious editing of game parameters. Modifying these parameters allows users to shape environmental factors, agent behaviour, and the rules of evolution. The simulation was written with the intention to inform a wide range of people on the intricacies of ecosystems. By providing both simple and more complex ways to interact with the simulation, nobody is excluded. The program graphically illustrates concepts such as survival of the fittest, overpopulation and the butterfly effect in a way that attempts to be aesthetically pleasing and interesting. These concepts are also illustrated via optional graph plotting functionality, providing statistical insight for users interested in gaining a more in-depth understanding of the topics.