barnholt.net > sw > species

About

species

species is an experiment in artificial life - virtual creatures that evolve in a simulated ecosystem.

Inspired by Larry Yaeger's PolyWorld, Karl Sims' Virtual Creatures, and genetic algorithms and genetic programming.

Download Preview 0.7 476K - Mac OS X 10.2

The Ecosystem

A creature's genetic code defines its behaviour and its morphology. Lives are short, but there's hope: the better a creature performs, the higher its chances of passing that code on to the next generation.

It's a harsh world: find food or starve. Starting as herbivores competing for the few plants around, some may turn carnivore, since other creatures provide more energy than plants. We're just the observer; which strategies survive is left to natural selection.

The ecosystem leaves room for complex behaviour: obstacles to hide behind, ways for a species to communicate. Over time we may see specialised species, predator/prey relationships, or whole food chains of ever-bigger predators emerge.

Screenshots

Movies

A few clips from the species universe (more on YouTube):

A sample "genome" (PDF) of a best-of-breed individual from one of the runs above is also available.

Project Log

  • Sep 2009 - integrated the Newton physics engine; the simulation looks a whole lot more realistic.
  • Jun 2009 - user interface rewritten in Cocoa; the collision system (a planesweep for 2D collisions) replaced with the free Newton Game Dynamics engine.
  • Jun 2007 - refined the sensors, simplified the global parameters, and prepared for multiple species; reworked the system into an asynchronous GUI frontend with loosely coupled components (ecosystem, GP, GA), moving from CodeWarrior/CFM to Xcode.
  • Feb – May 2005 - built the ecosystem and the creatures' bodies, senses and brains, reusing parts of earlier simulation and genetic-algorithm projects.