Generator article: Added TOC with links.
This commit is contained in:
parent
6f7ac0089f
commit
49b39f97e0
@ -8,7 +8,24 @@
|
||||
specific to MCServer, though, it can be viewed as a generic guide to various terrain-generating algorithms,
|
||||
with specific implementation notes regarding MCServer.</p>
|
||||
|
||||
<h2>Preface: How it's done in real life</h2>
|
||||
<p>Contents:
|
||||
<ul>
|
||||
<li><a href="#preface">Preface: How it's done in real life</a></li>
|
||||
<li><a href="#expectedprops">Expected properties</a></li>
|
||||
<li><a href="#reversingflow">Reversing the flow</a></li>
|
||||
<li><a href="#composablegen">The ComposableGenerator pipeline</a></li>
|
||||
<li><a href="#coherentnoise">Using coherent noise</a></li>
|
||||
<li><a href="#biomegen">Generating biomes</a></li>
|
||||
<li><a href="#heightgen">Terrain height</a></li>
|
||||
<li><a href="#compositiongen">Terrain composition</a></li>
|
||||
<li><a href="#finishgen">Finishers</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="preface"><h2>Preface: How it's done in real life</h2></a>
|
||||
<p>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. </p>
|
||||
|
||||
<h2>Expected properties</h2>
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="expectedprops"><h2>Expected properties</h2></a>
|
||||
<p>For a MineCraft-like game terrain generator we need the generator to have several properties:
|
||||
<ul>
|
||||
<li>The generator must be able to generate terrain in small chunks. This means it must be possible to
|
||||
@ -37,8 +57,9 @@ distinction will be discussed later.</li>
|
||||
</p>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>Reversing the flow</h2>
|
||||
<a name="reversingflow"><h2>Reversing the flow</h2></a>
|
||||
<p>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.</p>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>The ComposableGenerator pipeline</h2>
|
||||
<a name="composablegen"><h2>The ComposableGenerator pipeline</h2></a>
|
||||
<p>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'
|
||||
</p>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>Using coherent noise for the generation</h2>
|
||||
<a name="coherentnoise"><h2>Using coherent noise for the generation</h2></a>
|
||||
<p>For a great tutorial on coherent noise, see the <a href="http://libnoise.sourceforge.net/">LibNoise
|
||||
documentation</a>.</p>
|
||||
<p>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.</p>
|
||||
|
||||
|
||||
|
||||
<h2>Generating biomes</h2>
|
||||
<hr />
|
||||
|
||||
<a name="biomegen"><h2>Generating biomes</h2></a>
|
||||
<p>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.</p>
|
||||
using the same approach as in MultiStepMap - by using a thresholded 2D Perlin noise.</p>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="heightgen"><h2>Terrain height</h2></a>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="compositiongen"><h2>Terrain composition</h2></a>
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
<a name="finishgen"><h2>Finishers</h2></a>
|
||||
|
||||
<h2>Terrain height</h2>
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue
Block a user