today i played earthtongue a bunch and it was pretty inspiring wrt plant simulations. like i've been thinking lately about how exactly to cram a bunch of mostly-realtime plant growth into a game without then spending 90% of yr tick time evolving the root system of trees halfway across the world or whatever, and, completely absent any real code tests (never a good idea) i had kind of decided on a few things:
which doesn't really have anything specifically to do with earthtongue.
what was neat about earthtongue was how you could actually, like. see things. oh here are spores floating around; here is how they root. here are the nutrients in the soil. here is how the mold grows. it made it very clear precisely how the plant life-cycles go. like hey maybe you should be able to just look at the world and see how it works. is that so bad?
that kind of feeds into my texture-generation thing, like: so i'm generating textures based on materials? but some of the materials are parametric and they have an affectively infinite range of variants (e.g., crystals take three floats to determine their color). so maybe as i write the actual materials i should keep in mind that any or all of their parameters might end up as visual things, and have them be more like "mineral impurity" or "silt level" or whatever, so that i can render that information out there into the world. (currently each material is like, 32 pixels for the texture, so i'm not really worried about having too many. the only real issue is like, if i have a lot of cosmetic variation even among the exact same material, and that material has like a hundred different parametric variants, then that might be a problem.)
- render magic. don't have a 1:1 correspondence between plant data and what's being rendered. if you have a creeper vine, don't simulate every single rhizome and leaf; just maybe have a very lo-fo branching tree embedded in the world with "growth" and "spread" parameters that you feed into a fancier vegetation generator. the actual simulated-plant would be a weird l-system skeleton that ends up fancifully rendered.
- do growth ticks at staggered intervals and then interpolate between them. so have most things grow slowly enough you can just tick "what will this look like in 10 minutes" and then interpolate into it, interrupting if anything important enough to change that happens (e.g., having yr roots hacked into)
- probably have the growth l-system exist where things like "cell" or "cell face" are atomic elements in the language? so you can have plants that are just like "grow on a cell face and spread to adjacent cell faces", rather than having plants exist in a separate world of raw 3d coordinates (tho i can imagine also having those). likewise, something like "draw nutrients from {cell} at a rate of {whatever}" existing, rather than pretending the world is perfectly continuous.
which doesn't really have anything specifically to do with earthtongue.
what was neat about earthtongue was how you could actually, like. see things. oh here are spores floating around; here is how they root. here are the nutrients in the soil. here is how the mold grows. it made it very clear precisely how the plant life-cycles go. like hey maybe you should be able to just look at the world and see how it works. is that so bad?
that kind of feeds into my texture-generation thing, like: so i'm generating textures based on materials? but some of the materials are parametric and they have an affectively infinite range of variants (e.g., crystals take three floats to determine their color). so maybe as i write the actual materials i should keep in mind that any or all of their parameters might end up as visual things, and have them be more like "mineral impurity" or "silt level" or whatever, so that i can render that information out there into the world. (currently each material is like, 32 pixels for the texture, so i'm not really worried about having too many. the only real issue is like, if i have a lot of cosmetic variation even among the exact same material, and that material has like a hundred different parametric variants, then that might be a problem.)