Disclaimer: I'm new to this, so take the below with as many grains of salt as you think prudent.
As I understand it, the steady state of pretty much all evosims, when run long enough, is one with exactly two species: one heterotroph and one autotroph. There's simply not enough diversity in the environment to support many species: two heterotroph species or two autotroph species are always competing for the same resources, and one of them will be better at getting them, and will win out. This is a bad thing if we want complex ecosystems to evolve.
We can create some diversity in the environment by running several sim instances connected by teleports. We can even create a "frontier" by making a bunch of sims in a row with gradually changing settings, ranging from easy-living to extreme unlivable conditions. Someone should try this; I think it will induce speciation as organisms emerge that can survive farther and farther into the frontier.
However, this is not enough; while a frontier like this might induce speciation, the two species won't mix; they will stick to their own habitats, to which they are best adapted, and repel intruders. We want to get two species to coexist stably in the same sim.
OK, how about looking at real life. In nature, animal species always differ in certain key areas, or they would compete too fiercely with each other and one would die out. Species distinguish themselves by things like
-what they eat
-where in the habitat they live (I.e., tree-dwellers and ground-dwellers)
-the size scale they live on (I.e., insects do not really compete with mammals, even though they may live in the same places and eat the same stuff)
-any other important stuff?
If two species do not share all of the above characteristics, they can probably coexist peacefully.None of these really work in DB, though (maybe pond-mode and/or gravity allows species to specialize in certain areas of the habitat?). The habitat is pretty homogenous, there is only one food (the veggie), and all bots are pretty much the same size. Perhaps we could create some diversity in food sources, though. Can an environment be created in which several significantly different autotroph species stably coexist? The competition between autotrophs is at least as fierce as that between heterotrophs: the species that is best at not being eaten will be the sole survivor.
Perhaps I simply don't understand how to set up a stable predator-prey environment in DB. In the sim I'm running I got frustrated trying to get a predator-prey equilibrium and took an easy way out by forcing total sim energy to remain constant, eliminating population spikes and crashes. This method, though, won't work if there are multiple autotroph species; one of them will still outcompete the other. However, if you have, say, two different veggie species and two different heterotroph species that each eat different veggies, it should be possible for each food chain to reach a predator-prey equilibrium. But I foresee problems arising when a heterotroph emerges that can eat more than one kind of veggie at least moderately well: it will hunt one veggie to extinction before its population crashes, and then you have lost the diversity in food sources and the whole sim will collapse to a two-species sim.
So why doesn't this happen in nature? Well, different plant species occupy different parts of a habitat; for example, there are different plants at different heights in a rainforest. This can't be all that keeps plant species from outcompeting each other though; how is it that many plant species coexist on the forest floor? I don't know.
So I guess what I'm thinking is that it should be possible to arbitrarily vary the sim settings at different areas in the sim, providing sub-habitats suitable for distinct species of autotrophs and heterotrophs. This is pretty much what inter-sim teleporters provide, but it is hard and ugly to set up teleporters to create many distinct subsims and gradually varying conditions.
Is it possible to modify the new bucket code to allow for different sim settings in different buckets? It would be especially neat if the settings could change over time.
Is the code at
http://opensvn.csie.org/DarwinbotsVB/ current?
</rambling>