Cell Specialisation concept and bonus list

As requested on the Multicellular concepts thread, I will present the current Cell Specialisation concept here separately for review, comment and changes.

Background

One of our focuses in the Multicellular Stage is cell specialisation: both the player and auto-evo should (and should want to) make different cell types for highly specific functions. Basically, if some function can be isolated in a certain cell type and removed from other cell types, it should be. This both matches what we see in real biology, and is a mechanically interesting difference to separate the Multicellular from the Microbe stage.

As for the exact reason why this happens in reality, it’s not entire clear, but as I have previously written elsewhere:

Theory

While I would love to hear the opinions of the Theory team on this, as far as I can tell, the exact reason are still unclear. As King apparently put it:

The transition to multicellularity that launched the evolution of animals from protozoa marks one of the most pivotal, and poorly understood, events in life’s history.

From there in combination with some other sources, the best I can conclude is something along the lines of “doing less things in one cell is more efficient”, whether that be from not having as much of the DNA exposed to damage, or not having to rewire and remodel the cell every time you have to do something else.


The current concept

The mechanics are conceptually simple:

Give a numerical performance bonus to each cell part, based on the percentage of the cell’s hexes that are taken up by this cell part.

As an example, having a cell that is 50% just spikes gets a 50% reduction in spike osmoregulation cost.

A different bonus is applied to each part, as in the list below.

Variants to this system

Just give everything an osmoregulation cost reduction instead of unique benefits. Is simple to implement, might even be more realistic, but is far more boring to interact with.


Instead of looking at total hex usage, we look purely at the number of different types of organelles.

The benefit is that it strongly encourages total specialisation, with no one thylakoid left somewhere that you don’t need. (Also might be more realistic in that way, the cell not having to spare any effort on something at all is far bigger than doing something less)
The downside is that there’s no clear benefit to gradual specialisation if you don’t remove whole types of organelles from a cell type at once.

Of course, a combination is also possible: One bonus for proportion of hexes dedicated to one thing, and a separate final bonus for reducing the number of different organelles in a cell. But that might be layering on too many mechanics.

(Again, would also help make specialised microbes a bit stronger.)


Prokaryotic and eukaryotic versions of the same organelle type could be treated as the same, to avoid switching from one to the other bringing down effectiveness at first.


In the opposite direction, two organelles of the same type but with two different upgrades could be treated as different. For example pili versus injectisomes.

Firstly, we have a category that is still simply an osmoregulation cost reduction. Either because there are no other numerical values to act on, or because there are numbers, but they don’t make sense to act on:

  • Chemoreceptor (numbers like detection range are something you want to have control over. Boosting them makes no sense.)
  • Perforator Pilus (I don’t think upping the damage of individual pili based on their proportion makes logical sense).

For most cell parts, it is actually quite simple. The category “just increase Bioprocess Speed”:

  • Chemoplast
  • Chloroplast
  • Ferroplast
  • Hydrogenase
  • Hydrogenosome
  • Melanosome
  • Metabolosomes
  • Mitochondrion
  • Nitroplast
  • Rusticyanin
  • Thermoplast
  • Thermosynthase

I think for some of the prokaryotic cell parts it makes sense to focus on just their primary objective, instead of the incidental ATP production. The category “Increase Bioprocess Speed, like above, but ignore Glycolysis”:

  • Chemosynthesizing Protein
  • Nitrogenase
  • Thylakoids

Now for the slightly more complicated and perhaps more unique cases:

  • Bioluminescent Vacuole: Increase Bioprocess Speed, so more ATP into more… light. Which sounds wasteful for now, but I would also boost the bonus it gives to oxygen resistance.
  • Cilia: Increased bonus to rotation speed.
  • Cillia (Pulling): Increased range and/or strength of pull while engulfing.
  • Cytoplasm: Actually quite interesting. According to the previous pattern, could just give this a Bioprocess Speed upgrade. But, this is more commonly used (I think) to quickly get to a larger size (and sometimes get storage). So I could see a combined Osmoregulation cost reduction/Bioprocess Speed/Storage increase bonus here, or focus on just Osmoregulation cost reduction (with or without storage).
  • Flagellum: Increased speed, equally increased ATP usage.
  • Lysosome: Increased contribution to Digestion Speed and Efficiency.
  • Slime Jet: Increased Bioprocess Speed, but also equally shoots out mucilage faster for more speed.
  • Slime Jet (Mucocyst): Increased Bioprocess Speed. I think doing anything like to further enhance its defensive abilities might move balance in the wrong direction.
  • Toxin Vacuole: Increased Bioprocess Speed, but perhaps also further increased fire rate that each organelle gives.
  • Toxisome: Like above, but explicitly don’t boost the glycolysis.
  • Vacuole: Increased storage.

The exempted:

  • Binding Agent: Obviously you have one in every cell in multicellular. I would just ignore its hex in the “percentage of hexes dedicated to each organelle type” calculation. It could also increase the bonuses from this whole system (if the system is present pre-multicellular).
  • Nucleus: Like above, but even more strongly because the large number of hexes is a big distortion on the system.
  • Signalling Agent: Really, the only difference with the Binding Agent is that it can be removed. So, its hex could be included in the calculation so that you choose to only keep it in one cell. It could even get the Osmoregulation cost reduction. This way, it could be worth it to make one cell somewhere of a cell type that only has the signalling agent and just enough energy to keep it going.

Cell adjacency

As a side note, one way to handle the cell adjacency system is by amplifying the effects of this cell specialisation system. Cells that have a specialisation bonus in a certain organelle, also amplify specialisation bonuses for that same organelle in adjacent cells.

Example

Rough number example:

  • Example cell 1 is 60% chloroplasts, so gets a 0.5x60%=30% boost to chloroplast process speed.
  • Two adjacent cells also have the same ratio, so each give a 2/6x30%=10% boost-to-the-boost.
  • There’s one adjacent cell that’s only 30% chloroplasts, so it gives 2/6x15%=5% boost-to-the-boost. Boost-to-the-boost total is 2.5+5+5=25%.
  • End result? Cell A receives a 30%x1.25=37.5% boost to chloroplast process speed.

Numbers are obviously made up, bolded are the constants for balancing of the bonuses.

The math might not be immediately easy to understand, but I believe the end result is a very intuitive reward: the more you specialise cells, and the more you place those with the same specialisation together, the stronger they become.


I am also personally in favour of applying this system in the Microbe Stage, not just the Multicellular Stage. It would be biologically more correct, showing that both types of organisms operate under the same rules, Multicellular organisms have just found a way to bypass the rules. That same realisation is also fun from a player exploration perspective.

This would also help encourage Microbes that specialise in fewer metabolisms, instead of omnitrophs.

1 Like

I think this gets unnecessarily complicated for not much extra benefit.

The way I would suggest wording the feature to make implementation easier: each bio process type gets a speed bonus based on how many other processes there are. So for example if the player has just glucolysis: 2 and iron chemilthosomething: 5, the bonuses are 2/7 and 5/7 for the processes. Then naturally if you throw in some unrelated part then the bonuses fall to 2/8 and 5/8.

This will be much more simple to make and doesn’t cause configuration headaches like “no wait that one process in that one organelle shouldn’t be allowed to get a bonus”.

The random smattering of custom effects is going to be quite a headache to do in an effort-efficient manner so I won’t spend brainpower on that yet.

If it makes things easier, I have no issue with not making this distinction.

This as a whole would be a problem though, because it breaks part of the system. If you only compare the number of processes, then you only calculate specialisation for cell parts that have processes. Throwing in pili, flagella and cilia would not decrease the efficiency bonus for chemosynthesis for example. That removes the need for separating process cells from for example flagella cells.

That’s why I think the basis for the calculation of the bonus needs to be ratio of the cell parts themselves, not only looking at the process overview.

I don’t know if in that case “40% of the cell is chemosynthesising proteins, so boost all processes from chemosynthesising proteins” is still easier to implement than "“40% of the cell is chemosynthesising proteins, so boost (manually assigned) the chemosynthesis process”. If the former is still easier, I would agree with doing that.

Kind of yes, but this is multiple times easier to make.

And also limiting cilia placement will make rotation problems worse again…

But I do agree that if this is like an initial implementation, because again it is so easy that it leaves development time for multiple other new systems, that organelles that don’t do processes need some consideration.

The actual resolved list of processes a cell has has no clue where that data comes from, though I suppose when calculating the list of active processes that’s when it might be possible to give like virtual free copies of organelles that dominate the organelle count. Someone would need to read the code to see if this design was possible.

If the system only applies to processes, for most organisms that would probably only encourage having 2 cell types. (for example, cells with chloroplasts, and cells without chloroplasts) Sometimes an additional one (nitrogenase/toxins/mucilage). (Speaking of which, I am a bit concerned on how this would interact with the many different toxin processes) Many predators would not experience the system at all, because the only process they have is glucose → ATP.

Quite a bit of the depth of the proposal comes from specialisation in all the functional parts, most of which don’t have processes.

Another point here is that this would extra punish prokaryote parts for having the additional glycolysis processes added into the mix. That’s not necessarily a bad thing if we think it’s necessary though.

We could look at the non-process organelles separately (though without looking at the cell part ratio, I currently can’t imagine how that would work either). But how are we going to connect these two systems logically afterwards? Is there a way to do that without calculating the cell part ratios anyway?

I’m having trouble imagining alternatives, but am open to suggestions.

Well, I am hoping that Cilia-specialised cells in strategic locations will provide enough power to turn the whole organism. Just like flagella-specialised cells at the back provide movement speed, etc. That’s kind of the point of having a cell specialisation system, no?

Alright, I’ll see if I can find where that is.

I guess my original imagination was that the cell object would store for each organelle type what its ratio in the cell was, then generating a modifier (perhaps even defined in the organelle json what modifier each organelle’s ratio should affect) from that when applying to for example the final process list. (At least, I know environmental tolerance effects also get applied afterwards).

I fail to see how as only organelles that have no processes could be added freely. So any cell with chloroplasts would get a negative effect if it has any organelle that does any other process than chloroplasts do.

Could you elaborate more on your point here?


Seems kind of pointless to debate this as I just looked up the C# code that calculates the processes for a thing, and lo and behold:

public static void ComputeActiveProcessList(IReadOnlyList<IPositionedOrganelle> organelles,
    [NotNull] ref List<TweakedProcess>? result)

ComputeActiveProcessList in ProcessSystem.cs file.

So the process tweaking can use any data that can be derived from a read only list of organelles.
Which means that it is as simple to tweak process type speed than it is to also tweak things based on organelle type ratios.

Well turn speed has a much less effective range (like slapping infinite cilia doesn’t make instant turning) so the effect on turning speed from individual cells is limited as it kind of averages out. Even more so than forward speed which has a much wider effective range that can be created by placing more flagella.

1 Like

Feel free to ignore given:

But I already wrote it, so:

To give an example: hypothetically we’re making a pure photosynthesizer, that happens to not have nitrogen fixation, toxins or mucilage. It does have pili (both kinds), flagella, cilia and vacuoles. ATP production happens via mitochondria.

With specialisation only applying to processes it pushes us to have two cell types:

  1. Without Chloroplasts.
  2. With Chloroplasts.

2 can be identical to 1, just with added Chloroplasts. That includes both of them having the flagella, cilia, pili and vacuoles.

With specialisation based on ever organelle relative to each other, besides every one having mitochondria, the system pushes to have the cell types:

  1. With Chloroplasts.
  2. With Vacuoles.
  3. With Pili.
  4. With Cilia.
  5. With Flagella.

And that’s a lot closer to what we see IRL. (with exception of vacuoles, but IRL plants use them for something else than storage). Critically, if you have a separate system to specialise between the non-process organelles, you could randomly slap chloroplasts on some of the above cell types, removing cell type 1. (While again, in IRL plants, you do see that specialised cells often do not have chloroplasts)

So it comes more down to what makes for better gameplay then.

Of course, there’s also the rather important part where this needs to be communicated to the player.

Ah, I see!

Well, this is more a matter for general Multicellular Stage design, but I do think it would be much more interesting if specific cells could provide the rest of the organism with both forward and turning speed. Perhaps a change in how multicellular organisms calculate those could achieve that?