Cellular Evolution
About
Evolution has always been my favourite theme, and this is probably the oldest project I have. There haven't been much programming done when it comes to this project, but I do have a lot of base material and planning. I used to have a webpage where I wrote about and discussed the project, it may even still exist somewhere out there but I have forgotten what I called it and it's outdated now anyway so it doesn't matter.
This project is also one of the very few that has attracted outside interest. It's very nice to know that other people are interested and willing to help :D
Basics
This project is about the simulation and evolution of cells. Each cell is represented as a square on a grid and has the ability to move around. Controlling the cells is a signal/receptor/inhibitor system described by each cell's genetic code. To survive, a cell must gather energy from its surroundings. A base level of energy is provided by a 'sun', but cells may also attack and attempt to drain other cells of their energy.
Goal
The ultimate goal, one that I will be extremely happy to finaly reach at some point, is to get the cells to group and/or differentiate. That is, I want them to evolve into multi-cellular organisms. That is in fact how this project started; I was curious about the evolution of organisms and wanted a way to see and experiment with that kind of evolution.
Extended Description
The Environment
The environment the cells live in is a simple square grid. Each square may contain a cell, but only one and a cell is always on one square. Cells also have the ability to move around to a neighboring square.
Each square has an energy level. In the case of empty squares, this energy comes from the sun which continously resupplies the empty cells with energy, up to a predefined level. For occupied squares, the energy is that of the residing cell. When a cell dies, its remaining energy is transfered to the resulting empty square.
Different chemicals may be emitted by the cells. These then diffuse at a speed depending on the size of the chemical (small moves faster). The chemicals are also subject to decay, and will dissapear after a few ticks.
Movement
When cells move around, they push against any neighboring cells in that direction and if they have the necessary strength they will move. When a cell pushes against several other cells, it's strength is divided between all the cells and added to an accumulative movement variable. When this value exeeds one in any direction (+x, -x, +y, -y) the cell is moved one step and the movement variable is decremented.
While this is in no way "physically correct", it does provide a very nice compromise between simplicity and usefulness. It enables me to keep the simple grid system, while also allowing for creation of muscle like cell structures (e.g. a row of cells pushing forward).
The Cells
Each cell is descibed entirely by its genetic code, which is divided into two parts that descibe two different parts of the cell.
Physical Aspects
Each cell is a single square on a grid, but that square may have many different attributes:
-
Movement:
- All cells have the ability to move around, but they may have different strength.
-
Energy:
- Cells may have the ability to absorb energy from its own square and neighbors. This may be used both against empty cells (as autotrophes) or from occupied cells (as heterotrophes).
- Conversely, the cells may also have the ability to send energy to its neighbors.
- Cells may have the ability to sense the energy levels of its neighboring squares.
- Cells may have protection against its energy being stolen.
-
Identification:
- Cells may have antigens of varying length.
- Cells may have antibodies which respond when a specific antigen is present in a neighbor.
- Cells have a color, but the specific RGB values are determined by the genome.
- Cells may have the ability to sense the color of neighboring cells.
-
Communication:
- Cells may be able to emit different chemicals to the neighboring squares.
- Cells may have receptors that tell the amout of specific chemicals in its square and neighbors.
Behaviour
As stated above, I intend for the cells to be controlled through a signal/receptor/inhibitor system, similar to the body's hormone system. Whether or not this is what I use in the end depends entirely on whether I can device a good system for describing it in the genome and a good algorithm to compute it.
Algorithm
The simulation of the cells and their environment will no doubt become very processor intensive. Therefore I must create an algorithm that enables effective distributed computing. Hopefully, when this project matures, I will be able to borrow processing power from the university.

Comments