I’ve been thinking about the CPA system a bit and here’s where I’ve got to.
Objective: We want a simple, robust, system which reacts to the player and to the environment. We want to be able to dump a load of similar creatures in to a patch and have them adapt to be more fit in that patch. We want two branches of a species that become separated to evolve to be different. We want to be able to control this system to make it easier or harder on the player.
The original prototype I made is very complex and hard to control. It’s not very robust, it’s easy for it to take all the organelles away from all the cells, for example. Here’s an outline for an alternative system which I think might be better.
A. In each patch there are a series of buckets, one for each compound. The environmental compounds (CO2, oxygen etc) are periodically refilled. The finished products compounds (agent, DNA, fat) are periodically (slowly) emptied.
B. Every species is selected in sequence and given an action. It is decided at random whether they produce or interact with another species. If you have more flagella you are more likely to have an interaction.
B1. If you produce you choose one of your production organelles at random and check to see if there is a gradient between the buckets (so if you picked a chloroplast you check to see if there is more CO2 than sugar in the patch, which there almost always will be). If there is a gradient you move some compounds from one bucket to another and get paid some “points” for doing this.
B2. If you interact you pick another species at random in the patch. If you are stronger than them you take some of their points, if they are stronger then they take some of your points.
C. Any 2 species which are “too similar” lose some points.
D. Each species pays some points for each organelle it has (to penalise being too big).
E. The points are then counted, the number of points you have is your population.
F. After this has looped for a while Auto evo makes 5 copies of the patch, chooses a species, and makes 4 alterations to it (in one copy it remains the same as a control). This is then left to run for a while and the best copy is chosen to be the remaining one.
G. Species and compounds are moved between patches in the world etc etc this is probably another thread.
So as you can see this is a much simpler system however it has some nice features. Firstly the species will adapt to the patch. As you have to pay a fee for each organelle you have then it’s not worth having ones which aren’t helping you either produce or fight. Secondly the species will adapt to each other. In B2 when there is a simulated fight having the right agents which work on a specific other species will really help you succeed. One fo the adaptations auto evo can offer is to change an agent code and B2 interactions will let the system know if this is better or worse.
The penalty for two species being too similar is just to keep the patch interesting (it’s lame if 2 species become the same because then it’s not really worth simulating both) so it ensures good gameplay.
Having more flagella (and faster movement in general) giving you more interactions vs productions means that predators will tend to be fast and produces will tend to be slow. I think this is nice and will look good, however doesn’t take account of things like carnivorous plants and deer. However I think, in the simulated battles, there will still be an advantage to being mobile when another species comes for you. We can tweak things if we like.
Again on the issue of adjustability I think it’s not too hard to see how to let the player adjust this. So if you change the time between auto-evos it makes things easier and more stable. You can give the human player a boost or handicap in combat.
I was hoping to have time to make a prototype but I haven’t and won’t for a while. However I hope it helps to see this and maybe someone else will be inspired by it!