Handling Scale

This is an important conversation I’ve seen almost no talk about. How do we plan on handling scale? Cells come in all shapes and sizes. You can see a single-celled organism that makes a tardigrade look small, or others that make it look huge. Do we have any plans for handling this? Or do we just plan to have a “cell size” and a macro size, etc?

So far, yea it seems the plan is to have set scales rather than a dynamic system. I figure it comes from the fact somebody has to be willing to code something better if that’s what they want.

1 Like

I have to wonder. What would such a system even look like though? I think it would add a ton to the game, but I’m not quite sure how to get it right.

I mostly started this thread as I really think it should be dynamic, but I wanted to discuss the logistics of doing that. How would it work?

Also thinking about clouds of bacteria for filter feeders like rotifers to feed on. Stuff like that is quite important for simulating an ecosystem.

The name escapes me of the algorithm but, you actually have to do this with planets and huge worlds/levels like in say Elite Dangerous and Star Citizen. Floating point errors become increasingly bad when you have extreme differences in scale between different objects therefore, in some games you have to constantly change and track the scale of everything, and hide things that are too small or too big in order to suit the perspective of the player. This is why big levels are chunked. There’s also thing like Floating Origin which is needed because the further something gets from the world origin, the more it jitters and game physics can begin to breakdown.

You could use point drawing in a shader. Drawing points is significantly cheaper than drawing any number of triangles according to my OpenGL reference as it relies more on a GPU’s pixel fill rate which in modern cards is comically high. This is also why some scientist have been researching using Point Splatting for drawing meshes

I know that. And at some point, single-celled organisms will need to be rendered as more of a cloud than individual organisms.

What I’m more talking about here is the really large single-celled organims. If I am playing as an equivalent to a tardigrade I want to see long strings of Cyanobacteria around me. As well as seeing other things of many different scales. If everything is ruffly the same size cells very quickly all look the same.

Yeah it’s a difficult problem. Unreal addresses this with Nanite inherently so devs on that engine don’t even have to worry about this sort of thing (at least on the graphics side) but, we’ll probably need to roll our own solution since Godot frankly has no plans of addressing this sort of thing.

The general algorithm would have to constantly keep triangles on screen above a certain size (at a minimum larger than a pixel) and also incorporate a means to chunk meshes. We need to probably incorporate the metric system and ensure for game physics reasons that we are not allowing interactions at ridiculous scales, so individual physics bodies/capsules below a certain diameter should simply be discarded, and very large ones chunked into planar/triangular meshes.

As for the matter of physics interactions with many tiny things we would need a custom solution for hit scans and we would need generated physics bodies like Total War uses that encompass a group. The graphics side would probably need a fairly elaborate LOD system, I can’t see us doing anything other than billboarding when triangles become too small to cleanly and quickly draw.

Edit: I looked it up to actually confirm and the physics system Total War uses is most likely something like Spatial Hashing with Swept AABB.

Spatial Hashing: https://hhoppe.com/perfecthash.pdf
Swept AABB: https://www.amanotes.com/post/using-swept-aabb-to-detect-and-process-collision

Not only that but stuff like AI. We have a ton of processes running for every cell. We need to handle that.

With the current mutation system are giant single-celled organisms even practical in Thrive? You would need to slowly build up something massive one cytoplast at a time. Would something like the cells that gobble up hundreds of photosynthetic cells to form a symbiotic relationship with ever be possible?

You would have to abstract more and more the bigger it gets. I imagine a giant thing would necessarily have to be very dumbed down. All those processes would have to get truncated down to something more manageable. Path finding would need some sort of clustering solution, like turning a group into one thing, without detailed consideration of individual parts. I’m not sure what the solution here is but, I can see there being lots of hand-waving.

After doing some thinking about the early macroscopic stages, here are some thoughts I’ve had regarding scope. The topic of scale will likely have to define the scope of the macroscopic project in several ways.

First, I think representing microscopic organisms with macroscopic features - i.e rotifer or water bear sized organisms - would not be a realistic effort. That would essentially require a reworking of the microbe stage, or an odd integration into existing microbe stage mechanics - macroscopic mechanics in the existing 2D stage, which is a bit awkward. Furthermore, several more complex organisms at this scale were likely much larger before downsizing. This effectively means that we should probably skip straight to a scale at which microbes are represented as clouds in the late multicellular stage, so I think there’s atleast that barrier defined.

Now the other big area of contention, which I think is less straightforward. The next question is how to represent organisms at the opposite ends of being macroscopic - for lack of a better word, an organism in the “bug-scale” and an organism in the “average-scale”. How do we deal with addressing both ends smoothly? I really don’t think it is possible to represent both extremes well without having special treatment for the smaller size - and, if big enough, have it so that certain smaller organisms are not visible when the player is large enough.

I always assumed that there would be points of time where we would have to make jumps between different scales and abstractions of smaller organisms. The question though is how many different scales will be feasible or ideal to represent.

And the conceptual/design consideration question is at what “sizes” will we see transitional difficulties, which opens up a lot of questions. What scale, and what level of detail, will we take the “average” playthrough to be set in? What scale will we tailor the majority of gameplay towards? And at what points will we have to take special care? Will the average aquatic Thrivian organism be anywhere from a foot to 10 feet for example, and larger or smaller organisms will require some technical considerations? A lot of this revolves around our hard capabilities.

—-

EDIT: one thing to note is that at a small enough scale, it’s easier to abstract environments. Because you are too small to really get a grasp of your position and the environment, the ocean floor can be represented as generic rough terrain, and the open ocean as an expansive space.

Linking this thread due to the consideration of graphics and such - Depicting the 3D Environment - #23 by MirrorMonkey2

3 Likes

In order to find out which is the smallest scale at which microbes can feasibly be represented as clouds, we’d have to know how large our microbes are presumed to be. Single-celled organisms vary greatly in size, and while we luckily all agree that we don’t want to depict atypically large single-celled organisms, we’d do good to reflect on how broad the size variance is in reality vs how broad it is in Thrive.
I’ve made these size comparison sheets a whole while ago, but I don’t think I ever showed them before:
1:


2:

3:

According to wikipedia, most unicellular eukaryotes fall into the 10-100 micrometer range. According to wikipedia, grown tardigrades are about 0.5-1mm in size, so about 500 to 1000 micrometer.
Since the variance for single-celled eukaryotes is much smaller than irl even when disregarding unusually large species, it matters greatly how we define the average size. Is the average Thrive eukaryote about 10 micrometers long or about 10? This will determine the smallest viable scale which we can depict in 3D

I was thinking that maybe we can fix both this and the microbe scale at the same time by making the minimum scale in macroscopic big enough to solve both problems at once.

Which scale do you recommend? I was thinking that having 1cm as the minimum size would likely be fine. People can make ants that way and also elephants won’t be that many orders of magnitude bigger.

1 Like

Oh. I was assuming this would be a bigger issue in terms of changing the game scene and level of detail of the environment as the player scaled up. I assume that as a player gets bigger, organisms smaller than a certain size wouldn’t be rendered or be rendered abstractly, but would there have to be another “transition”, for a lack of a better word, that makes a player play in a more “zoomed out” game scene?

And 1 cm sounds absolutely good to me.

I guess we’ll have to see but I think a proper level of detail system can handle the camera zooming real far into the scene and close to surfaces.

1 Like

Personally I feel quiet strongly that this big of a jump would pose multiple problems. Firstly, it seems rather unbelievable that a microscopic creature could become so macroscopic so quickly. What would it even eat? I don‘t know of any 1cm sized heterotroph that can sustain itself soley on microscopic organisms which are in the micrometers size bracket. Maybe this is just a lack of biological knowledge on my part, though… In my imaginations the 1cm large animals would need intermediately sized animals to consume which in turn feed on the really microscopic organisms. Like a predatory beetle feeding on tiny mites which in turn eat microscopic organisms?

Secondly, it just feels like we‘d skip over a really interesting and unique perspective on the world which is seldomly depicted in video games. As a 1cm creature you could already percieve things around you like rocks, pebbles, different sediments etc. As a 1mm creature I‘d imagine that the world is even more simplified and blurred out than at larger scales. You could only see the average colors of your environment and you could only see things which are very close to you. Your creature and others of the same size would still all be transparent, like they were in the microbe stage. I feel like this would help in making the transition between the stages smoother and more coherent.

As a summary: I‘d suggest putting the starting scale of the 3D stages at 1mm instead of 1cm. The environment could be very simplified and things like rocks and much larger creatures wouldn‘t have to be depicted at all at this point. The details of at what scale we start to show larger things at at what scale we start to simplify and omit smaller things will have to be worked out in an expanded 3D environment GDD.

I guess we’ll see what ends up being worked on but I really wouldn’t like to do this as like was discussed above this kind of doubles the effort with visuals development (we need to do the visuals twice, once for really small scale and once for “normal” scale).

1 Like

I guess my response to that concern would be that the visuals for the very small scale would be much much simpler to create than the visuals for the large scale since it requires practically bo assets. Since we have to do the more complex big scale anyways, I‘d say including visuals for the small scale would be more like making ~1.2 times the visuals that we would have to make anyways.

I understand the hesitance, but along with the multiple environments issue, there’s also the fact that progression could be very messy if we start from a very small scale. Many advanced or more complex anatomical structures just don’t make much sense at a very small scale. I guess we could theoretically limit certain “unlocks” behind a minimum size, but then the issue is scaling down too. A lot of theory behind metabolism and stuff at the macroscopic scale is oriented between the more traditional orders of magnitude as well, so there’s that.

After a certain scale, microbial clouds are microbial clouds still too - once organisms reach a certain size, metabolic strategies generally revolve around filter feeding and predation on other organisms. I think it would be fine to include this skip if it means a much more cohesive and doable scope, though it will obviously be somewhat of a limitation to our grand mission to “simulate any life ever”.

2 Likes

The organ progression relating to scale is certainly an interesting topic. In some other thread this was talked about: The smaller you are, the more you could rely on things like oxygen simply diffusing in your cells due to the small volume to surface ratio. As you become larger, a clearly defined circulatory system would become more and more necessary.

The issue of circulation is something which is also a reason to include scales of around 1mm. At this scale the player starting as a very simple blob of cells feels more realistic than if they started as an undefined 1cm blob. At 1cm size, most heterotrophs I know of like insects have a clearly defined respiratory system, which still isn‘t really muscular and still relies on passive diffusion, but insects at least have clearly defined cavities through which air can circulate in their interior to provide more surface for diffusion. Does this make sense? Maybe there are somewhat motile organisms of 1cm size that are much simpler of which I‘m not aware of.

Also, the issue which I raised earlier of feeding a 1cm blob which lives in a world devoid of ~1mm organisms and has to rely on consuming microbes in the micrometer size range hasn‘t been adressed so far either. Your arguments so far revolved mainly around implementability and scope which are very important things to consider. But what do you think about the realism argument? Do you guys think a very undefined 1cm blob is a more or less realistic thing to exist in the kind of world this stage would portray?

2 Likes