Recall that Obsidian’s world generation is not implemented like Mojang’s Minecraft. Mojang takes white noise then runs it through a series of rule engines and zooms.
Obsidian needs similar rules for the biomes. Rules like, beaches generate on land/ocean borders… but if it’s a cold biome, then it’s snowy beaches and don’t forget frozen rivers.
I’m going to leverage some characteristics of cell noise, like the ability to put logic at different radii from cell center (or Point, I’ve been calling it). An example would be a mountain range in the center of a biome with hills/plains on all sides, or a deep ocean surrounded on all sides by a regular ocean, or the outer edges of cells could easily become beaches and rivers.
You know what? Not enough pictures
Okay, let’s actually visualize what’s happening. I’ve been bouncing around between Voronoi and Manhattan cell noise to see what I like the most, but in this example, I’ll use Voronoi. Here’s an unmodified voronoi noise map. I tried to colorize it. Blue is oceans, green is lush biomes, orange and yellow are dry, white is cold, etc…
Now a simple radius rule that says that the center of an ocean will be a deep variant.
Next, some neighbor rules. Illustrated here is a Birch Forest in yellow next to a Grove in greenish brown. I wrote a rule that says if a Grove borders a medium or dry biome (warm/hot), that a stony peaks will generate (gray). Also visible (in lighter gray) is a rule that says stony shores will generate when a Grove borders an ocean.
RULES ARE FUN! LET’S DO SOME MORE
Up next, add some variety to the world with some more center radius logic.
Now, some outer edge logic for beaches and rivers.
Only problem is, this doesn’t look very realistic. Too smooth, shapes too well defined. That’s where some low-frequency, high-power Turbulence noise comes in. Turbulence noise just displaces the input (X,Z) values to shift the map around a bit, make things more wobbly.
How exciting does that look?!