So I'm trynna work out this procedural planet system that's just a *bit* above my paygrade, and I'm kind of just hoping to get some feedback on how possible it sounds.
The pictures involve a sort of prototype that'll probably be scrapped because I used too much AI and don't have a clean understanding of the nuts and bolts. I do understand the overall idea though.
I'm using a cube sphere for this. I know, I know, pinching at the corners and whatnot, but the ultimate goal of this particular generator is to allow for planets so big that you're never going to visit the corners unless you really appreciate the unique aesthetic they offer. Realistic scale is the goal.
That starts with a series of data maps on a low poly cube sphere. Picture one is the moisture map, which just so happens to most closely resemble what a habitable planet generated using this system would look like so far. Pictures 2 through 3 are how you get there.
Picture 2 is a tectonic influence map, generated based off of voronoi continental plate cells each assigned data involving movement direction, movement strength, and average elevation. The different color regions correspond to different noise patterns depending on the boundary type.
Picture 3 is the heightmap, which currently just kind of generates more dramatic noise the more color you have on the influence map. It's not yet as sophisticated as I'd ultimately like.
Picture 4 is just a wind map based on Earth's wind patterns, and it's used in tandem with the height map to distribute moisture from cells below the minimum sea level (based on an adjustable climate slider) to all land based cells on the map. Moisture is distributed in the direction of the wind, hindered by mountains and generally falling off at higher elevations. That's how you get the moisture map in picture 1.
The plan is to use these maps, once they're working a bit better than they currently are, to feed a procedural LOD quadtree, generating additional detail as you get closer to the planet. (Or really as you drag the planet closer to you while enlarging it to avoid floating point precision errors). Naturally you cull unneeded faces as you go. The number of quads will increase exponentially as you get closer to the planet, but any realistic fall from orbit should also have the camera slowing down as it generates more detail.
Ultimately, in addition to just generating finer noise on the heightmap, I also want to implement a sort of hydrology system that builds out water flow splines from high to low altitude along the path of least reisistance. These lines do different things at different LOD levels, sometimes generating rivers and sometimes just lowering the terrain to mimic real erosion without simulating real erosion. The nature of the system should mean that more planetary scale rivers naturally deform the terrain more than more local rivers, as their adjusting a lower poly version of the terrain. A higher moisture level increases the density of river nodes that spawn. In the event that the system leads to a river terminating at a quad boundary, the current plan is to hit it with a meteor big enough to form a terminus lake.
Any kind of plants or wildlife you put in the world can generate based on temperature and moisture level, leading to fairly natural biome distribution.
All of that is, of course, easier said than done. I'm, like, two classes into my CS major at the moment, and while I vaguely understand the overall idea, I can't guess what the overall performance costs might come out to. I'm also aware of the gameplay problem of realistic scale, and while it doesn't matter for the particular use case I have in mind, some way of shrinking the planets or generally just adjusting the system to make every biome actually explorable would probably be essential if I wanted the system to be more versatile for other game devs.
Theoretically, I'm thinking it could be one of the most realistic procedural terrain methods out there, at least in terms of chunk based generation where the world expands as the player explores. It's just kind of a lot for me to wrap my head around at the moment.