As I am developing the world generator it is becoming important to know what the expected properties will be of the flora typically generated in the 3D environment (primarily land part of macroscopic-aware-awakening), ‘grass’ and ‘tree’ equivalents especially. This topic is specifically about what flora will be generated and used, and relates to the more general topic here about expectations for important niches in Thrive.
In typical games there are well developed ways to optimize grass and foliage rendering performance, and that is usually the job of the terrain LOD system which is what I am working on now. Managing and rendering large amounts of flora is going to be a very performance sensitive task and knowing what the flora will be expected to be like is important for knowing how to optimize the LOD and terrain management systems. The more constrained the flora will be, the more optimizations that can be applied. Typical optimizations rely on the simplicity of real life grass and other properties of foliage, specifically its static nature.
How different will the flora be able to be from earth-like standard? Should the foliage be completely generated with auto-evo, or could there be specifically optimized flora generation for specific niches, like grass?
Potential Grass constraints:
Static- Will grass be completely ‘static’ i.e. cannot move on its own. (That doesn’t preclude it blowing in the wind for example) This will enable many useful optimizations and is extremely useful to know for any potential flora to render.
Low complexity- Will it be about the lowest complexity possible? Typical grass in games is rendered using just a few (less than five) flat triangles each blade. If a complex 3D surface model is used this might limit how dense the grass can be without tanking the performance. Various optimizations can be made even to a complex model of flora like a tree, but only so much can be done and it is more critical for something with the density of grass.
Similar to your other recent thread, posting the thoughts I shared with you here as well:
For an immediate answer - grass and other flora should be treated as static objects to ensure our environments which require such objects are not too sparse. If something is motile, I think it should be generally dealt with the same sort of auto-evo that works with the tools a player is also given. It isn’t ideal to bar photosynthetic organisms that move as being important food sources for an ecosystem - I’m imagining a rocky environment where nutrients are too sparse for rooted organisms, but sunlight is still present for there to be photosynthetic “slimes” or “slugs” which can move to given resources but prefer to stay sessile to conserve energy. But those should be unique species, not necessarily the organism we spawn every and call flora.
The most movement I can concieve of for our standard grass is for the possibility of areas of vegetation to shrink or expand in seasonal ecosystems in single organism’s life. For example, in a savannah-like ecosystem, it would be cool to see grass slowly disappear across multiple areas and then reappear at some point to represent a dry-wet season and simulate the sort of evolutionary pressures organisms which live in that environment would face. That isn’t necessarily a matter of movement, and more a matter of spawning and adjusting the underlying stats of the patch itself. So if that isn’t too much work, that would be a nice thing to have; but, to put it a certain way, I don’t at all think this is necessary straight out the box for the purposes of the macroscopic stages.
For a more complex answer on the way I think we deal with flora’s evoltuion: I think that many aspects of flora for a lot of Thrive’s macroscopic development should be simulated in a very simple manner. Kind of like how we treat compounds in the Microbe Stage, I think it’s best to treat many forms of flora, and especially ground cover like grasses, ferns, some bushes, etc., as a resource handled somewhat generically by the game. Its presence, sparcity, and behavior would vary in spawning depending on the characteristics of the environment, but we won’t focus the same attention on fundamental flora evolution as we will on fauna flora evolution. And for the “default” sort of ground cover, it’s ideal for them to be very simple in order to allow their abundance if needed.
Larger flora is a bit of a tougher question. I think it would be beneficial to think of there being “resource” flora for things like larger shrubbery and fruit bushes if conditions are met and if an appropriate evoltuionary period is reached. which is set dependent on the environment itself, while allowing for unique products of a simplified “plant auto-evo” to be present. For trees, I think trusting auto-evo with that more, but slightly loosening how strict trees have to be evolved to their ecosystem, will allow for a balance of appropriateness, variety, and ensuring there are numerous areas of the planet available for trees to be highly present in.
And yes. I think for the goals of Thrive to make sense all foliage has to be generated by auto-evo, but for performance reasons stuff like grass probably needs special rendering handling like maybe just being a texture layer on terrain.
I don’t think we should allow plants that move around in the game. It will be not realistic and it would be a nightmare for performance.
I think we’ll want to anyway be able to render any foliage as billboards when it is far away from the player. So small dense foliage could stay as billboards even when near the player.
Perhaps I should clarify, by completely static I was excluding such things like the carnivorous venus flytraps that interact actively with the environment while still being rooted to a fixed position in the ground. Or even something like flowers opening and closing at different times, though that might be workable more easily as it is a roughly global change instead of unique to each plant. This is a stricter condition than requiring the general flora to be fixed in position on the world. Is this what you also meant? If we render all foliage as billboards this will necessarily be the case.
I agree, I think that photosynthetic organisms that can move to other locations in the world should not be part of the general flora category. And motile photosynthesizers would be far closer to the density of motile animals in those kind of harsh environments, so it could be managed by the same system that manages the other non-sessile organisms.
Well sadly I do think I mean no venus flytraps. Or if allowed it needs to use the same entity limit as moving around creatures do (as it cannot be a billboard).
Thanks for the clarification, this should be enough for me to design the terrain LOD foliage system with.
This level of dynamism should be feasible to do, though the limit might be on how fast the changes can occur. (The amount of change that can be done per real-time second would depend partially on the computer performance, and partially on the system design) We might revisit this later once the system is more complete.
I completely agree with hh on this. All organisms should be handled by auto-evo. They should be displayed as billboards depending on their size and distance relative to the player organism.
Keep in mind that the player organism will have a variable size. I believe the current plan is for the smallest macroscopic organism to be 1cm in size, right? If the player is that small, the blades of gras will be the size of trees relatively to the player. Thus, they would need to be displayed at a similar LOD/with a similar amount of detail as a tree when the player is that small.
How many different species of bulk flora do we want to have for each patch? The current 3D worldgen system allows for any number, but it should have better performance if limited to just a couple for instanced rendering.
For example, having one type of grass equivalent (or tree equivalent at grander scales for forests) would be the best performance and easiest to create, but having maybe up to 4 different types would be doable if needed?
And again, this is just focusing on the bulk flora that would make up 95% or more of the flora, the remaining amount could be entirely unique and more complex and would be handled by the regular entity manager that handles creatures.
Even in a pure game context, I think 4 types of grass would be the absolute minimum to have visual interest to keep large grassy areas from seeming way too repetitive. So I think we should aim for that at a minimum. Though, if we force with miches only a few grass types in each area I think that would be basically enough, but more variety for certain categories of plants would be preferable.
Might it be feasible to compromise by selecting a single type of grass as the ‘dominant’ grass, and have it given 50% or more of the grass instances? Maybe add a second type that is given 25%, and the remaining 25% of the grass could be allocated more dynamically (as many grass types as wanted). That should help out with the efficiency of instancing while still giving a significant fraction to a more freely allocated system.
I haven’t researched how much grass varies to get a sense of either how much variation and distribution is needed to visually look good, and what would be a reasonable approximation of real life. If only we had an expert on this subject at hand… @Thim
I also don’t know how much detail you need to make “believable” grass from a graphics perspective. From a realism perspective, most meadows may have a dozen or so species, but a handful of those could count as big enough to be “not grass”. For display in the game world I could see an algorithm that picks a highest population species as “the grass” and places everything else as “plants” should work well enough. My guess is that you won’t be able to tell until you look at it in game.
To be clear: this is not just about the ground cover/herbaceous layer (“grass”), but also applies to bigger things like shrubs, trees, etc.? I imagine the larger the plants are, the more the demand we will see from players for visual variation? (consciously or not). At the very least, it would be more visible here.
Talking specifically about ground cover, I do want to call attention to the fact that as far as I know pre-grass, on earth there was typically less of a phenomenon of a single very dominant type of plant? So there was supposedly a more even mix of ferns, fronds and other different shapes. Rather than “mostly straight leaf blades, with a few other shapes sparsely mixed in”. But of course, having good performance takes preference here in my opinion.
If anyone’s curious, there’s a collection of grass-less ground cover vegetation in some very pretty photos and some paleo-art in this quora post I came across.
If I understand correctly, we’re talking about the whole herbaceous layer/ground cover here. One thing to keep in mind here is that the vast majority of IRL plant anatomy innovation happened in plants this size. Vasculature, spores, seeds, different pollination types, flowers, etc. A repeated pattern is for example all the “trees” going extinct, and then one of exactly these small plants (with its own unique set of adaptations) evolves to take their place in a new way.
For performance reasons, I think it’s good to restrict the depiction of a lot of these small plants. (Like suggested, just a few unique ones mixed into the bulk) But for the sake of the proper functioning of auto-evo, maybe the diversity of species at this level is actually more important than a big variety of trees. I think putting such a heavy restriction on the number of plant species of this size makes great sense if it is necessary for auto-evo performance, but perhaps not for the purpose of needing to render less plant types (when they can also just be made more rare).
I also want go back here, because I think Hhyyrylainen had a good intuition here in my opinion. If we’re rendering the visible environment for a player-controlled species of about human height and stature: The stereotypical “grass billboard” seen in every video game ever works extremely well for grass and other human-knee-high plants like some medium size ferns and very small woody shrubs. (especially if auto-evo makes them look cool).
But if the dominant ground cover is actually something like clover, very short grass, short and low to the ground ferns? Or, considering this is Thrive we’re talking about: Lichen, moss, some very early land plants or even an algal mat? Maybe in some cases a ground texture is genuinely a more accurate and even better looking depiction? This could even include cases like the taller grass mentioned before, when viewed by a giraffe looking directly down?
Could it be possible to take whatever auto-evo spits out, check how it is supposed to look like from above, and generate a ground texture from it? Perhaps even mixing the different local small plant species into one texture? Could even be combined with some small billboards to give an overall impression. (certainly a technique I’ve also often seen used: vegetation on ground texture and billboards in combination)
It does seem like most other games just use one type of grass to populate the world with, and they seem visually fine. We don’t necessarily have to limit ourselves to what most other games do though, perhaps Thrive will lead the way in realistic lawn visualization technology… if the performance is available.
Correct, depending on the scale the world is viewed at, the amount of large things like trees will have a similar amount of objects on screen rendered at a similar density to smaller scales viewing smaller things like grass. The LOD management system will operate the same at both scales when the detail is similar.
For example, compare the density of plants per unit of screen area of these images of grassland and a forest: (They seem similar at these scales, with the density increasing similarly as you approach the horizon)
This image from that great quora post shows the separate plants better, though it has a bit less density compared to the other images due to the (presumably) smaller scale:
More visual variation can also be given to the higher level of detail models of the plants for those that are close enough to use more detail. It shouldn’t be a performance issue have many more variations for each type of plant for the local area around the camera. They would still need to be approximately visually continuous with the low detail models used when viewing at farther distances, as those could be shared by multiple different variations.
For example, the previous picture with the plants having various shades of purple flowers could have a single low detail billboard with a single average shade of purple that is used across all of that same type of plant. If there is enough performance then perhaps more billboards could be created for the different variants, like a different dark purple and light purple flower billboard.
With the plants and billboards being generated at run time by the game, there should be a significant amount of flexibility that the system has to adapt to the performance budget of the player’s computer.
That should be possible; it could be created using the billboard system by just creating one flat plane billboard from above, then applying that texture to the ground texture. Mixing multiple plant species/different objects should also not be difficult to extend the system with. This might also include other objects like rocks (Are there other objects to consider here? Maybe sticks?).
I wonder, would the density of plants be consistently lower earlier on in the timeline across most/all land biomes? That could be helpful if earlier stages/editor cycles are less dense than later on, if it takes some time for either the plants to evolve enough to become denser or if the environment takes a significant amount of time to be changed to support denser plant coverage?
Also, I know grass didn’t technically exist yet, but those Ordovician plants look quite close to grass to me at this scale.
Good question. One thing that could be very useful here is to look at primary succession. I’m not sure how familiar you are with it (I’m certainly no expert), but it essentially is an overview of the process of how barren environments are transformed by species in phases. Pioneering species well adapted to harsh conditions, such as lichen, fungus, and algae, are first to arrive - and in combination with factors like wind and the water cycle, develop soil. This allows plant life more optimized for ideal conditions, like ferns and grasses, to spread to the environment, which eventually leads to more complex organisms such as towering flora. In some more “developed” environments, like thick forests and jungles, trees then make the ground pretty difficult for there to be intense ground coverage since there is less light peering through to the ground.
Modern primary succession isn’t immediately reflective of the colonization of land by flora and isn’t consistent across all eras - earlier on, the lack of vascular plants meant fungi were rather dominant, and earlier flora were probably more typically adapted to harsher conditions. But overall, I think a good series to keep in mind is - ground covering such as moss, algae, and lichen → ground covering + sparse more advanced groundcover (ferns/non-vascular plants) → thickening non-vascular plants + some pioneer taller structures → thicker tree coverage eventually leading to less groundcover.
Here are some images that could serve as a potential visual reference. I can collect more this upcoming week to serve as that sort of collage we talked about on Discord.
Pioneering Species - Moss and Lichen in Modern-Day, Volcanic Iceland
I think it is important performance-wise for both rendering and auto-evo simulation to heavily restrict the number of plants in Thrive. We need to after all have a lot of performance leftover in the simulation for actual animal species, and even when rendering I think we need to leave quite a bit of performance budget over from the vegetation so that animal herds and stuff like that can be in Thrive.
I won’t say this for certain, but I would think that the average player is not as interested in the variety of small plants as a biologist would be. So we should also concentrate effort and performance budget for the animal side of things which I would guess is much much more noticeable to the average player.
I wrote this post before reading the last few posts of this thread and I think that reinforces my point how we shouldn’t go completely crazy on vegetation so that we have at least some energy to spare on animals
Great! Personally, I think for the sake of making Thrive worlds look visually very distinct, this seems worthwhile.
As for other objects besides the small plants: definitely rocks. In a forest environment, sticks and maybe fallen leaves (again maybe imprints of parts of the auto-evo’d trees above?). Even less frequently, footprints of local fauna, and fauna droppings if we want to be funny?
Going into much detail here really isn’t necessary, but you can see how much you feel is worthwhile.
And one last point on the depiction of abundant flora: Any thought gone into the underwater environment aspects of this?
This seems less likely, but I will ask anyway: any chance of static terrain deformation determined by certain species being present?
Because as in the above photo, for some types of flora I feel like “bumpier-than-usual” terrain with an appropriate texture (perhaps in combination with some 3D models at “bushland” rather than “grassland” density) might look better than both just billboards or just 3D models (at the, I am guessing, very sparse distribution those would need to have).
Also, depending on how wild we go with auto-evo, we could make it so that you might end up with something exotic like land-coral (or stromatolites) instead of (or in addition to) conventional land plants. Do we want to take that possibility into account?
Absolutely agreed with cutting auto-evo flora variation as much as is necessary to create as much space as possible for the fauna. Just wanted to clarify that I think that should happen on auto-evo’s own merits/needs/goals. Since from what HyperbolicHadron is saying, it should be quite possible to get the rendering costs of a variety of very small plants very low. By only placing them occasionally, or literally just integrating them into the ground texture.
Oh I am absolutely sure you’re correct on this. I am aware of my bias in this case!
Though I am not necessarily concerned about the little plants themselves. If macroscopic auto-evo ends up in any way resembling the patterns of real life evolution, then (with flora just as in fauna) the variety of small species to a large degree determines the extent of variety and visual differences in the large species. The latter to a large degree then determines the environment players actually live in. In fact, that probably occupies a large proportion of the screen space at any one time.
And while I am sure the vast majority of player care very little about the minutiae of the evolution of small land plants! Maybe they will appreciate a striking environment that changes over the generations as a result?
But I should probably leave more in-depth discussion on auto-evo to another thread.