This is a semi-continuation of recent discussion here:
There appears to be some confusion regarding the requirements for organelle models. Most of the models we have can’t be added to the game for one main reason: the hexagon arrangement used in the editor hasn’t been taken into account. With the membrane close to completion, it might be a good idea to add organelle models alongside it, so this’ll need to be worked out fairly quickly.
Bear in mind much of this can be debated.
So how are organelles placed in the editor? We’ve decided on a system where the player builds a cell out of hexagons because it allows for simple mutation budgeting and organelle placement. Designing a membrane shape (as in Spore) is incredibly arbitrary, and it would be difficult to measure how much change happens within one generation.
First, the player adds cytoplasm hexes using a grid, making a contiguous shape. They then place organelles on top of this arrangement. Organelles come in two types: internal and external. Internal organelles have a set arrangement of hexagons which make up their shape. Internal organelles can be placed anywhere in a cell as long as they completely fit inside the cytoplasm and don’t overlap any other organelles (other than cytoplasm of course).
External organelles are placed on the edges of hexagons at a cell’s boundaries. External organelles can’t be placed on edges between hexagons, and if the player adds more cytoplasm to a grid space covering where an external organelles has already been placed, they’ll be charged as many Mutation Points as it would have cost to remove the organelle and add more cytoplasm, deleting the organelle in the process (possibly with a pop-up confirmation). There can be multiple external organelles attached to one hexagon, but only one may occupy each straight edge.
In-game, a membrane is drawn around the cytoplasm and responds dynamically to environmental distortion. The hexes representing organelles are also replaced with actual organelles. Internal types float around freely inside the cytoplasm, while external types are fixed to one point on the membrane (though this point can be affected by the stretching and distortion of sections around it).
The first thing for us to decide when making each organelle is its hex arrangement. I believe most of the essential ones have been decided on already, but we need to re-evaluate them anyway. The nucleus, endoplasmic reticulum and golgi apparatus are all fixed in position at the centre of the cell - they can’t be moved or removed.
Models need to fit within the hex arrangement of their respective cells. The nuclus/endoplasmic reticulum/golgi appratus combo can just be a single model, with each part overlapping the others. Here’s a simple example of how this would work (assume the formless blobs are replaced with proper models made by proper artists instead of me):
Vacuoles should come in multiple shapes and sizes, all made from arrangements of hexagons but retaining the same sort of appearance. It might even be possible for vacuoles to expand into the full hex size as they store more compounds, but this isn’t necessary and is up to the modelers (if indeed it’s viable at all).
External organelles are a little tougher to work with. They all have the same hex size (one edge of one hex) except cell walls, which will require completely different systems to display but aren’t a priority right now. They’re rendered on the membrane and animated. Here’s what it would look like using membrane and external organelle rendering:
Attaching multiple external organelles to the same hex on different edges might lead to problems in-game.
The membrane will be flexing quite a bit during collisions or movement, and external organelles will move with it (i.e. their attachment point will remain at the same point on the membrane, but that point can move). Again, overlaps of the rendered external organelles might become a problem. Perhaps external organelles shouldn’t have physics applied to them so they can overlap.
An overview of everything discussed above in handy picture format. The images are, in order: cytoplasm arrangement, organelle arrangement, rendered membrane and organelles, and an example of environmental distortion.
For the modelers’ benefit, here’s a list of what needs doing. They also need all their hex arrangements decide on.
High priority:
- (Internal) Nucleus/Endoplasmic Reticulum/Golgi Apparatus
- (Internal) Mitochondrion
- (Internal) Vacuoles of various sizes
- (Internal) Chloroplast
- (External) Flagellum
- (External) Agent Secretor
Low priority:
- (Internal) Thermoplast
- (Internal) Slime Gland
- (Internal) Bioluminescent Organelle
- (External) Cilia
- (External) Predatory Pilus
- (External) Engulfing Edge
- (External) Lamellipodia
- (External) Cell Wall
Information on each organelle: http://thrivegame.wikidot.com/gdd-microbe:gameplay#toc21
The agent secretor is in the game as an internal organelle, but eventually should be external. Come to think of it, the game doesn’t currently handle external organelles at all (even flagella are placed like internal organelles), so this might be needed first. Slime glands are basically just exploding vacuoles holding slime. Models are needed for all the same shapes of slime gland as vacuoles. Don’t worry about cell walls for now - they’re more related to the membrane.
All of the above should help get people up to speed with the system. I’ll now reply to @TheCreator’s points posted on GitHub as I was writing this:
@Oliveriver, very nice job on the images. Here are my 2 cents:
I always thought that the organelles in the cell would remain stationary, but my current membrane prototype does allow for them to move, so I guess that shouldn’t really be a problem to do. For collisions, we could let them flow on top of eachother without any collisions since our cell is actually 3-dimensional and the organelles aren’t all located in a plane. Another idea would be to use a simple rectangle bounding box for collisions—the organelles never really have to touch. Whichever method we chose, it should be easy to implement.
Here is a link from the old forum that I found that should help with the silhouettes:
http://i82.servimg.com/u/f82/14/12/40/46/cellsp11.png
We definitely need good models for the organelles (like the one we have for the toxin organelle currently); however the external organelles are a bit more complicated. The flagellum needs to be a static, tube-like model that will then be animated in the actual program (or we could try to make it completely procedural). I think it should be easy to place by simply attaching its origin to a point on the cells membrane. As for the cilia, their model can simply be attached to all the faces on the cell membrane, using a fresnel shader, so they are only noticible on the sides but not when directly viewed on from the top.
Moving organelles are just an aesthetic feature, and for now not necessary so it doesn’t matter much. Allowing overlaps for internal and external organelles would work, and as you say they’re in a 3D shape so it won’t matter too much. The only problem with that would be distinguishing between multiple organelles which have moved over each other when the player has paused the game and is editing each organelle’s compound priorities. A simple hitbox would fix that, as well as defining the clickable area for each.
I was looking for that image actually, thanks for finding it! Obviously the external organelles (secretor, flagellum and cilia) are redundant in internal form, and we’ll need many sizes of vacuole in the future.
Placing external organelles directly onto the membrane would simplify implementing them, but it would require a restructuring of the editor as in its current form the membrane isn’t rendered when placing organelles, only when changing appearance. This should be possible though, if a bit annoying. Maybe just split structure into internal and external structure (or “Structure” and “Surface”). Good idea for the cilia, although if we don’t restructure the editor they won’t be added to the entire membrane in one go. Instead they’ll be added in blobs around the size of the hex edges. If the editor is restructured to allow more intuitive external organelle placement, then I’d still go with adding it in patches around the edge rather than using a brush tool - this makes budgeting easier, and allows the player to click each discrete patch and upgrade it.