A roadmap for implementing auto-evo

Here is a roadmap for building out auto-evo. It’s come out long and I don’t want to burden people with reading but I wanted it for reference. Really happy with any and all feedback. I’m not saying we have to do this, just that I am reasonably sure this will work.

Here are the next steps as I see them.

  1. We need a good suite of diagnostic tools. I think we already have this half done. We need to have a screen which shows the results of each Auto-evo step. That means listing each patch with each species in them and what organelles they have and maybe more. So when we run the sim forwards we can see the state of the sim easily. This is probably more info than the player should normally see but we need it for development. I think a text dump is fine.

I think we also need buttons for advancing the sim 1 step without swimming and, for example, 10 steps without swimming. That way we can quickly iterate and check how things balance out over multiple runs.

  1. I think we should implement the population calculations with only primary resources (sunlight, h2s, iron, free glucose, are there others yet?). There are prototypes here and here and reasonable code here which can be adapted for this I think, so we are close already.

There are 4 tests which, when we run the system a bunch of times, this should pass. What I am expecting is:

A. each species should be patch appropriate. For example thakyloids should only develop in sunlit patches and not in dark ones. Chemosynthetic proteins should only develop in areas with h2s etc. The species should converge towards being well adapted for primary resource gathering.

B. The species should become small. The reason is that cost per individual is the number of organelles to the power of 1.3, meaning becoming twice as big reduces your population to 81% of what it was. Therefore, in a world without predators, it’s best to be a single resource gathering hex.

C. If we change this cost to the number of organelles to the power of 0.9 we should see the species blow up and become really large, becoming twice as big will increase your population to 107% of what it was. This is clearly not desirable but shows this parameter is working as expected, and therefore we can tune it.

D. The sim shouldn’t be doing any crazy nonsense over many runs from many people. If it works I think it would be good to distribute it to the community to really get it widely tested.

Once these are passed we will be in a really solid place and can build out the rest of the system.

  1. We need to think a bit carefully about the nucleus. It’s so expensive that it will almost always be best to take it out, so we need to balance that.

  2. We need to think about marine snow and have a system for computing how that moves.

  3. We need to think about scavengers and how there should be energy left over from dead organisms which others can harvest.

  4. We need to add predation relations and check again that the system is working robustly. I think the general idea for doing this is to have 2 rounds, in the first round primary resources are gathered, in the second round predator species steal from prey species. The inputs to this will be things like the number of pilus, toxins and flagella. This is complex and will need discussion.

  5. Adding more nuance and sophistication to the simulation. There’s loads of cool ideas in Nick’s Auto-evo thread along these lines. The basic problem is “how to get the simulation to match the experience of swimming as closely as possible.” For example in a pure energy model there is no reason to use a Nitrogen Fixing Plastid as it doesn’t give energy and costs energy to make.

Because this is a difficult engineering problem, as you can see, and I can’t do it all myself it will need to be done as a team. I think we will need good engineering discipline to accomplish it. It is easy to get lost. This means starting with something really simple and adding complexity slowly, backtracking if something isn’t working, lots of robust testing and when we see behaviour we don’t understand stopping and drilling down to why that is happening. It’s hard to have good engineering discipline and that’s why you do it.

I want to put some time into helping with this however my health is not so good and we will need programming and general discussion too. On the upside I think this could be a really good experience for someone to help with building a big piece of tech which would look great on a CV or application to university or whatever.

Anyway I hope this monster post isn’t too offputting. I’m inspired at the moment that it’s starting to feel like this is possible and we might be able to finish a stage, which would be huge for the project and me personally.

All feedback welcome.


I can see the need for this. I’ll open an issue on github.
It’s probably good to put this in the extras menu, named something like auto-evo sandbox or something.