I forgot to make this thread yesterday, but let’s get started on the multicellular roadmap planning.
As has been said before, I think we should be able to finish the multicellular stage this year. In order to do that we need to leverage the existing work done for the microbe stage and just focus on some key features that makes the stage feel more unique and as a suitable end for the microbial scale part of Thrive.
As such let’s use this thread to brainstorm and plan out the features for the multicellular stage.
I think most useful would be if everyone starts off by listing their ideas in brief and then we / me, collects them in a wiki post and puts in time estimates.
Roughly counting the time remaining in the year it is around 41 weeks until we would need to release 2.0. And removing from that my yearly vacation time (5 weeks), and giving a month for polishing, we are at a total of 32 weeks time available to allocate to features. Though depending on how much help I get with the features, we might have total more work hours available, but I think we should be quite conservative on how much stuff is on the roadmap as volunteer time is ever quite unpredictable. Still, I think we could add some bonus items to the roadmap based on the understanding that they will be ruthlessly skipped if I don’t have time to work on them.
@Deus plans to host another developer voice chat discussion later in this month, which would be quite a perfect time to talk through and finalize decisions on what to put on the roadmap.
Here’s a few ideas off the top of my head / placeholders that aren’t implemented:
Colony movement speed was not rebalanced (but rotation was). Also I kind of feel like rotation needs another pass as many body plans get like double rotation speed immediately once another cell grows, which I think is a bit silly.
The different reproduction modes need to be implemented as they’ve had a placeholder for a really long time in the GUI
We need multicellular auto-evo
Microbe AI might need to be smarter when it is in control of a colony
The end condition needs to be updated (this time before we finish the relevant stage)
If specialization is made into one of the core features, it needs a tutorial in multicellular
Specialization needs the second part: bonus from adjacent cells of the same type
Here’s the wiki post with a big table of all the features:
Feature
Weeks to develop
Help wanted
Colony movement rebalance
0.5
no
Spore reproduction mode as extension for budding
1
no
Microbe AI for sexual reproduction
1
no
Sexual reproduction
3
no
Multicellular auto-evo
8
yes
Microbe AI improvements for colony control
2
yes
AI terrain avoidance
2
yes
Moving to macroscopic condition
1
no
Tutorial for specialization
0.25
no
Adjacency bonus to specialization
1
no
Expanded cell specialisation bonus
2
no
Reproduction cell type (different from plain gamete)
1
no
Membrane lock
1
no
Organelle membrane pre-requisites
1.5
no (but needs design)
(Optional) “Muscle” cells
0.5
no (but needs design)
(Optional) “Nerve” cells
0.5
no (but needs design)
(Optional) Non-cell parts
2
no
(Optional) /“area of effect" organelles
3
yes
(Optional) /“background cells"
2
(Optional) (Endo)symbiosis in Multicellular
0.5
no
(Optional) Engulfment protection
0.1 (simple implementation)
(Bonus) Nematocyst/Cnidocyst
3
no (but needs models)
(Bonus) Light receptor cells
1
no (but needs new organelle model?)
The times to develop are rough estimates by me, and as these are a programmer’s estimates, it might be good to assume 2x for the real time to develop, but I did already try to put a bit of a buffer into the times.
And the “help wanted” column is if I really hope that someone else than me can contribute that feature. I mostly marked major systems that I have not worked on as help wanted as they would take unreasonably long of my time as I would first need to learn how that feature works and only then be able to change it.
I’m marking this as a wiki post so that everyone can append their ideas to the table, but please if you are not a programmer don’t put in the time estimate, I’ll do that instead to have at least somewhat accurate times.
Since this is marked as help wanted, it’d be nice if you could elaborate a bit on what you expect here. One idea I have is generally treating the colony as one organism if it’s not already like that (maybe changing the “center” of the colony to the whole colony’s rather than the lead cell’s?), but then what?
The microbe AI has always been ignored, and even now it is only in a passable state. So the AI is always a part that needs more people helping improve it. Especially once we have multicellular other species around, the AI probably needs improving a bunch so that it keeps acting sensibly.
Do we explicitly want to keep everything in one table, or shall I include a separate table for things that I myself already consider “optional” and “bonus”?
I’m not fully sure… I was thinking that everything could be in one table for now as it’ll be easier to maybe read through it and discuss it in the meeting? Though, maybe putting like “(optional) some stuff” might be a good marker if you already think something is purely hoping that something might be included as a feature.
EDIT: Uh, I am supposed to be able to edit that that wiki post?
After discussing with Deus yesterday, I’ve decided anything existing in “microscopic, but complex, multicellular life” is fair game. Because anything past simple colonies with at most a defined shape, is really moving towards what biologists would call “complex multicellularity”. So I suggest we explicitly ignore that many things only exist in species with many more cells than we can show, we just accept that our Multicellular species with few cells represent species with many more cells, anything sub-macroscopic.(But trying to avoid “miniaturised macroscopic life” like tardigrades)
To expand a bit (or a lot…) on what I added in the table:
In my opinion probably necessary:
Expanded cell specialisation bonus: Essentially, have it affect things like the speed flagellae provide. I do believe this needs to be a more core feature (rather than an optional tool to use), since it’s the main thing encouraging you to actually use the main mechanic of the Stage: different cell types. This exactly is in my opinion also a mechanic that would “leverage the existing work done for the microbe stage”.
AI terrain avoidance: This part of the AI in particular needs to be added because colonies/Multicellular species are going to get stuck on terrain chunks much more often.
Sexual reproduction: This is actually something quite separate from the “reproduction modes” we have listed (and this could honestly be back-ported to Microbe). MP discounts are a popular suggestion, but of course that does not help in the generation where you’re spending MP to evolve it in the first place. I think there’s a strong case for a bonus to all sorts of things from environmental tolerances to upkeep and speed (to represent improved short-term evolution) in return for having to find a partner every time.
Reproduction cell type: It seems pretty common for more complex multicellular life to have reproduction-focused cell/tissues/full-on gonads. Obviously in sexually reproducing species, these produce gametes.
Optional mechanics (many of these are quite complex, some mutually exclusive):
Symmetry: Choose a symmetry type that you are henceforth forced to follow, but in return any edits “copied” to follow symmetry don’t cost MP.
“Muscle cells”: I know myofibrils were previously removed because they seemed too complex, but some form of muscles now seem to me as something very basal. All bilateria have full-on striated muscles, and they can be found in cnidaria (jellyfish/corals) and comb jellies. So that’s all the major animals groups (macro- and microscopic) other than sponges. And even sponges do have contractile cells using action and myosin, we just don’t quite consider those to be muscles. Even some Myxozoans have them, and those are tiny.
Nerve cells: Same as with muscle cells really.This can also include other forms of internal signalling, like for plants.
Non-cell parts: Things you can place in hexes in the Multicellular editor, that are not cells, but what you can place is dependent on existing (Probably adjacent) cells. Shells, stomach cavity, fluid-filled body cavity, Mesohyl/Mesoglea, mucus layer, cuticle, gel globs, etc.
/“area of effect organelles”: Like above, but automatically present in the area surrounding a cell with the corresponding organelle, instead of separately placed.
(Endo-)symbiosis in Multicellular: IRL of course the origin of chloroplasts and mitochondria and eukaryotes was in the Microbe Stage, but some form of internal symbiosis is still very common in multicellular species. Either inside cells or inside tissues (but outside cells) or in body cavities. It just tends to be less permanent.
Explicitly bonus things:
Nematocyst/Cnidocyst: Powerful harpoon organelle (IRL one of these can be enough to paralyse a macroscopic organism), large and expensive. Specialising the cell holding it should really help with powering it. Could do things like damaging through several layers of cells in another multicellular organism.
Light receptor cells: Just need to find an actual gameplay function to not have another “luminescent vacuole”…
I want to draw particular attention to the fact that pretty much every macroscopic lifeform I can think of (that is not completely “filamentous” like fungal hyphae) has some sort of body cavity or other “internal space not completely filled by cells”, so we can seriously consider that as a requirement to advance to the Macroscopic Stage. IRL it’s probably necessary in order to allow better diffusion.
Edit: apparently are just trust level 2 on Discourse here. And by default TL 3 is needed to edit wiki posts. I just changed it so that TL 2 is enough, as I assume a bunch of developer accounts are just TL 2 on here due to the low forum activity.
This is exactly what I had in mind when writing that reproduction modes item… So I’m not sure what you specifically thought that reproduction modes would be?
Also this was included in my different reproduction modes work item as a basically implicit prerequisite for sexual reproduction.
But it sounds like you want there to be an extra cell type on top that has to be placed in the body plan to be able to use the more advanced reproduction modes?
I think it should be pretty easy to put that organelle back to multicellular, but we need some gameplay effect designed for it first.
So rather than empty space left in the body plan, the player would need to place something to indicate a body cavity?
In terms of the code this could get really technical to implement, because right now multicellular creatures are only made up of cells. There can be nothing else except a thing that is a cell type within the body plan. So cavity parts likely would need to be represented as a “cell” type with a bunch of special handling. Another option that would be a lot easier to do would be something like a proper cell type that is just like a single vacuole or something, but obviously that would be a lot more jank than a custom different system. Though it would be way, way easier to program.
Huh, with the current option in the drop-down menu only being “Budding”, I might have hallucinated there being more modes listed/planned, like “fragmentation” and “binary fission”. (Though we do discussed this a little bit in that Multicellular concept thread.) So the “mode of reproduction” is exactly what the next generation new-borns look like and how that happens. Which isn’t necessarily hard-linked to asexual/sexual. Lizards have the rather complicated mode of embryogenesis in eggs, but some do that asexually.
So then the “sexual/asexual switch” would by itself purely be “do you need another organism to reproduce with yes/no”.
I didn’t want to directly set that as a requirement for sexual reproduction itself, because single-celled eukaryotes do perform sexual reproduction often, so requiring a specific unique cell type just for that might stray from the established science a bit too much.
Well, I was originally thinking of very simple “gonads” C. Elegans (1000 cells, 1 mm), but to be fair those specifically produce gametes (for sexual reproduction).
Reading more today, I think I actually overestimated the importance of specialised “reproduction focused cells” (that are part of the main body). Animals like placozoans and even simple bilaterians seem to just make gametes anywhere instead of specialised places. So gamete-producing specialised cells are then I would say an optional mechanic, improving sexual reproduction.
But obviously if we have some more complex forms of reproduction like “eggs” that would require its own special factory, sexual or not.
A different matter is how we want to define sexual reproduction as a mechanic in the first place. Do we want to design gametes and then swim around as them? That does sound like a lot of work to implement.
True. And this is a bit inter-dependent with that movement speed rebalance. For example, we could make it so that as you grow larger, flagella are less effective, but muscles more so.
It would be nice if this (the cavities, at least) could be done by just leaving empty spaces, but I do not think the algorithmic method of translating editor designs to gameplay plays well with that. Both options you mention sound like two of the optional mechanics I suggested, respectively:
I know both are these are complex and a lot of work, but I want to lay out our options both simple and complex to evaluate and choose between, given that what you wrote out still adds up to ~16 out of 32 weeks. That’s exactly why I put a lot of these in (optional).
I guess a third method would be to have any fully enclosed empty space in your design automatically “filled in” with some type of matrix, but I am pretty sure that is just complex in a different way.
Yes, but if I remember right the placeholder values are:
Budding
Sexual reproduction
Spore (which is basically budding but just slightly bigger)
(now that I actually checked, it looks like as the option is disabled and can’t be viewed, there’s just budding on there).
But I’d argue that a spore is so similar to budding that it is easy enough to just basically put on the roadmap. Though with you mentioning those more effort requiring ones, yeah, I guess it should be made clear that those aren’t included (yet).
Hmm. So my initial impression was right? So the reproductive cell type to place, is another extra feature on top of all the other new reproduction stuff? Did I now understand that right.
This is how I imagined we were going to handle gametes in multicellular stage: your species just makes them after you’ve designed the gamete.
I was imagining that the player would need to designate a cell type as a gamete, and then you would just passively fill out a reproduction bar while in the stage and when full you could “shoot” out the gamete and hope it collides with another one of your species’ gametes (this could be made easier by having a new signalling command calling for a mate and to tell AI members of your species to release gametes).
So it would be a quite big feature (which is why I put reproduction types as requiring quite many weeks), but not extremely different in terms of gameplay (like dynamically swapping to controlling a gamete would be as we need to handle stuff like dying and going back to your original body and stuff like that).
Theoretically the new algorithm makes empty spaces more viable. But I haven’t seen people test that all that much.
That would be basically as hard as the fake “cell type” approach I described as the spots in the data structure would have to be taken up by something that the game can treat as an equivalent to a cell type.
Edit: I updated the table with new estimates and I moved most of the cost of the other reproduction types onto the sexual reproduction one as that was what I had in mind when assigning the original cost.
I think the most important features of the Multicellular Stage will end up being:
Adjacency. Makes your colony body-plan matter.
Specialization. Makes your individual cell plan matter.
“BindingCost”. Some sort of cost that increases with the count of cells, to make scaling up an actual challenge.
If these are balanced well, I think that takes care of like 70% of the Multicellular Stage. We just need to make sure that the above mechanics are balanced well, so that on Normal and Hard difficulty, they become important for progression.
Multicellular Parts
Me and Rathalos had a discussion yesterday centered on Multicellular Parts. I’m going to post something soon about it (and Rathalos will likely have his own ideas surrounding the topic), but the basic premise is that they can represent “roots” of what will eventually become organ system functions.
I think that’s one more topic that might represent a new area of work for the stage we should discuss. But I don’t think it should be too much of a lift, interacting with existing (or already to be implemented) stage mechanics rather than introducing completely new ones.
Reproduction
Part of me is tempted to just say “if we have sexual reproduction that’s good enough”, but there seems to be enthusiasm and will behind discussions on the forums, so we can definitely expand here.
Should we go for:
One form of asexual reproduction (budding)
One form of sexual reproduction that is representative of future, complex multicellular organisms
One form of reproduction that can be both sexual and asexual (spores)?
Reproduction is a bit of a tough topic to discuss - partially because of my own unfamiliarity with the topic, and partially because it seems that oogamy is particularly dominant in complex lifeforms - so it’s tough to understand exactly what would be “binding” when you get to the macroscopic stages. As well as how reproduction strategies could be altered in the macroscopic stage.
Depends on the exact details but this sounds like a relatively simple feature, 1-2 weeks time cost.
I was thinking that asexual reproduction wouldn’t be a separate thing in the multicellular stage, mainly because it is kind of the “default” method, even if technically it is not a method by itself but a modifier that applies on top. But I don’t really want to get into the situation where if we have 3 methods and asexual toggle we end up with 3*2 = 6 combinations. So it gets out of hand very fast.
Yes, I think it would be accurate now to look at it as that. Germ Cells, essentially. I think after our discussion I have landed on this being pretty optional for Multicellular. But if we don’t have it in Multicellular, it should be an early option of Macroscopic, I think. (though again, it’s not as if asexual reproduction disappears there IRL.)
Yeah, that’s perfectly fine. If it’s good enough for Xenoturbella, it’s definitely good enough for us in Multicellular.
Alright, that would be pretty neat! Though of course that comes with the UI and logic to have a (two?) cell types designated as separate from the cell types that actually make up the body. As well as all the other stuff you mentioned after. Big mechanic indeed.
And not putting you in direct control of the gametes would still provide other options, such as requiring more than one successful fusion to advance to the editor as a balancing lever.
Hmmm, then I should probably try that out some.
Pretty much what I expected then.
Related to this, I was inspired a bit by the Community Discord: at least for internal cavities, open or completely sealed (probably less applicable to external non-cell parts), the “fake cells” could actually be real cells, just placed in the “background”. The space “above them” would either be empty “normal water”, or if fully enclosed, filled with a different fluid, gel, etc. Collision would be disabled with everything except terrain chunks. Would give a bit of a 2.5D feeling to the stage.
There would be a “wow-factor” there, I believe.
I also think such a deliberately designated “internal area” (whether through non-cell parts, designation, fake-cells,etc) would be much easier to translate to a Macroscopic design than a “leave gaps” system. Because a “floor” comes with an implied “roof”, while a hole in the hex design could also just mean an actual donut. (Though we could of course decide it’s never the latter)
I’ll put it in the table as “Background cells”.
Which reminds me that there is IRL a transition somewhere to “embryogenesis” where the juvenile by the time it becomes active is really just a mini-version of an adult. (assuming no metamorphosis) But I think for us that will just be in the transition to Macroscopic.
Additional options that have come to mind:
Engulfment protection: The single most scientifically supported benefit for colony formation appears to simply be that it makes you more difficult to swallow. So, this would make it so that engulfing cells would have to be big enough to engulf the whole colony, instead of one of its cells.
I know that this would be very likely to be impossible even with just two cells in a colony.
Membrane lock: IRL as far as I am aware, whole multicellular organisms always have a consistent membrane/wall type. Plant cells all have Cellulose walls, all cells in a fungus have chitin cell walls and no cells in an animal have cell walls. (completely extracellular things like bone are addressed by those other suggestions) So I strongly believe that you should be forced to keep all your cell types having the same membrane type.
Consider it a strong semi-permanent holdover from Microbe Stage into the rest of the game. (There could also still be an expensive option to switch over within the Multicellular Stage, but it would switch over all cells. But I think this would be more difficult to implement than just banning it?)
Organelle membrane pre-requisites: Some organelles are not going to make realistic sense in combination with some membrane types. For example, muscles obviously work with normal membranes, less with Cellulose/Chitin (maybe also Double), and not at all with Calcium Carbonate/Silica.
In relation to the last point, I think we should be a bit forward-looking: animals have no cell walls, and that’s necessary to be as flexible as we are. Plants have a way to kind of manage (see flytraps). As for the “stony cell walls”, I don’t think we have multicellular examples. But if we did, I think they would be like coral, without the soft parts. I don’t see that flexing muscles while running any time soon. And that’s going to be a pretty firm scientific realism question in the Macroscopic, so we might as well address it in Multicellular if we can.
Yes it would be harder to make, but also not being able to change this would be a major UX problem as player’s would need to know what membrane they want to get locked into before entering multicellular.
A softer thing would be like doubling the engulfing size requirement for any cells in a colony.
Which would probably in effect also disable engulfing things from a colony as the AI cells are rarely even as big as single player cells.
True, it would be similar to how Awakening underwater locks you out of later stages. I think this is a problem we are going to run into more often later on, whenever we want something from a stage to permanently carry over, or whenever the next stage disables an editor.
Would implementing the solution for this be essentially like copying over whatever was done for that warning popup for Aware–>Awakening? Or do yo have something more elaborate in mind?
By the way, from a design perspective I could also imagine us making the membrane change more difficult, but still possible in Multicellular, and only lock it when you go to Macroscopic. (I do think it should be fully locked there)
Would also work. That seems like it would be easier to implement?
Seems like the auto-evo refactor can produce much larger cells sometimes.
I think the bigger problem is that the player might not know and a first time player genuinely might have 0 clue what is about to happen. So I do not think a warning popup works. Instead we either have to allow membrane types to be set freely (potentially with some organelles getting disabled with certain membrane types) or we need a new GUI window to select a new membrane type for all cell types at once (this will be slightly tricky and the MP cost likely is so high that the player cannot make any other changes in the same editor cycle).
Yes, I think so. Though it might cost a tiny bit of performance as all engulf checks would need to check if the target is attached to something (but as an added bonus the same system would make things like microbes attached to rocks, if we ever get that feature, also harder to engulf).
That would be nice as the players have been complaining for quite a while that there are no big other cells.
Fair point. Though again, it is inevitable that we get permanent locks at some point in the game. You definitely are not going to have access to the species editor in the society stage. So we do eventually need a good solution for this, even if now is not the time.
And just to explain why I would like the ability to completely lock the membrane here: this is more or less why eukaryotic multicellular life on Earth was divided into the kingdoms Animalia, Plantae and Fungi. I think replicating such a prominent element of real evolution would be a win for us. It would also result in one playthrough having clearly distinct multicellular “kingdoms” from another playthrough.
So, considering LAWK on earth, I do prefer this solution over each cell type being able to have different membranes. Having such a big switchup in membranes is I think reasonable as something that can rarely happen in our fictional world, even if it did not happen on earth.
I guess technically this would not need new UI if the membrane change of one cell type just propagates to all the others. But that does seem extremely janky.
Oh, this is a good point as well!
Though funnily enough, I wonder if that would also work with the “add up the minimum engulfment size for everything attached” method, since chunks also have an engulfment size. Though now that I think of it, that’s different for terrain chunks of course.
Which reminds me, this relates to that “non-cell parts” idea or one of its variants: One of them could be “stomach” cavities that either have an “engulfment” ability that is larger than what a cell can do, in which case you might still be able to “engulf” some colonies.
Either that, or you need to be able to physically fit the target inside you, collision-wise.
I realize that point. But I think getting to multicellular is the wrong place:
It is the first new stage the player gets to
At the start of the stage the player is still basically playing the microbe stage (even if now we have the initial body plan of 3 cells, the player can still in theory remove the other cells)
So while I do see that in the future we need to have some hard locks for specific stuff in the game, I think putting them at the start of the multicellular stage is too early.
This would be extremely hard to implement as the whole undo/redo stack only allows edits to happen to one cell type at once. And due to the MP cost making the membrane changes as separate actions likely means it would always cost more than 100 MP to do.
So my idea is that we need a special button to switch the type. And it is only allowed under the condition that the player has made no other changes, and when the new membrane type is selected the game does a massive hack: it starts the editor exit process but right at the very end it goes in and directly modifies the species cell types to have the new membrane type.
Due to needing to make such a massive hack, that’s why needing to lock membrane types to be the same is much bigger deal than it would appear on the surface.
Yes, it would be different for terrain. But for performance reasons I do not want to have to inspect all attached entities to see what they are. Engulf checks are meant to be relatively light…
So the code I would write is that we just check if the current entity has the AttachedTo component and if so we just multiply the calculated engulf size by 2. That’s a vastly simpler operation than checking if there’s a colony and the type of attached entity and whether that entity is engulfable or not… So yeah, vastly cheaper to just double the engulf requirement size of any object that is attached to something.