Environmental Tolerance Adaptations

Alright so after reworking the GDD a little bit, I’ve decided I wanted to approach this concept once again, but this time my intent is less about bringing new ideas to the table, and more about narrowing down our scope in preperation for an initial implementation of the feature.

I find myself largely in agreement with the above write-up by Deus. Though I feel it could be taken in a different approach. So the following post assumes things will be roughly moving in that direction mechanically.

For sake of balance and prototyping, I think it best to start small and simple so we can get a feel for how environmental tolerance will play out for both the player and autoevo. Atmospheric gas tolerances should be left out until after dynamic compound changes are implemented and balanced. And adding too many environmental conditions at once may be a lot of work for a first prototype, especially if we decide to omit certain conditions.
As such, my focus will remain on two constant and stable conditions in the environment; Heat and Pressure.


Temperature:

Likely the most variable of abiotic conditions, temperature has a range of both extremes in Thrive. The larger a cell is, the more temperature can impact their livelihood, and thus living within extreme environments can be very difficult for anything but the simplest extremeophiles.

I am personally unsure what the basic ideal range without adaptations should be, so after some brief googlefu I am going to assume an ideal range of 5-30C for all non-adapted life. Once outside this range, penalties will begin to apply, which means that outside of a few surface patches, larger organisms may need to make a few special adaptations to truly Thrive.

In life, temperature plays a major role in the metabolic rate of species. So outside of your ideal temperature range, your processes should probably slow in Thrive too. This can be done by adding a modifier to the process speed value of processes. It will likely be best to start with increasing by 0.002 increments for every digit outside of ideal tolerance. Glycolysis would be running at 86% speed in the vents.

However, should this prove to be difficult to balance, or otherwise difficult to implement; We can always fall back on the standard of increased osmoregulation cost.

Pressure

Unlike other conditions, pressure is the least likely to change outside of moving between patches. It becomes less extreme the closer the player is to the surface, becoming an excellent motivator for pushing players to surface environments (And closer to where they need to be to progress) as they become more complex.

The basic ideal range shall be 1-30 bar, with any deviance outside of this range providing a 0.001 increase to the overall multiplier to what size contributes to osmoregulation.
Outside of the aqeous environment, I suppose it becomes inverse, with a range of 1-0.5 with similar extremes of scaling. But that’s a problem for later down the road.


Starting in the vents, these conditions might be substantially restrictive to cells any larger than a small little bacteria until they evolve the right adaptations, which is precisely what we want. To thrive in such a hostile environment is to adapt and specialize for it, otherwise you best make your way over to calmer climes.

Whatever the case may be, I think it best to prototype this feature and get a feel for it so we can better decide on it’s future.
Once we get a prototype going, or perhaps just later, I’ll need to get around to determining hints and identifiers for communicating to players the importance of conditions. I believe the editor helper will be of great assistance at this point, as well as additional conditional identifiers per patch.

To summarize:

Temperature:
A * (1 - B) = Final Process Rate
Where A = Initial Process Rate and B = additional 0.002 per value beyond range of 5-30.

Pressure:
Size * (1 + A) = Osmoregulation Modifier
Where A = additional 0.001 per value beyond range of 1-30.

Note that these values are not to be considered final, and are just to act as a starting point for initial implementation and testing.
I would like to hear everyone’s thoughts on this.

1 Like