Final Fork Update, and Auto-Evo Writeup

Rest assure that I haven’t just been lurking on the discord all these months; I just posted in the community forums with one more update to my forked version of Thrive. With stages being refactored again, and the shift to C++, I think this is a natural point for me to stop. There’s more work I could do locally, but at this point transferring code in either direction becomes increasingly difficult and I’m just writing a whole different game.

I’d love for other devs to give this version a playthough, since I think that over the last year I’ve been able to tighten up the gameplay loop a good deal with some simple changes. I’d love to spark a little conversation in our game design team about some of the assumptions Thrive has made over the years.

The biggest change that I most desperately wanted to take a crack at was a total rework of auto-evo. I’ve also made a detailed writeup on the solution for more consideration. I still firmly think that a naïve simulation will run into serious problems in later stages, but hopefully this doc and the prototype in the fork release will help demonstrate that there is another way. I was really hoping that I would be able to implement auto-evo in multicellular to really show off something that the random mutation algorithm is not going to be able to do well, but it turns out my fork always had a bug in saving in multicellular, and I was running out of steam anyway.

If anyone wants further explanation on things feel free to ask. I won’t be writing any Thrive code for a while, but I’ll still be around!


I’ll playtest your branch soon (maybe tonight) and interrogate you on how you changed my precious game loop.

I don’t fully understand the implications of your auto-evo write up, but I really appreciate the quality of it. I don’t know if I’d say I ever considered the outright removal of populations, but I do wonder if there is a better way to deal with things than how we currently deal with population numbers. Given how fundamental of a topic auto-evo is to Thrive, it is very important that we in turn consider the fundamental assumptions we have regarding auto-evo. Otherwise, we’d have to make the experience a lot more on-rail - which I am sure still would be fun, but would really change what Thrive is trying to be.

If there’s anything in particular you want a game designer to consider as they are playing, let me know and I’ll pay special attention. Thank you again, and I’ll communicate my findings soon!

Well given your comment I would put special concern on the population meter. You will observe that it still indicates results to the player, without giving a number directly.

Is this auto evo version implemented in your fork?

A challenge that I’ve thought a lot about is the “don’t get eaten” selection pressure. Fundamentally in a game about evolution, there should be evolutionary arms races where prey learns to fight off predators until they improve to eat the prey again. Thrive simply doesn’t simulate this at all.

Additionally simulating multiple creatures competing for the same prey species (Which is commonly observed IRL, so having a single creature dominate a creature niche really doesn’t make sense), is really hard to quantify in a fitness function, and is especially hard without performance hits.

Ok, this is the point where I actually finished reading the write-up.

Generally really good. My main critique about your opinion on population counts is, we need something that’s easy to understand that can be shown to the player, even if it’s actually meaningless to the sim.

Additionally, I’m messing around with c++ in godot. Do you think I should take a shot at implementing this in c+?

Yes, but it seems you figured that out. I’m a big believer in showing over telling.

You’re certainly welcome to! It might not be the simplest block of code in Thrive, but it’s fairly separated from everything else which would be a plus.

Looking at this again:

Would you mind listing most of these small changes? Having a list of small changes to test could be useful.

That’s fair, I probably shouldn’t have just dumped this so lazily. I think the biggest changes are:

Population is now calculated differently due to the auto-evo overhaul, and not displayed directly any more. No auto-evo predictor to give players unneeded stress that Darwin doesn’t love them, and your population count in game just gives enough info to answer, “is my species doing ok”

Cell walls now grant a better osmoregulation bonus, but zero base movement. You can still be a moving plant with flagella, but in general there are a lot more stationary life forms. In addition, the exchange rates of compounds have been tweaked to make it viable to be a grazer moving across the plant mats without having autotrophic capabilities, and plant predators are less viable (day/night cycle didn’t make it into the fork)

The bathypelagic and mesopelagic have been taken out of the patch map. I know of no scientific evidence that life took 300 million years to make it to shallow water, and I felt that the trip across those patches was dead time.

The pilus can cut organelles out of a microbe, giving the weapon a little flair.

Toxin can be shot in any direction, making it still usefull on slow-turning microbes.

I think that’s all the big stuff. You can always look at the github if you want more details.

1 Like