The Biomass Project: an artificial ecology.

Description

The Biomass project is best described as an ecological simulation. Individual creatures roam a cellular world collecting food, reproducing and dying; each controlled by a "brain" program written in a simple stack-based assembly language. Gratuitous screen shot:

The "mould" creature making a takeover bid.

Creatures

Here is a catalogue of more-or-less interesting biomass creatures, along with their source code. Any additions to this list are welcome.

Motivation

This project was inspired by an intrest in agent based systems, and the programming games RoboWars and CoreWar. I don't know of how much interest this is to biologists, but by programming various different behavours, and playing with parameters such as the food influx rate, you can observe what corresponds to metabolic rates, population cycles and population carrying capacities (he said, as if he knew what he was talking about). I'm sure if you put the effort in you could show preditor-prey situations and so forth.

For those that are interested in such things, the system is basically a bytecode intrepreter that runs a task, with it's own tiny stack and data, for each active creature (eg each bluish coloured pixel in the picture above). Tasks are schedualed in a round-robin fashion, with a context switch after each instruction. Different species are loaded dynamically and statistics of each species population and biomass are maintained. For creatures with high metabolic rates (ie low populations), it runs quite fast, but for a creature like the mould which can completely dominate the simulation it slows to a crawl (not suprising, since with a 100 by 100 simulation its executing 10000 concurrent tasks. On a Sun SPARC IPX the interpreter gets around 0.1 MIPS in this situation).

Availability

Ok, here is a tentative source release (updated 8th July 1996):

Tar'd and gzipped: Biomass.tgz (about 24K)

Zipped: biomass.zip (about 32K)

And here is the doc doc that goes with it:

Biomass text doc

The project is written in C (about 2000 lines), and has a textual (boring - only shows population statistics) and X-windows displays. Originally it was developed on an Amiga and had an Amiga display, but I lost that when my Amiga died. I've got versions working under Linux and SunOS. If you try it out, send me some e-mail to let me know how you get on. Version 1.0 should be considered as a very shakey beta release.

Plans for this project include porting to Java and having a web interface to a big perminant floating vivarium, where people could queue up a species to be dropped into the arena at the next vacency (ie extinction). Anyone ? Anyone ? (Beuler ?)

Any comments are warmly welcomed.