Compound Rebalancing


#3

Actually those were my initial thoughts too, but I think the complexity lost is not necessary complexity and there’s enough complexity in other aspects of the stage to fill in for that.

On the other hand though the more I think about it, I don’t think it would be a good idea to make oxygen and carbon dioxide passively absorbed. Instead I think it’s better if they are just made as large clouds that are quite dilute but common. This way glucose is typically the limiting factor to ATP production.

I think this would be cool because it would parallel the Aware Stage as well. Oxygen would be like water, a common resource that organisms need but don’t usually have to search too hard for, whereas glucose is like food, which is more something you need to hunt for. Sometimes though, oxygen (like water) will be rare or run out and then you’ll have to hunt for that, which could potentially be very dangerous with glucose levels being low.

On the topic of plants, even if carbon dioxide was common they would still be limited by the presence of light/heat spots and cells who hunt other cells (since plant cells would usually contain the most glucose). Plant cells would likely be hovering around light/heat spots, occasionally moving if the spot moves and occasionally facing predators attacking or shortages of carbon dioxide. This would also incentivize the cell wall (and by extension lack of motility organelles), because these cells would be usually parked in one place and wanting to have protection from attacking predators.

I’ll try to modify the mod’s values to make oxygen and carbon dioxide common and glucose and ammonia uncommon to show what I mean and we can see how it plays. Unfortunately I think the spawn rate of clouds is a universal variable though. I’ll check it out.


#4

We’ve recently been having some more discussions about how to streamline the compounds present in the Microbe Stage. Here are some of the main points raised (please fill me in if I missed any). Let’s discuss these and try to answer them all:

  1. Remove oxygen, carbon dioxide, and other dissolved/atmospheric-oceanic gasses as compound clouds, and instead make them features of the environment (like light and temperature).
  2. Create some clear roles and relationships for the compounds. What do we want the typical diet to look like? What role do we want these compounds to play in the ecosystem?
  3. Add phosphate as an additional compound required for growth/reproduction
  4. Remove amino acids, fatty acids, and nucleic acids as the intermediary building blocks of a cell. Just have the nutrients like glucose, ammonia, and phosphates (if added) directly lead to building and growth.

Here are my thoughts on these different ideas.

  1. I think this is a good idea because these gasses are widely distributed and don’t appear in discrete quantities. Fluctuations in gasses like these occurs across biomes over long periods of time, and should be more related to environment effects and natural phenomena (like an Oxygenation event mentioned in this thread). Also gasses can be assumed to very easily diffuse in and out of a cell and would never be stored in vacuoles. Compounds like glucose, ammonia, and phosphates (if we add them) are the real limiting nutrients in microbial environments and those are the ones we should have the player worry about. Oxygen and carbon dioxide should just scale the reaction rate of processes that use them.

  2. I think this is very important. Let’s define a compound as a energy nutrient if it produces ATP for the cell, since ATP is used as the energy to do things like move, and let’s define a compound as a growth nutrient for a cell if it needs it to grow/reproduce/heal.

    • Glucose should be the main energy nutrient for most cells. Anaerobic cells turn glucose into energy via fermentation. Aerobic cells do it via respiration. Glucose is kind of common and is basically what you need to survive and create energy (ATP) to do things.

    • Glucose coupled with ammonia (and phosphates if we add them) is for growth. This applies to all cells, no exceptions. Though glucose is kind of common, ammonia and phosphates are harder to find, so they will be the limiting factor for growth.

    • This means for most cells, Glucose => Energy and Glucose+Ammonia => Growth. This is typically done by hunting for clouds or preying on other cells.

    • The one unique exception is biosynthesis, which means cells that produce their own glucose or even ATP directly. These cells are not well adapted to hunting clouds or cells (like plants on Earth) and instead try to produce their own energy. Photosynthesizers use light to produce glucose, and then use the glucose to make ATP. Chemosynthesizers can use iron, manganese, hydrogen sulfide, methane, etc. Some chemosynthesizers don’t even make glucose, they just make ATP directly. This serves them fine for producing energy, but it means they lack glucose for growth, so they need to find another way to obtain glucose. In these types of cells, you have a slightly different survival formula from above, for example:

      • Photosynthesizer:
        Light => Energy (Since light is used to make glucose)
        Light+Ammonia => Growth
      • Iron Chemosynthesizer:
        Iron => Energy
        Glucose+Ammonia => Growth
  3. I think that’s a good idea. As long as it doesn’t make things too complicated (like gameplay or AI or UI). Plus it can help slow down how quickly cells reproduce since they’ll need to collect ammonia AND phosphate.

  4. I would like to be able to do this but here are the problems:
    A) You specifically need certain amounts of all three to reproduce. You can’t just use a bunch of fatty acids, it has to be a certain combination of fatty acids, amino acids, and nucleic acids.
    B) You can’t just combine them into a common compound, because each one is made of different components. Fatty acids are just made of glucose. Amino acids are made of glucose and ammonia. And Nucleic Acids are made of glucose, ammonia, and phosphates (or something with phosphorous) (also Nucleic Acids are currently not represented in the game right now).
    C) Fatty acids, amino acids, and nucleic acids all occur naturally, especially during the early part of the microbe stage (and before any oxygenation events). Absorbing them is a quicker way of growing your cell because you are directly consuming the building blocks, instead of the precursors to the building blocks. It’s one of the reasons the early primordial soup bursts with so much life and promotes the formation of the early cells in the first place.


#6

After thinking about it more and getting some feedback on Slack:
4. I am fully in support of removing amino acids, fatty acids, and nucleic acids (though the biologist in me is sad) and simply assuming they are there as intermediaries in any situation that would normally have used them. To address 4C, any instances of amino acids, fatty acids, or nucleic acids appearing in nature will instead be replaced by an equivalent amount of their precursors (glucose, ammonia, and phosphates) appearing in nature. This effectively cuts out three compounds from the list we have to track and teach the player about which is a big load off of the shoulders of the player, the AI, and the UI.
3. Because we are removing those, I fully agree that we should add in phosphates as one of the nutrients needed for growth. This makes the common set of nutrients any microbe needs for growth to be glucose, ammonia, and phosphates.

EDIT: If there are no objections to 3. and 4. I’ll add them to the current concept on the wiki.


#7

I’ve been thinking about this stuff some more.

Firstly I think, from a technical perspective and just talking about where we are at right now, I think it makes sense to simplify the model we are using for compounds quite a bit. For example if we just had

glucose + o2 -> atp which is used for flagella and
ammonia + glucose -> growth

then that would make the system much simpler, but I’m not sure the player would notice the difference. The complicated system we have in the background does basically this so if we take it out I don’t think it will change the experience, but will make it much easier for us.

The big advantage of this is it makes things much easier to balance. As an example we could balance it so that if you have 1 mitochondria per flagellum then you can swim indefinitely, you are a marathon runner but your cell will be reasonably slow (to carry all the mitochondria). But if you have more flagella than mitochondria, say 5 to 1, then you would be a sprinter, you would have to stop and wait for some atp to build up and then you could burn it really fast chasing down fast prey that came close. It also makes it easier to balance growth so we can control the length of a run more easily.

Secondly I agree that I think taking out o2 and co2 would be a good thing to try out. We can see how it feels without them.

Thirdly I really like the primordial soup idea. I think it’s a great example of where we can expose the player to something very scientifically deep in a simple way.

I am a bit concerned that having 5 compounds (ammonia, phosphates, amino acids, fatty acids and nucleotides) that all just make the cell grow is reasonably redundant. I’m not sure it adds much gameplay to tell people “swim around and eat any of these you can” but it does add a lot of complexity.

We could just offer lots of glucose, ammonia and phosphates at the beginning as the primordial soup. However that makes me scientifically sad too. I do feel we are genuinely losing something if we take all references to amino acids, fatty acids and nucleotides out of the game.

One intermediate option is to make a “primordial soup” compound and tell the player what is in it during the tutorial. Maybe that gets us some of the way there.

Another option is to leave in FA, AA and N and just have the player swimming through a rainbow coloured world. To us time square is bright with billboards and adds calling for our attention, maybe to a microbe the water looks the same, it’s full of signals and ideas.

I am not sure about this. I’d be interested to know what everyone else thinks. I guess it’s one of the core balances we have: how much science to include without the game becoming bloated and overly complex.

I think there is another issue of how we are going to represent agents. If they are compound clouds which are differentiated by colour then we need to think about how many colours will be on the screen at the same time. If they are not differentiated by colour then we should discuss how to represent them.


#8

With your first point, I completely agree, and I think that’s exactly the way the player should look at it.

On your third point, I do also really like being able to have a primordial soup that is filled with amino acids, fatty acids, and nucleic acids that the player is slurping up and quickly growing and reproducing with, but I think mechanistically it adds too much complexity onto the game (because you’ve got those three plus glucose, ammonia, and phosphate, and that’s just for growth).

However, to make up for it I think it’s something we should explain in the tutorial, and more thoroughly in the Thrivepedia. We could say what the role of the three acids are in real life, why we didn’t include them in Thrive, and how they are assumed to be acting behind the scenes as intermediaries while you are playing. Then hopefully the player could imagine that this process is taking place as they play even though it’s not burdening the gameplay or the UI.


#9

Yeah that all makes sense. Another interesting thing is that if growth is a single thing then we can measure progress as a percentage of growth required to unlock the editor button, which should help with gui design.

I also think that reducing complexity here means we can have more complexity elsewhere and get more depth out of it.

So here’s a concrete summary of what we are talking about:

A. remove o2, co2, amino acids, fatty acids clouds and add a phosphates cloud

B. each tick:

if there is glucose available each mitochondria takes X glucose and makes Y atp out of it
if the cell is moving each flagella consumes Y atp
if there is glucose, ammonia and phosphates available the cell takes Z of each and grows W%

balancing these values, X and Y can be balanced around how far you can get on a full tank of glucose, i.e. if you start full and find no more how long should you be able to swim for in seconds?

Z and W can be balanced around how long it should take to get to the editor if you are well fed and what quantity of compounds you need to consume to unlock the editor.

C. have the availability of glucose, ammonia and phosphates decrease over time, so each time you go to the editor they become a little more scarce.

Is this a good summary of what we can do now to go down this path? @crodnu what do you think about this in terms of compounds system complexity, is it ok with you? to all does anyone have feedback or thoughts about this?


#10

Sounds good! I think this gives us a very clear but powerful dynamic to build the gameplay of the Microbe Stage off of.

On the point of oxygen and carbon dioxide, I think that they should scale the reaction speed of any processes they are a part of based on what concentration they exist in in the environment. Here are a few ways I can think of that we could handle this:

  • A simple on/off function, where the reaction turns on or off based on whether oxygen is present or absent.
  • The speed of the reaction scales with the concentration of oxygen (from 0-100% oxygen).
  • There is a certain threshold of oxygen required. Above that threshold, the reaction proceeds at full speed. Below that threshold the reaction slows, and dropping further below slows it more.

I think the third option would be the best, since you’ll rarely have 100% oxygen (let alone even 50%). So it’d be more of a case of telling the player “above 10% oxygen you are good, below that it’ll be harder for your cell to ‘breathe’ i.e. produce energy”.


#11

So would atp be a compound or would it be implicit?
Also how would you decide which compound to eject when the vacuoles get filled?

Also like the idea of different velocities for the flagella, but what would adding another flagella do in comparison with adding another mitochondrion? should we have a “sprint” mechanic?


#12

Interesting questions.

Re sprinting I was kind of imagining it similarly to how it works now. So atp is a compound and mitochondria slowly make it over time. When you move the flagella use the atp up. (That’s how it works now right?)

I think it’s sort of got sprinters vs marathon runners built in already. So if you have a lot of mitochondria and a few flagella then you can make enough atp to move continually and you are a marathon runner. However if you have a few mitochondria and lots of flagella then you can move really fast (because your cell is light and you have a lot of flagella) but you will quickly run out of atp and need to wait while your mitochondria make more so you can move again.

I think this is the way things work now, and I think it’s quite an interesting little bit of gameplay. For example I can imagine cool predator cells which sit still waiting for prey and then quickly jump on them when they are close.

The idea of a sprint mechanic on top of this is interesting. If it was a button that made you move faster then it would need some sort of drawback, like maybe it damages you a little? If it’s just a run button then I think people would hold it down all the time.

Re compound ejection I’ve been playing a bit of Thrive recently and one thing that happens is if I go in an oxygen cloud then I get a lot of oxygen but then if I swim into a glucose cloud my cell is full and I can’t pick any up. It’s interesting that finding ammonia first is kind of a death sentence, because if you swim through the cloud then you become full and it’s hard to pick any glucose up to help burn off the ammonia and then it’s easy to starve.

We could allow people to have control over ejecting compounds but that then is quite complicated. I think if we just gave a certain amount of storage per compound then it would be easier, just give 100 storage per compound or something. It then becomes obvious when you need to jettison a compound.

I’d be interested in anyone else’s experience with compound gathering though.


#13

Hm, an ejection mechanic could also come in handy if you want to lay a trap for other cells. As for a limit on storage it does make sense to have one for each compound that way the player doesn’t end up starving to death (me every game almost).
What if fatigue is a side effect of sprint? Everyone gets that feeling after running regardless if it’s a marathon or sprint. We could have them develop too much CO2 and they need to stop to vent it or risk killing the cell in a cell rupture death or toxin buildup from CO2 in the cell itself. Or a lighter one that goes with that is that CO2 could fill up your free storage until you stop to vent, creating a time when you are vulnerable while your cell essentially takes a rest like all runners after their distance run. It would be a good mechanic for escape but without a consequence we end up using it forever. Just look at some other games without a stamina type system. In Morrowind I ran and hopped around everywhere even though everyone doesn’t run around forever in the real world. That method could be expanded in later development, plants would use a different mechanic.
Too much oxygen and the plant could poop like a balloon too!


#14

That’s an interesting idea. One way of doing it would be to say “if you press the run button your flagella are 50% more powerful but you burn atp twice as fast.” In the current setup that would, as you say, make loads of extra CO2.

That means it’s a great boost in a dangerous situation but you really don’t want to hold it down all the time.


#15

Precisely, and it would introduce a mechanic that would be needed when your creature goes into the aware stage. It wouldn’t be as bad as cell stage where co2 builds up too fast but the idea would be grounded in how you need to rest after a sprint or marathon. I’d think it would help with balance early on so you’re not abusing a sprint option. It’ll be there and usable but the side effect can be death, again with a real example you can die if you run too long without rest or sustenance.


#16

I would agree that a sprint/run mechanic would be a great addition to the game. Increasing the power of your flagella at the cost of increased ATP consumption is a great bit of, well game, to add to the game. In response to tjwhale

I think there should be something in place to ensure that Z = 0 when ATP stores are below some value so that your cell doesn’t spend glucose on growth and wind up killing itself. This could be something that the player could manipulate in some way but that might complicate gameplay in an unnecessary way.


#17

It wouldn’t be a compound but it would be a metric on your cell, I’ve been thinking about it recently because moopli was the one who had the solid concept for it but at the bottom of my reply I’ll put my idea on it.

That is a good topic for a thread. It’d ideally have to be based on some priority system of how much demand your cell has for the different compounds, with energy nutrients being higher priority than growth nutrients.

That’s an interesting idea but my ideas on it are a little irrelevant if we do adopt an ATP system like I’ll describe below, so I’ll explain that first and then we can see what we think.


Here’s an idea of how we could make ATP be just a balance and not a stored compound. Let me know what you think.

So currently ATP is a compound that is collected and stored just like the others. However realistically ATP is only created when needed and used up right away, and cannot be stored. ATP would be better represented as a balance than a collectible compound. For example, your cell will at rest use up a certain amount of ATP every second. This represents the basic energy needed to maintain the basic functions of staying alive, most important of which is maintaining the internal pressure of your membrane so you don’t explode. Certain organelles will also use up a certain amount of ATP every second as well. Some organelles, like flagella, will only use ATP when being used and otherwise will not use any.

On the other hand, your cell also produces a certain amount of ATP every second, using up your energy nutrients in the process. Cytoplasm performs fermentation (which I realize I have been incorrectly referring to as glycolysis all this time), which produces a small amount of ATP per second. Mitochondria perform aerobic respiration and produce a large amount of ATP per second.

Your cell can only use as much ATP per second as they are capable of producing. A good example of this is like a CPU, which can perform only a certain amount processing per second. It’ll rest usually at a low value such as 10% per second, but if you try to run many processes at once it will use up more and more until it caps at 100%.

Here’s an example with arbitrary numbers. Your cell has the following organelles which use the following amount of ATP:

  • Nucleic Core (Nulceus, ER, Golgi) -10 ATP/s
  • Lysosomes -15 ATP/s
  • Flagellum (I will explain this one later) Uses 5 ATP/s when active
  • Agent Secretor (I will explain this one later) Uses 5 ATP/s when active

And the cell has the following organelles/parts producing the following amount of ATP

  • Mitochondrion +32 ATP/s
  • Cytoplasm (1 hex) +2 ATP/s

So overall the cell produces 34 ATP and consumes 25 as its base rate, which is allowed (a cell designed in the editor with a negative balance cannot be saved/used). This leaves a remaining balance of 9 ATP. This means that the cell can use it’s flagellum to move, or secrete agents, but not both at the same time. This is since the cell cannot make that much ATP/s and the two of those would be -10, one more than the remaining balance of +9.

Here is an example of how we could display this to the player.

image
The right end of the bar would represent the total amount of ATP/s the cell is capable of producing. The filled area of the bar shows how much ATP/s the cell is currently using (just like CPU usage shown on a computer).
image
The bar would sit at a certain level when your cell is at rest (showing the base rate of ATP use) and increase as you do things like move or secrete agents. One way of thinking about what the bar is showing you is that its displaying how fast you are currently using up your energy nutrients (which could be glucose or iron or whatever).

This bar would then be shown somewhere on the HUD, as it is now. For example, in the UI draft I posted the other day…


…the green ATP bar would show what I explained above, with the filled portion showing the current ATP/s usage (ignore the text description of the ATP bar on the image).


#18

This makes a lot of sense to me, you can’t force out more than is being produced in any kind of setting. If you push a computer too hard thermal issues set in or worse (first computer I build caught fire) so having it based on a production bases would give a more in depth limitation and similarity to a real cell’s function. But how would the player get ahead or beyond the barrier of only so much ATP produced? If it becomes a sort of fixed amount depending on the size of your cell we could end up seeing cells as big as the editor filled with mitochondria.

I think it would be a good incentive for the player to bypass that possible barrier by becoming multi-cellular and thus progressing the game past single cell. Sticking to as much realism as possible it might be as close a simulation as we can get to a multi-cell transition where it gets to the point where it makes sense to bond together with another cell in order to more easily survive and move around but the limiting factor could very well be cell size with certain compounds needed for cell cohesion or another key to unlock the figurative barrier.


#19

@NickTheNick sorry just got round to reading this now.

This is an interesting idea. I like how it makes you choose between having a lot of power generation and being able to run everything all the time, or being lean and turning things on and off, it’s kind of like FTL.

I also think it might be a good foundation for a stamina system as an animal where you have to balance how much energy your muscles use vs how fast your bloodstream can circulate oxygen.

On the other side how different is it from having atp as a compound and then only allowing the player a small store of it? So if you are using more than you can produce your store will empty quite quickly and things will start shutting down, however you do get a bit of a stamina bar-like effect where you can sprint for a little bit.

Does this result in much the same gameplay? What do you think?


#20

I’m glad you liked it, those were similar the advantages of it that I was considering.

We could have that as well. I’m not sure what it would be like but we could test it out.

I do see a problem with the ATP-as-CPU idea though: What if you have multiple flagella that altogether use more than your available amount of ATP/s? Should the player be able to activate specific flagella? (Or really any scenario where the same control activates multiple organelles that would use more ATP/s than you have available)


#21

When you try to run more than you can generate everything could just run less efficiently so that the end result would be the same as if you didn’t have those “extra” organelle


#22

Ah that’s a good idea! In that case I think this would be a good system to replace the current ATP approach.


#23

So let’s summarize the points on this thread so far, as well as discussion on other threads and Slack about what gameplay changes to implement for 0.4.0 alongside the engine switch (though some of them may end up being in the update after it). Let’s gather them into one place so we can add it to the wiki and more easily refer to it in the future.

@tjwhale I remember you wrote a list on the slack of gameplay changes we could make in the next update. Could you post them again here? EDIT: Thanks added.

The list so far:

  • Remove O2 and CO2 as compounds and make them features of the environment. (Compound Rebalancing)
  • Add in additional environmental variables. Pressure, salinity, acidity, temperature, sunlight. (Differentiating Microbe Biomes)
  • Add in an “Ecology” page to the editor, where the player gets to see which biomes its species lives in and choose which one to spawn in. Some environmental variables will be shown here instead of in-game HUD.
  • Remove the ability to store agents and just have them be immediately produced and ejected when triggered, meaning we don’t have to track them as a compound in the UI.
  • Remove FAN acids (fatty, amino, nucleic) and add phosphate. (Compound Rebalancing)
  • Make ATP like CPU. (Compound Rebalancing)
  • Rebalance movement (Cellular Movement)
  • Change control scheme to potentially use just the keyboard and free up the mouse. (Control Scheme)

Let me know if I missed anything. If there are no objections to the above points, we’ll add them all in as final concept to the wiki.