Procedural Area Generation using Noise Maps

The procedural terrain within our game has just gotten a bit more interesting. Up until now, the only thing “procedural” about our terrain was the height map (which for now is just a straight Perlin Noise map). In order to be able to start working on our story system, we need a system for defining multiple types of areas (sometimes known by “biomes” in other systems), each of which has unique properties. So, for example, trees are most likely to spawn within a forest. Our game server needs to be able to easily tell what kind of area is at any given coordinates, and use this to either create objects or story elements based on what’s there.

This is actually much easier to accomplish than it might first sound, at least in a simplified way. Essentially, all you need to do is create a variety of different noise maps for the same area. Based on the combination of the noise map values at a particular area, the game defines what exactly the area is. For example, the implementation in our game uses “temperature” and “humidity” as the environmental height maps. For any particular coordinate in the world, if the value of the temperature noise is high, AND the value of the humidity noise is high, the game knows that area is a “forest” . If only the temperature is high, but humidity is low, the area becomes “plains”. So far in our game, this only affects the colour of the ground, as you can see in this post’s screenshot. However, this system is what will be used to figure out where to best place trees, rocks, and other objects. As with the terrain heights, this system is in its infancy. It will be interesting to see how the final implementation compares to this first attempt!

biomes

One more system checked off, and one step closer to procedural story generation!

You may also like...