From 49b39f97e0d947c655aad64317a6500f94ad61ef Mon Sep 17 00:00:00 2001
From: madmaxoft
Contents: +
The nature has many complicated geological, physical and biological processes working on all scales from microscopic to planet-wide scale, that have shaped the terrain into what we see today. The tectonic plates collide, push mountain ranges up and ocean trenches down. Erosion dulls the sharp shapes. Plantlife takes @@ -21,7 +38,10 @@ mainly because in the nature everything interacts with everything. If a mountain way that the precipitation is carried by the wind to the lands beyond the mountains, thus changing the erosion rate there and the vegetation type.
-For a MineCraft-like game terrain generator we need the generator to have several properties:
As already mentioned, the nature works basically by generating raw terrain composition, then "applying" erosion, vegetation and finally this leads to biomes being formed. Let's now try a somewhat inverse approach: First generate biomes, then fit them with appropriate terrain, and finally cover in vegetation @@ -54,8 +75,9 @@ generate all the vegetation and structures in it, and those can again use the te neighboring chunks.
+This leads us directly to the main pipeline that is used for generating terrain in MCServer. For technical reasons, the terrain composition step is further subdivided into Height generation and Composition generation, and the structures are really called Finishers. For each chunk the generator generates, in this @@ -77,8 +99,9 @@ have 5 biome generators and 3 height generators and you can let the users mix'n'
+For a great tutorial on coherent noise, see the LibNoise documentation.
Coherent noise is a type of noise that has three important properties that we can use to our advantage: @@ -101,7 +124,9 @@ generated for any number of dimensions.
-The easiest way to generate biomes is to not generate them at all - simply assign a single constant biome to everywhere. And indeed there are times when this kind of "generator" is useful - for the MineCraft's Flat world type, or for testing purposes, or for tematic maps. In MCServer, this is exactly what the Constant @@ -272,7 +297,19 @@ generator uses distortion before querying the small areas.
using the same approach as in MultiStepMap - by using a thresholded 2D Perlin noise. +