this post was submitted on 16 Jul 2025
17 points (100.0% liked)
Procedural Generation
161 readers
7 users here now
A community to discuss and share anything procedural generation related, for example game worlds and assets, or simulations whether scientific or ludic.
From Wikipedia:
Procedural generation is a method of creating data algorithmically as opposed to manually, typically through a combination of human-generated assets and algorithms coupled with computer-generated randomness and processing power.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I start with perlin with several scales, mixed together. But then I do a lot of extra stuff.
For example, a filter of my own creation I call "swiggle" helps create curved linear features. Sample of what it does to a checkerboard.
I like to find things like steep gradients and erode them to help form mountain ranges that have passes in them and such. So I'll do something like a Voronoi map, where the density of cells is related to the map gradient. Then calculate features per cell. That way great plains stay relatively flat.
I'm currently hung up in doing erosion and deposition properly. Not like a fake single pass version, but an iterative version that moves things over time. That has led me into some scientific computing rabbit holes where geoscientists do real simulations. But python cannot handle that well.
Ah nice swiggle. It creates vortices in input coordinates or something to that effect ?
If you're finding gradients does that mean you compute surface derivatives or do you "just" look at neighbouring points ? I can't figure that out in geonodes yet, supposedly that's something a shader is better suited for (and more performant). But I don't know the first thing about OSL and stuff.
Wrt erosion, in Blender there's a framework in place for making solvers (simulation zone). But you still have to write the actual solver... and I have to say I totally overlooked deposition last time I worked on it... and "worked" is a big word ๐
Yeah, swiggle is pretty much exactly that. The coordinates, amplitudes, and radius are randomized (based on the map seed, so it is reproducible). It makes a good distortion on top of things like mountain range positions. You don't see the swirls in practice.
Yeah, I mathematically compute a gradient vector. Which is actually one of the very easy things to do in python. I then bias Voronoi cell centre point density based on the amplitude of the local gradient.
The same gradient calculations would be used in a real erosion/deposition model. Where the gradient is high, erode. Move those particles down gradient. Deposit particles where gradient is less steep. Repeat a thousand times. Marvel at emergent phenomenon like river valleys and deltas. It's the "repeat a thousand times" that python really struggles with. It's fine to run it once and wait. But I don't want it to be days of modeling per map :)