Ok. So. Thermoplasts.

Current Situation

Now that there’s a LAWK setting in the game, we need something to make it worthwhile this release, i.e. an organelle that isn’t available with LAWK turned off. I can already picture the many complaints about a button that does nothing otherwise.

Thermoplasts are the obvious candidate, partly because they’ve been on the backburner for years and partly because nobody can think of anything else.

@IceDjuro added thermoplasts in this PR over a year ago. There are two problems though: the merge conflicts with master are nigh on unfixable (at least for me, because I’ve tried several times) and I think we need to put more thought into the mechanics anyway.

After fixing a few issues with the original branch, I recorded this gameplay footage, mainly as a reference for myself so that I understand how the feature worked.

Thermoplasts and thermosynthase (a prokaryotic version of the thermoplast) produce ATP directly from the temperature gradient. There’s a (tiled) noise map representing heat overlaid on the environment, and the thermal gradient “compound” a microbe collects is equal to the change in heat between its current and last position.

Unfortunately, my issue with this system is that it’s not intuitive to the player. For them, there’s just an extra pink bar that goes up and down seemingly at random. To have something that players can have fun with, we need some visual indication of thermal gradients on screen.

I have an idea I prefer. But since 0.5.9 is scheduled for mid-July, it might be too much to design, create and test by then. So I also have a backup idea.

Photosynthesis Model (Backup)

This is basically how thermoplasts were envisaged until the extra design work last year.

Thermoplasts and thermosynthase act like chloroplasts and thylakoids respectively. They produce ATP at a flat rate which scales with patch temperature. Unlike chloroplasts, they have nothing to do with glucose, so a thermosynthetic organism could survive without glucose storage.

Meanwhile, Auto-Evo calculates the fitness of thermosynthetic organisms just as it does for photosynthesis (again with sunlight and glucose replaced by temperature and ATP respectively).

Since this follows the model of in-game photosynthesis, it would be simple to implement. It won’t provide much gameplay interest or variety though. Still, survival as a sessile organism in the vents would be somewhat novel, so if this is all that I can get done for 0.5.9, that’s enough to justify the LAWK switch.

Visible Heat Map (Ideal)

This is a modified version of the newer thermoplast design that I think would be much more interesting to the player.

Again, there’s a noise map overlaid on the environment to represent temperature. This time, there’s a button in the GUI to toggle its visibility. It would be invisible by default, but would be set visible when the player leaves the editor after adding a thermosynthetic organelle for the first time so they don’t have to find it themselves.

There are a few options for how to display it and some questions about its interaction with compound clouds, particularly iron and ammonia due to colour resemblance. One way to lessen the impact of clashes is to realise that areas of constant temperature don’t matter, only boundaries do. So we could try something based on contour lines, akin to a topographic map.

Keeping the visuals for the heat map to mostly lines should help distinguish it from the blobs of compound clouds. This is something I put together in a graphics program - it has five contour lines and their opacity scales with the level they represent. I have no idea how difficult this would be to do in code though.

A thermosynthetic cell constantly measures the temperature around its membrane. Probably using the same circular approximation to the membrane that compound collecting currently does, and probably only measuring at a few points (otherwise, you know, massive performance issues). It then calculates the greatest difference between the temperature at any two of these points. Multiplying by the number of thermosynthetic organelles (with thermoplasts counting for more than thermosynthase) then gives the total ATP generation rate.

The temperature of a patch determines both the average height of this heat map and its variance in height. So the vents for instance would give rise to more common thermal gradient boundaries with more extreme temperature differences than any other patch. Think the topography of the Himalayas versus the Sahara. So thermoplasts are much more effective in the vents than anywhere else, but can still do something in most patches.

I think Auto-Evo would have to ignore all this complexity though and function as it does in the photosynthesis model. That seems fine to me.

One big issue with this system - and a reason why it could take a long time to implement - is displaying all this information in the editor. What does the process display in the tooltip look like? How do you calculate the expected ATP balance when it can change so significantly in the environment? How do we modify this display based on the temperature in the patch, which will affect ATP generation but only indirectly? For the record, IceDjuro’s thermoplast branch doesn’t really address these questions adequately either, since a “thermal gradient” compound is hard to wrap your head around.

Overall, I think this system sounds pretty fun to play and a lot more intuitive. There are still some holes though, so I would appreciate people’s thoughts.

The Plan Moving Forward

Unless anyone has a better suggestion, my plan is to add the photosynthesis model thermoplast in the next few weeks, leaving the full version as an overhaul to make post-0.5.9.


Well this was the plan if we could find someone with enough graphics programming skill to make it.
Due to time constraints I think it might be just fine to go without these graphics for now, nothing in the thermoplast tooltip that a big part of the organelle is not implemented yet.

I think that a kind of “expected” amount of ATP (probably the same numbers auto-evo works with), should be shown in the editor. We need to make sure anyway that what auto-evo sees is close enough to the gameplay experience, so it should be a lso a reasonable indicator to the player of how much ATP production they can expect.

Quick and dirty shader for the latter idea:

assuming White in the noise image = heat, make it so that every so often from 0 → 1, you have the Alpha equal to 1 or the value of the noise if you wish, and the R value of the pixel (as in RGB in ALBEDO) treated the same. When I say every so often, I mean that as to say for example, at .2 and .4 and .6 etc in the noise image, there is red, but otherwise there is nothing.

If the noise isn’t a little animated or something might look kinda weird but that would match what you drew at least.

I think am “alternative photosynthesis” implementation is perfectly acceptable as a foundation, so feel free to settle for that if you feel pressed for time. Likewise, treating it as essentially photosynthesis in the eyes of autoevo should work fine.

Looking back at my latest designs, there’s a few things I feel I should revise as it seems that I posted it in a rush and failed to clarify many aspects of it.

  • ATP production should remain constant so long as you balance the gradient between the two brackets.
  • The brackets probably shouldn’t actually move, that might be a bit overwhelming to players, and we should try something simpler first.
  • Ideally, the “storage value” of the gradient bar should remain constant, and independent from cell compound storage.
  • Change in gradient should be a slow and gradual process, going into a cold region shouldn’t instantly drain it to zero and starve you. We should probably have a maximum delta value to prevent this.
  • Placing more thermo parts should simply increase ATP generation, but we could have upgrades available to make them increase gradient change rate as well so players have finer control over the mechanic.

I should probably just update and revise my concept when I get the chance.

Indeed, that was an issue we noticed, and is largely why thermoplasts ultimately got trapped in limbo in the first place. We sought to remedy this issue with a revised design and visible heat map when possible.

Excellent question, as the process of thermosynthesis is rather complex and unorthodox compared to your average cellular process, having much more to do with physics than chemistry. I pose the following;

+X ATP @ ∆Temperature

But perhaps that would be unclear to people unfamiliar with the concept.

ATP generation should probably remain constant in the ideal gradient range, and either just be set to zero or begin to quickly diminish when you leave the range. it will save us and the players both from headache.

It’s implementation as a compound was just a way to recycle existing mechanics for ease of implementation. It probably shouldn’t be presented as such to players…

It makes me very happy to see you interested in implementing the thermoplasts, so thank you for bringing this up. I realize now that my concepts from the time are rather messy and unclear, so I definitely need to take the time to revisit and revise my concepts when I get the chance.

Thank you for picking this up!


Now that we are done with the release of 0.5.9, I feel it is a good time to posit the latest in thermosynthesis game design. For now, I’ll settle with a simple outline of each element of the concept, as well as a couple potential upgrades to the base part.

The gameplay

The key to thermosynthesis is to maintain a steady gradient between hot and cold so that sufficient ATP is produced. In order to do this players will need to keep an eye on the status of their internal gradient, and navigate between different temperature zones to ensure constant energy production.

One of the most important visual indicators for thermosynthesis is the gradient meter, which keeps the player informed on the current balance of their internal thermal gradient. It needs to be clean, concise, easily referred to, and out of the way.
The latest implementation of the gradient meter was in the form of a 3rd bar alongside the pre-existing ATP and health bars which seems to work well enough, so I’ll focus the concept around that idea.

This bar will fill up at a constant rate as long as the player dwells in a hot region, and begin to lower when they are in a cold region.

The most notable feature is the section separated by a couple brackets in middle of the bar. This is the “optimal gradient range” where thermosynthesis will produce the optimal amount of ATP. It is this amount that will be displayed in the part’s stats in the editor.

When the gradient level exceeds or falls below the optimal range, the player’s ATP production will begin to gradually decline. Should the player not stabilize their gradient in time, they will begin to starve.


With this new requirement for energy production, players will need a reliable method of navigating between hot and cold regions, thus it has been suggested that a visualization of the temperature differentials be granted to players with thermosynthetic parts.

These mechanics will see the player cruising between hot and cold regions in pursuit of maintaining their gradient. An interesting departure from the more straight-forward compound collection of most other diets.

The systems

Thermosynthesis is an unorthodox metabolism, and so it’s important to simplify aspects of the feature to ensure it remains understandable and easy to use for all players, and even autoevo as well.

Rate of Gradient Change:

In order to ensure that thermosynthesis is not an overly frustrating feature, the rate at which a cell’s gradient changes should remain fairly constant. Something like a maximum of 0.1 Δ in gain and loss assuming a capacity of 100 within the meter.
This rate will not be altered, or only slightly altered by the addition of more thermosynthetic parts; A departure from other parts which typically increase the process speed of an organism. This is so that thermosynthesis remains consistent and reliable in the absence of larger sources of sustenance otherwise available for other metabolic sources.

ATP Generation:

ATP generation via thermosynthesis will always remain constant as long as the gradient remains within the “optimal gradient range”, only beginning to drop off at a constant rate once the gradient leaves this range. This gives time for the player to correct their gradient before they suffer the consequences. Placing more thermosynthetic parts will simply increase the constant amount of ATP production, at the cost of increased mass and reproductive cost.

The optimal gradient range itself remains as a constant region of the bar, perhaps beginning at the 25% mark, and ending at 75% of the bar. It should give the player plenty of breathing room to focus on the world around them, but still present a persistent need to attend to.


Unlike many other energy sources which simply require a sufficient amount of compound or the constant presence of an environmental condition, thermosynthesis requires a constant change between two extremes. This can make tracking the source somewhat tricky for autoevo, so simplification is likely within our best interests.

As Oliver has suggested, a good solution might be for thermosynthesis to behave just like photosynthesis in the eyes of autoevo. Only requiring sufficient temperature to function.

The science

In theory, thermosynthesis is mediated via special thermally responsive proteins that fold and unfold in response to changes in temperature.
When folded, the proteins clamp down on spent ADP, the kinetic energy of which forces the compound back into ATP. These proteins will refuse to release the ATP until subjected to a change in temperature, prompting them to unfold and release the now energized ATP molecule and be ready to repeat the process.
As a result, cells that rely on this theoretical process would need to constantly move between hot and cold regions of their environment to steadily power the enrichment of their ATP.

As you might gather; this is a highly inefficient and rather impractical process.

In Thrive, this process is intended to be simplified, so that it is more enjoyable and easier to understand. Thus instead of moving between hot and cold to regenerate ATP and then release it in cycles, cells will consistently be provided with ATP as long as they do not spend too long in cold or hot regions.


I think it would be a nice small nod to reality to make thermosynthesis work only if there is enough of a heat difference between nearby patches. Though, I can also see if we model the local heat areas in the vents patch, that kind of doesn’t make sense. But I’ll argue that that limitation makes sense as it will logically basically make thermosynthesis only viable in the vents which is a really hot patch located next to cold ocean patches. On the surface it’ll naturally not generate energy as the temperature differences between patches there will be much smaller.

1 Like

That’s a good approach. If we do limit thernosynthesis to be viable only under these circumstances, we should make it a very powerful yet very limited with range option. That could improve biodiversity, making these patches a unique environment.

1 Like