World Building

Building worlds from scratch can be a tedious process.  Aside from the technical limitations you generally run into (size and precision, rendering vegetation and surfaces, etc) one of the biggest issues is simply creating it in a reasonable time and to an acceptable quality standard.  Hand-painting on anything other than a micro scale is a bad idea; quality will vary wildly despite being a massive time-sink.  By breaking the world down into biomes, which can be individually fine-tuned, and, in a way, authored, it becomes more viable.  But, that only shifts the problem into a third realm; how do we place the biomes?

wolf_nocamo
From the desert and savannas, to the boreal forests and tundras and the frozen wastes, the player should be able to explore seamlessly and smoothly without interruption or obvious seams in the world

The answer is by using Whittaker Biome Mapping; by starting with some aspects of the world, you can then determine what the surface will look like.  Temperature is a function of location (poles vs equator), altitude (temperature drops at height), and distance to water (oceans act like a heat sink).  Rainfall is a function of not just proximity to the oceans (access to humidity) but also to the direction of any slopes relative to the local airflow (mountains catch clouds and force rain) and seasonal changes (dry v wet seasons).

biome_map
A simple Whittaker Biome Map, with 7 biomes shown. The “Polar Ice Cap” zone sits in above the Taiga and Tundra for a total biome count of 8.

Actually, it’s possible to do this mapping entirely within a shader.  While the Unity Terrain systems and some more exotic spawning systems don’t particularly like this (for now) it does move everything into one pass, and is great for debugging any code responsible for generating temperature or rainfall.

BiomeUV
On the left is the temperature map; yellow hot to blue cold.  In the middle is the rainfall map; blue wet to gray dry.  On the right, the final combination; with rainfall and temperature (back as grayscale maps) appended as UV coords for a single texture lookup.  Yes, I’m aware I got the rainfall map inverted (check where the dry parts are…)

The result?  How about a run from the equator to the south pole, in one continuous sprint….

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this:
close-alt close collapse comment ellipsis expand gallery heart lock menu next pinned previous reply search share star