I was designing a game, that while it wasn't about evolution, it was about exploration and DNA handling. It was designed to be a MUD or an online rogue-like since there would be no 'rooms' as a traditional mud.
If I am to design this rogue-like and program it, first of all, no stages at all. Continuous gameplay from beginning to end. Secondly, I think it's pretty sad and rather pointless to have a 'cell stage', specially for a rogue-like. And at last, all body parts and creatures should be player designed and shared. Creature statistics would be extrapolated from said parts and design.
I have a programmer's mindset for games, so when I design something I already have the program going on in my head, something most modern developers lack, they want something and put their slaves to work, ending up in crappy results. If you have ever seen a design team staff meeting, you will know what I'm talking about.
So, down to the programming goods. I will discuss body parts later, since we need a very very open design to allow freedom of design. I will start with evolution and classification. We need the system to understand what species are related to whatever other species we have, so it can in turn, add a random elements of evolution as time goes on. The best way to achieve this, with programming in mind, is to have an Object Oriented design. So a sub-specie inherits traits and body parts from a specie.
Real life classification goes like this:
Domain -> Kingdom -> Phylum -> Class -> Order -> Family -> Genus -> Species
But for us all it maters are object parent and children, so we can keep a very open classification design. I will start with an ant as example, since I think it's the smallest size we can begin playing with (unless you people really insist in having a 'cell stage'). So we start like this:
Object name: Insecta /* using real life class name */
Size: 1 /* arbitrary size number saying 'this is fucking small by default' */
Flags: Exoskeleton /* this is where flags like 'Vertebrate' and other meaningful things go in, we need to define these later. */
Body: None /* Nothing here yet */
Now, remember objects inherit data from its parent.
Object name: Apocrita /* Again real life stuff */
Parent: Insecta /* Inherits things from that object such as size, flags, etc */
Body:
|||
*##-@
|||
/*
* = Head
## = Abdomen (Alitrunk if you want to get technical)
- = Petiole
@ = Butt (or gaster, again, technical stuff)
| = Leg
*/
All (or almost, don't know) Apocritae share this body design.
Object name: Vespoidea
Parent: Apocrita
Body:
|||
>*##-@-
|||
/*
Added mouth/antennae/eyes/pheromone sensors/etc. The - at the end is a stinger.
Note that it should inherit the basic body shape, so players would only have to add
the stinger and headstuff. (even if I think the headstuff should already be in the
subclass, but this is just an example)
*/
And finally:
Object name: Formiclae (Ant, yeah)
Parent: Vespoidea
Body:
|||
>*##-@-
|||
/* The only real change would be the stinger becoming mostly ineffective. So the - at the end got replaced by a sucky one. */
Now the beauty of this is that, lets say, we want a wasp. All we have to do is:
Object name: Wasp
Parent: Vespoidea
Flags: Parasite Breeding /* Flags get added and could also be removed if needed */
Body:
|||
>*##-@-
|||
V <- Frontal view with lil wings added
/*\
And lets say we want a soldier ant, all we have to do is:
Object name: Soldier Ant
Parent: Formiclae
Size: 2
Simple.
And that's pretty much my idea for how to generate creatures. I will discuss body parts creation, handling, and stats next time, I have to go to lunch in a couple hours then work. And yeah, I will make sure it can handle pretty crazy chemistry stuff, like legs that can breathe methanol.