Resetting the world between generations

I think this is the first dedicated topic to this idea. It has been brought up multiple times in the past, and there’s even an implementation PR now. So I wanted to put my thoughts into a single post.

Basically Thrive has for a long time now kept the player’s immediate surroundings between generations to make sure the previous life of the player actually mattered and to increase the “smoothness” between generations. So this design has two benefits I see: players have to consider when to go to the editor. For example if they are next to a resource cloud they can tactically go to the editor to get a good start for the next generation. Or by slowly accumulating compounds if there isn’t a good resource cloud the player can prepare their next life to be more useful. And finally if there’s hostile predators or some other threat the player needs to consider trying to get away before reproducing as otherwise they’ll still face the same threat in the next generation.

The second benefit is that it increases the fluidity and cohesion of the game. I do not want Thrive to be like S***e where the player just teleports ahead in stages with huge jumps and no cohesion between the steps. So I don’t want Thrive to experience the same problem of feeling like just disconnected minigames.


So after multiple years of people arguing for the other position (resetting things between generations so that they are disconnected). I’ve come to the acceptance that I would accept such an option in Thrive. This is based on the reasoning that scientifically it doesn’t make sense that the immediate surroundings of the player get teleported along them 100 50 million years into the future. So while I want the game to have continuity between generations, I can also accept the opinion that we should make it more realistic as the player is a great great great great great… offspring of their previous self and has no direct connection. It’s not too bad to have two modes: continuity and world resetting as both would need balance and gameplay testing often.


With the general topic introduced and out of the way, I wanted to also discuss a problem that has come up with that PR trying to implement this option.

The problem is related to keeping some of the stuff from previous generation, which I don’t really like. Because the whole point of this idea is that as you are teleported into the future none of the previous stuff matters. But the implementation, as I understood it right now (I haven’t read the code yet), will take into account compounds from the previous life. It doesn’t make sense that one particular facet of the player is kept across the time jump. I think it should be all reset or none of it reset (I know the problem of switching patches, but that’s a gameplay concession due to players not understanding the ability to stock up on resources, which is something I don’t want to get bogged down by in this discussion).

Fundamentally I guess I could accept different variants of world reset, but I think the extreme testing cost is making this implausible. For example if we let the player customize everything that might be kept or reset. Like instead of a single checkbox for this feature, we had a list of checkboxes for the player to check whatever they want:

  • Keep player compound across generations
  • Keep player engulfed matter across generations
  • Keep NPC cells across generations
  • Keep chunks across generations
  • Keep terrain across generations
  • Keep compound clouds across generations

Those make 2^6 = 64 combinations. So testing all combinations and making sure game balance / difficulty is reasonable is going to be basically impossible going forward due to our very limited testing resources. Basically whatever Mr. Productions is going to pick is going to be the only well tested combination…

So as a result of this, I think the world reset option, which should be just one, has to be a total reset.

And to be clear (this is a bit of a specific comment on that PR I linked), the initial compounds has been calculated to be the reasonable starting compounds for the player when starting from nothing for them to survive. So if we make it so that the player cannot stockpile resources in a previous life, I absolutely think we have to give at least that amount of resources to the player to start off a blank slate life, and no compounds should be taken from the player to give them less than the starting compounds we have calculated as suitable to begin a new life (after respawning). So I believe the same has to apply to the world reset option as well.

2 Likes

To make clear what the PR actually does:

It adds an option to have the environment (NPCs, clouds, chunks and terrain) always reset, instead of only resetting when the player moves to a different patch (or dies and re-spawns).


Somewhat coincidentally, there is an existing setting for what compounds you start with after the editor:

  1. Keep All: You get exactly the same compounds from before the editor.
  2. Split With Sister Cell: Keep half the compounds from before the editor.
  3. Always Top Up To Initial: Keep half the compounds from before the editor and “top up” any low compounds at least to a calculated minimum amount.
  4. Top Up On Patch Change: Keep half the compounds from before the editor and, if you moved to a different patch, “top up” any low compounds to a calculated minimum amount.

(The tooltips in-game are a bit less clear than this)

So that’s essentially the questions:

  • Do you keep half or all of your previous compounds.
  • Do you get a “top up” never, always or only when moving to a different patch.

But combined in the way that all compounds automatically means you “top ups” are never. Also note that carrying over compounds currently always happens, the question is just “how much?”. Perhaps also good to mention is that when you die, regardless of settings, you just get the “top up” amount of compounds.

Option 4 is the default on Normal mode.

The change in this PR:
(coincidentally by using the existing code), always resetting the patch means that option 4 gets triggered always, so option 3 and 4 become the same.


To re-iterate the problems with not resetting the environment in my view:

  1. It does not make any sense for you to be in the exact same situation millions of years later. The terrain should not even be the same. (this is the main issue pointed out by Hhyyrylainen above)
  2. In particular, Chunks and clouds can stay around for many generations after the patch map system says they should be gone. This regularly leads to confusion among players, and leads to inconsistency between auto-evo behaviour and how your species does in-gameplay. Similarly, but much less problematically, newly added resources don’t show up unless you move away from the starting area.
    This directly undermines systems for patch conditions changing over time, including patch events.
  3. Finding a resource rich spot is much too great a benefit because you can live off it for many generations in a row. Large Iron chunks particularly come to mind here. This devalues for example mobility and chemoreceptors. This balance effect is also inconsistent because the world does get reset when changing patches. Not to mention dying and re-spawning suddenly changing things.

Point 2 in particular just feels like a bug to me, while point 3 is a major headache for balancing. I also expect all three of these problems to get significantly worse in Macroscopic/Aware, where environments get more recognisable. So you’ll understand that I mainly see making “always reset the environment” an option is mainly a compromise to get in the game at all for when we reach that point.


Notably, you keeping half of your components in the next generation does not cause problem 2 at all, and only a minor effect on 3, because the benefit is smaller and capped).

Problem 1 obviously is there to some degree, since it means something carries over directly between generations, but I can personally easily hand-wave it with “if you collect a certain amount of compound before reproducing, the parent of your next incarnation does the same.”

So I am by no means married to allowing you to keep carrying over compounds despite resetting the patch (it would also remove the sometimes awkward balance between editor exit and “re-spawn after death” as well as get more eyes on whether the initial compounds are balanced well). I just think that it doesn’t conflict with fixing the aforementioned problems, while keeping the positive sides of reward for playing well in the previous generation.
There is of course also the opposite with being punished for not keeping any compounds around, but that would be disabled on Normal since you can currently already bypass that by changing to a different patch. It’s also of questionable value since getting your initial compounds is just a death-and-respawn away.
There is also the part where some of our Reproduction Types (or plans for expanding on them) might rely on using carried over resources (unless we rework the initial top-up system to handle that also).

Of course, if we don’t carry over any compounds, that automatically means we always need to use the top up system. Which creates tension with the other setting which needs to be resolved.

If we do allow compounds to be carried over, than functionally the other setting works fine right now. But the information is misleading and two options do the same.


I just want to point out that S***e specifically does maintain consistency between generations, to the point that an aggressive species or Epic attacking your Nest is still going to be there after returning from the editor.

And yet, I must apologise because I can’t fully ignore it, because it is a balance and design factor that strongly affects how the world works right now. (hence why I mentioned it above).

The fact that the default setting is “Top up on Patch Change” and the patch does always reset on moving between patches means there are two very different test and balance cases, without changing any settings.

I understand you’re just trying to demonstrate the problem of having too many options, but let’s look at something closer to the situation you’re proposing in combination with this PR:

(While staying in one patch:)

  • Keep player stored compound across generations.
  • Keep environment (NPC cells, chunks, terrain, compound clouds, engulfed matter) across generations.
    (engulfed matter is the odd one out here, because it’s somewhat “internal to your cell”)

The second one is a package deal in my opinion, and I don’t see anyone asking for these to be separated.

To be honest, part of your thoughts on keeping compounds also confuse me, because “keeping compounds yes/no” is not actually an option in the game right now? Our current settings are mentioned at the start of this post. And I’m not exactly promoting making it a separate setting.

I would sooner ask why we still have a “keep all compounds, but you get no top ups” option. The “keep all” part makes it easier than all three other options, while the “no top ups” part makes it more difficult.
(This whole setting might need some clean-up now that we’re not always talking about cells, and different reproduction types might alter how many compounds are transferred. It might be better to make this setting exclusively “top up on editor exit yes/no/on patch change” with “kept compounds amount” just being “whatever we say it is based on reproduction mode”)


In Summary

I think having the option to always reset the patch is important, and I don’t think we’re in disagreement on having it. So the question just becomes on what to do with being able to keep compounds from the previous generation:

  • We keep compounds from the previous generation.
    What needs to change:

    • “Top Up On Patch Change” needs to be renamed to “Top Up on Patch Change Or Reset”, or Top Up On Patch Change needs to be disabled if **Always Reset" is on.
  • We don’t keep compounds from the previous generation.
    What needs to change:

    • The whole “Compounds on editor exit” selection needs to be disabled if **Always Reset" is on.

Of course in both cases also the underlying code for the spawn handling, but I have less concerns about that than the UI.

To allow the player to experience not getting free compounds as by magic.

Well, it’s kind of a “why not” kind of deal. The prime option is the split remaining compounds with the sister cell option.

The reason why the other options exist at all is a gameplay concession towards easier game.
If this is going to be used against me in this discussion I’m kind of now regretting giving that option to the players.

I’m not going to accept the only world reset mode to be “reset world except player’s compounds”. So this already necessitates 3 modes:

  • world does not reset, players compounds are carried forward (optionally giving the player magical free compounds)
  • world resets
  • world resets but for some reason player compounds does not.

So we are already at 3 options required.

Funnily enough if we were to allow the player to keep their engulfed matter, they could then eject it and voilà there’s now a potentially extinct cell again in the environment.

I think a world reset should actually mean a world reset. And that the player entity is totally destroyed and nothing in it can be carried over. I think the world reset PR should always totally delete the player entity to avoid any bugs related to any data carrying over. One step further, we should have code to hard delete every single entity in a simulation and calling that on the world upon returning from the editor in the world reset case. This way it is always a clean slate.


Okay, we can agree on this.

But one of these options sounds like a lot more work than the other and a potential death spiral for the player (getting just half of the intended minimum compound amount should not be an option the player is allowed to select in any situation).

1 Like

Ah, yes. That’s a problem, let’s not do that. It makes sense to me now why it’s set up as it is right now.

Not really meant as an argument against your view in this case. I was more just wondering, since to many different use-cases is a test and balance concern, there were some other options around that might not be worth their cost in their current form.
In this particular case because it combines the “how many compounds are preserved” and “when do you get top ups” questions a bit awkwardly. And because Reproduction Methods should also affect how many compounds are provided.

I personally still don’t see the necessity of the “resetting compounds along with the world”. I do not see any demand among players for it appearing as long as “top up” exists, while there is clearly demand for not resetting the patch at all. I expect that with these three options available, option 2 would see the least use.

But if you insist, I then lean more towards not having “world resets but player compounds does not” as an option at all to reduce the number of selectable options. Or otherwise the new switch needs to become another drop-down, I suppose.

Though really, the main thing here is that “remove compounds on leaving the editor” is functionality that does not exist yet. The “reset the world” part could just re-use what already existed for changing patches. Will take a bit longer, but should be fine.

This part, I have to say I do not get. As far as I am aware, nowhere in the current version of the game, the PR or in the changes proposed here, should you get half the intended minimum compound amount. What am I missing here?

Speaking of “more work,” right now I am just using the same code that is used to reset the world when moving patches, which has all the same requirements, outside of those relating to the player organism. What you’re suggesting here goes substantially further in resetting the environment for no clear reason? If it’s necessary, I think it applies to the “move to a different patch” case as well.

Well I didn’t really want to put each part of that feature as separate option as then again the combinations of possible options would get large, and require a bunch of testing. So I made presets that cover, what I think, anyone might want to use, and then I implemented and thoroughly tested all the options.

I’ve not yet read the code, so I didn’t know.

In my opinion this feature is a totally new one and should get a totally unique code path for resetting the world. And not rely on patch change codepath as it wasn’t designed for this.

I’m somewhat sure that moving patches doesn’t clear the player ingested matter. And it definitely doesn’t reset the player entity.

In hindsight maybe that should use a different code design, but that code was made as an extension of the gameplay, it was meant to only apply the settings that are different between the two patches to facilitate moving patches. It wasn’t really originally designed to reset things…

Also at one point in time I was writing code with the assumption that the player entity always exists and stays the same. In fact it wasn’t until the ECS refactoring that upon dying the player object is entirely destroyed and a fresh identity is created. I think that’s also a factor why the patch switch code is written the way it is. Of course now with the ECS approach we can destroy the player entity when we want and make a new one, but that wasn’t always the case.

Anyway what I’m trying to say is that the patch switch code isn’t like I would write it from scratch now, and thus I think a new feature should be designed without historical baggage and use code that is fully aligned to its design.


Also I wanted to say that decoupling “selfishness” from “topping up” compounds could be done, but then specific combinations wouldn’t work with world reset while some do. So it would be a pretty complicated thing.

Like selfishness of “split with sister” (whereas the other option would be to “keep all”) would be incompatible with “no top up” when using the world reset option (as this is the case of getting just half the compounds needed to survive). But if world reset is not on, then those two options would be compatible. And of course when world reset is on then the “top up always” and “top up on patch change” are functionally equivalent options. So how to design the new game setup UX to make sense to a player is a bit of a problem in my opinion.

So this kind of “unexpected” and quite unexplainable to the average player, interactions is what I’ve wanted to avoid by having just one world reset mode available.

1 Like