However I think by upgrading you naturally have drawbacks even if they aren’t hardcoded into the changes you make. Every time you choose a mutation, there are countless other mutations you are not choosing, which may have been choices you should have made, and your final design could actually end up not any better or even worse fit for the environment when you spawn. Additionally, you could’ve made a good choice with your evolutionary change, but then the evolution of the species around you happens to render it useless or deleterious. This is all very speculative, and I think play-testing would confirm this better, but that’s my opinion on it.
I think it doesn’t make sense genetically why increasing the effectiveness of one mitochondrion should be a smaller mutation than increasing the effect of all mitochondria. To use a larger scale as an example, an organism with five legs can have all of their lengths coded for by the same gene, and then another organism has two legs which are both coded for by the same gene. In both cases, it only takes one mutation to the gene to, say, lengthen the legs. However, you could also have a case where an organism has five legs coded for by the same gene, whereas another organism has two legs, each leg being coded for by a separate gene. The former case would only take a single mutation for the legs to lengthen, whereas the latter case would take two. Assuming all copies of the same organelle are coded for by the same gene, then all changes should apply across the board.
However, if we want to allow organelles of the same type to be upgraded independently, we could implement the clone tool here as we will in the Organism Editor. In this case, placing five mitochondria will make each of them coded/upgraded separately, whereas placing one mitochondria, and then cloning it four times, would require only an upgrade to one and all will be affected by it since they are all coded for by the same gene. This is slightly different from the use of the Clone Tool in the OE, because there you don’t have to place one leg and then clone it in successive generations. You can place a leg and then clone it and place all the clones at once for the price of one. However if we used this for the Microbe Editor, that would mean you could place 10 mitochondria for the price of 1 right in the first editor session.
Just want to make a note about cytoplasm, with a related note about ATP:
- ATP: We can’t keep treating ATP like it is a compound produced, stored, then used up. Cells always maintain a mostly-constant amount (well, cytoplasmic concentration most likely) of ATP, instead cells which have higher ATP needs fill those needs with larger capacity to produce ATP, to maintain the same quantities with faster turnover. I know we’ve had this discussion before, and we can continue it in the GDD thread, but I wanted to bring it up here as it directly ties into my next point:
- Cytoplasm: I don’t think it should be a net user of ATP – glycolysis is the only source of ATP for anaerobic eukaryotes, for example, and they manage just fine with using their cytoplasm to produce all their ATP. While the cytoplasm does contain a lot of processes which require ATP, it still produces enough to cover the energy needs of most organelles, it simply pales in comparison to the mitochondrion’s ATP production capacity which allows aerobic organisms to do so much more.
I agree with both of those. Also whichever release we add cytoplasmic glycolysis to, we need to also remove the mitochondria starting in the default cell, so that it’s just the nuclear core.
@moopli, I agree that cytoplasm shouldn’t be a user of atp. However, bigger cells should have a greater mass and would thus require a great force to get them moving and they should also have a smaller rate of compound absorption because of their surface to volume ratio (or the other other way around, I forgot). As for atp not being a quatifiable compound (if I understand what you are saying correctly), this would actually play very well into the health mechanic. ATP would always be at 100% unless the cell is damages and is unable to produce it anymore. Then when the levels reach zero, the cell dies.
This post will attempt to go over the upgrade system as I have planned it out over the past months that I’ve been on the team.
In the editor, the player has 3 choice:
- He can right click on an organelle and remove it.
- He can left click on the organelle and move it to any part of the organism for a small price
- He can double-click on the organelle and bring up the upgrade panel.
If the player hovers over an organelle for more than 3 seconds, he brings up the following window which features the aforementioned 3 options as well as some stats.
I used some random things I made up, but later we can fill it up with actually useful stats (if you’re wondering free radicals slowly deplete the health of your cell).
Clicking on the upgrade button opens the following window:
The red star is your current location on the “map”. You press the purple buttons (circles) to move the cursor closer to their direction on the grid. If a point cannot move in the specified direction by a parallel grid line (in other words if it’s on the edge), it moves along the diagonal of one grid cell to get closer to the button you pressed. To calculate the stats, the game will then find the component of the vector leading from the origin to the cursor that is parallel to the vector leading from the origin to the stats button.
I have thought about it and in my opinion this is a flexible and pretty good approach to upgrade organelles. In the above example, you have 4 different parameters (2 pairs), but this method also works for organelles that have two parameters (one pair), 3 parameters (one pair and some other parameter, like efficiency). Having a UI like this has two great features:
For one, you can upgrade a trait making it progressively better. This mimics evolution where over time traits get better and better (flagella started out as ion pumps and were really bad at first at moving the cell; mitochondria had a very low surface area—no folds—when they were first assimilated and had a very low efficiency; gills started out as ion exchange membranes with a low surface area).
Secondly, this allows for an exchange mechanism that @tjwhale wanted so much Obviously, you cannot simultaneously make a flagellum longer and shorter, but it offers for more subtle differences. You cannot make a very long and thin flagellum, you have to strike a good balance between these two traits, depending on your lifestyle (I just pulled this comparison out of my head). But let’s say you want to at the same time be able to make a thick and long flagellum (you are just against short and long flagella because they break off or something), you could make a crazy shape like below:
Although we should keep these shapes more or less primitive e.g. triangle, rhombus, square, line.
Mutation Points: Graphs and additional thoughts
Some great ideas here.
In terms of the value of upgrades, there was a discussion a couple of years ago concerning possible sequences for organelle upgrades to provide diminishing returns, i.e. initial upgrades give big improvements but later ones aren’t as beneficial, so you’re more likely to spend Mutation Points elsewhere. Combining it with your system could work, although the exact mechanics might have to be changed slightly as it was formulated with a set of linear upgrades for each organelle stat in mind.
UI-wise, this is probably a better approach to what we had planned before, where the panel on the right would be replaced with upgrade options for a selected organelle.
In some cases this might not be the best system, or it will at least need modification. For instance, some organelles can be cross-graded between different types (such as cilia and lamellipodia, or agent secretors and pili). At best this could just be an extra button in the upgrade window, although I guess it would remove any upgrades the player has already made to that organelle, resetting the marker in the centre. Another example is the development of a cell wall - it would most likely be a linear progression from membrane to full cell wall, which could just be represented by a single line of upgrades.
We’ll definitely be having this. @NickTheNick made a post some time above where he talks about using an exponential function to lower the benefit at higher upgrades. As described above, when calculating the benefit, everything is broken down into linear components, so no change needed there.
I’ve given this some thought and here’s my idea. Let’s assume for a while that Cilia are just really thin and short flagella. We can then take the above picture and do something like this:
Once the player gets the cursor in the purple shaded rectangle (which is anything thinner or shorter than the purple circle marked cilia,highlighted in the image for visibility), he gets a button at the bottom left that asks if he wants to upgrade to cilia. At this point the flagella upgrade window switches off to the cilia upgrade window with the cursor located in a region titled flagellum and a button to switch to flagella at the bottom right.
We don’t have to have complex shapes like the one above. We can simply have a line with the left part say “Flexible” and the right say “Rigid”. Although I disagree that going from membrane to cell wall is a linear progression. You should be able to upgrade the heat resistance/cold resistance/phagocytosis and a bunch of other things. Finally, we might need a new tab in the editor for external organelles and another one for agents.
Uh. First off, we’re having organelle upgrades?
… Oh right.
So far it looks okay, though I don’t think it’s ideal, considering it might not even be a good idea to have so many levels of upgrade (seriously, what purpose does it serve? just to pad gameplay?), and there are probably often more than two factors we want to balance against each other.
Though it looks like you’re already covering that in your discussion so far and I am too tired to add much.
Of course we’re having organelle upgrades, why wouldn’t we? I think it’s erroneous to assume that once your cell gets an organelle they stay the exact same way. Natural selection is always in progress.
Nothing is ideal, but this satisfies all the requirements for an intuitive GUI that offers the player flexibility in evolving his organelles in a realistic manner.
Umm… to allow the player to simulate evolution on a microscale. There is only so far you can go with 4 different kinds of organelles, and don’t tell me that you think that all living creatures on earth have the exact same kind of mitochondria and the exact same kind of vacuoles.
As I said, this works perfectly fine for more than two factors, but I really don’t think we’ll have more than two factors that we want to balance against each other that often. Care to bring an example?
I think this is a great feature to work to get into the game. Remember that we can always revisit any feature and revise or improve it, but until then I think this is very well designed and fleshed out to be put into the game.
Additionally, I think this works well going into the later stages, which is something we should keep at the back of our minds. When you place, say, a heart, in the Organism Editor, you won’t just be placing, moving, or removing organs, rewiring connections, and rescaling them, you’ll also be changing their properties, such as intestines that absorb more nutrients, hearts that pump blood better, lungs that have more internal surface area, etc. This looks like a feature that could be carried over into the OE quite well.
I too think its a great idea, I love the idea of being able to have thick, thin, long, or short flagella, with all kinds of levels of each, and each providing distinct advantages and disadvantages. This system leaves the player with almost absolute control over how efficient their cell is and how effective their escapes/chases are. I’m not entirely sure how I feel about cilia being an upgrade of the flagella, but in lieu of a better idea, I think it could work. I’m looking forward to seeing all of these ideas implemented in game.
The difficulty with cilia <-> flagella is that they’re two different types of organelle going by the way we want to represent them. Flagella will work as they do in the game now (although the player will eventually be able to edit their position on the membrane a little in another tab), but cilia will be a periphery covering option creating a shader over the whole microbe. They can still be upgraded, it would just be that the upgrade would be applied to all the cilia on a membrane at once. I think @TheCreator was only using them as an example, but if not we’ll have to work out a solution.
Well, I was actually thinking of having a flagellum become cilia, but you bring up a good point that I haven’t thought off.
Just as importantly, cilia and flagella work completely differently – flagella corkscrew to apply a force perpendicularly into the membrane, while cilia beat in unison to apply a tangential force. If we were to allow one to ‘transition’ into the other, there would be a necessary intermediate zone where the motions make no sense. I think it would be much better to just keep them separate.
Yeah, as moopli says, the mechanisms behind flagella and cilia motion are completely different. Flagella are powered by the worlds tiniest rotary engines at their base, they have performed experiments on swimming mutant E-coli which have rigid flagella. If you clamp their flagellum in place the whole body of the bacterium spins around like crazy!
Also, flagellum often work in unison, many in close proximity will group together by hydrodynamic interactions to form one much larger flagellum like structure (sperm do this). If one or a few of them change the direction of rotation, it disturbs the cooperative effect, causing the sperm to tumble and change direction. This run and tumble mechanism is one of the most primitive ways bacteria explore their environments foraging for food.
So the key parameters for calculating the forces generated by both flagella and cilia are their tangential and normal drag coefficients. It’s perhaps easiest to visualize if you think of a typical cilia:
Assume the cilia is just a flexible cylindrical rod and imagine dragging it through a fluid in such a way that it is orientated perpendicular to its direction of motion. This movement will experience much more drag (and hence displace much more fluid) than if the rod is aligned with its direction of movement. Now if you look at the cilia stroke you can see the cilia exploits the asymmetry of its normal and tangential drag coefficients to apply a greater force on the power stroke than it does on the recovery.
The same principle is true of flagella, it’s just there are no longer power and recovery strokes involved. Instead the rotation of the helix creates a constant asymmetry in forces. Each small segment (ds) is moving in a constant orbit around the axis of rotation and the slight inclination (θ) results in a tiny force along the axis of rotation. The net effect of all these small forces provides the propulsion.
The drag coefficients are not too hard to calculate analytically and they’re pretty well agreed on in the literature, see equations 6,7 & 8 or here. They depend on width, length (wavelength for helix) and fluid viscosity, the forces generated then depend on things like velocity, helix pitch and angular velocity. Once you have the forces you can then calculate how fast they are able to propel their parent cells through the surrounding fluid.
As for having hairs on the flagella, as far as I am aware, if a flagella is covered in hairs perpendicular to the helix then this causes the flagella to pull instead of push. I suppose I can intuitively imagine how this would happen, although I wouldn’t enjoy analytically finding the new drag coefficients.
Okay, well, the real question is what parameters should a flagellum be defined by? I don’t think length and width are enough, and they were explicitly stated above to be example parameters anyway.
For example, lots of eukaryotic flagella have stuff on their surfaces – hairs, undulating membranes, that kind of thing. And how does length, for example, affect the amount of drag the flagellum can overcome (essentially, the amount of water displacement around the microbe per unit time that can be driven by the forces of the flagellum)?
I was editing my previous post and doing other things at the same time… so it kinda looks like I replied to your questions before you asked them, woops.
So I hate to bring this up again (especially with moopli’s adverse reaction last time), but I do think organelle upgrades are an important topic. I decided to start small, and suggest a simple upgrading scheme for one tiny organelle. With all of the new compounds coming up thanks to tjwhale and others, storage is going to become an important issue, one that the player would most likely want to manage him/herself.
I propose specializing the current vacuole into various other vacuoles. At the moment, a vacuole adds 10 units of storage that can be used for absolutely anything. This creates a lot of problems with the cell ejecting reproductase to make room for CO2.
Here are my levels assuming you are specializing for ammonia, which has a molecular mass of 2.
- 10 units, which means that you can store 5 ammonia or 10 units of other compounds (so 3 glucose, 10 oxygen, or 1 protein)
- You can now store 6 ammonia or 5 units of other compounds
- 7 ammonia or 2 other compounds
- 8 ammonia or 1 other
- 9 ammonia only
In short, the general storage for other compounds is halved for each additional unit of ammonia (similar to a PPF curve).
Upgrading is clearly good if you want to store a bunch of ammonia, but the storage becomes “specialized” for ammonia, so you are no longer able to store other compounds as well in this vacuoles. It fits in the whole “trading benefits” theme, with you being forced to choose between an inefficient storage that can be used for any compound, or upgrading your storage to be good, but only for one particular compounds.
Hope I didn’t confuse anyone with the whole molecular mass thing. Right now, bigger molecules (such as glucose and protein) take up a lot more space than smaller ones, such as carbon and oxygen.