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

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.


Up next, add some variety to the world with some more center radius logic.

ooooh pretty colors

Now, some outer edge logic for beaches and rivers.

Cool huh?

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?!



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store