Renamed leftover strings to Cuberite / Server, as needed.
Also upgraded the user setting file for MSVC to 2013.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Generating terrain in MCServer</title>
|
||||
<title>Generating terrain in Cuberite</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Generating terrain in MCServer</h1>
|
||||
<p>This article explains the principles behind the terrain generator in MCServer. It is not strictly
|
||||
specific to MCServer, though, it can be viewed as a generic guide to various terrain-generating algorithms,
|
||||
with specific implementation notes regarding MCServer.</p>
|
||||
<h1>Generating terrain in Cuberite</h1>
|
||||
<p>This article explains the principles behind the terrain generator in Cuberite. It is not strictly
|
||||
specific to Cuberite, though, it can be viewed as a generic guide to various terrain-generating algorithms,
|
||||
with specific implementation notes regarding Cuberite.</p>
|
||||
|
||||
<p>Contents:
|
||||
<ul>
|
||||
@@ -80,7 +80,7 @@ neighboring chunks.</p>
|
||||
<hr />
|
||||
|
||||
<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
|
||||
<p>This leads us directly to the main pipeline that is used for generating terrain in Cuberite. 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
|
||||
sequence:
|
||||
@@ -131,7 +131,7 @@ generated for any number of dimensions.</p>
|
||||
<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
|
||||
world type, or for testing purposes, or for tematic maps. In Cuberite, this is exactly what the Constant
|
||||
biome generator does.</p>
|
||||
|
||||
<p>Of course, there are more interesting test scenarios for which multiple biomes must be generated as easy
|
||||
@@ -175,7 +175,7 @@ gives us the seed's X position. We use another Perlin noise and the same calcula
|
||||
seed.</p>
|
||||
|
||||
<p>Here's an example of a biome map generated using the Voronoi + jitter grid, as implemented by the Voronoi
|
||||
biome generator in MCServer:</p>
|
||||
biome generator in Cuberite:</p>
|
||||
<img src="img/voronoijitterbiomes.png" />
|
||||
|
||||
<h3>Distorted Voronoi</h3>
|
||||
@@ -194,7 +194,7 @@ coordinate before sending the coordinates down to the Voronoi generator:</p>
|
||||
DistortedVoronoiBiome(X, Z) := VoronoiBiome(X + PerlinX(X, Z), Z + PerlinZ(X, Z))
|
||||
</code>
|
||||
|
||||
<p>The following image shows the effects of the change, as generated by MCServer's DistortedVoronoi biome
|
||||
<p>The following image shows the effects of the change, as generated by Cuberite's DistortedVoronoi biome
|
||||
generator. It is actually using the very same Voronoi map as the previous image, the only change has been
|
||||
the addition of the distortion:</p>
|
||||
<img src="img/distortedvoronoibiomes.png" />
|
||||
@@ -241,7 +241,7 @@ either add them somewhere into the decision diagram, or we can make the generato
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<p>This is the approach implemented in MCServer's MultiStepMap biome generator. It generates biome maps like
|
||||
<p>This is the approach implemented in Cuberite's MultiStepMap biome generator. It generates biome maps like
|
||||
this:</p>
|
||||
<img src="img/multistepmapbiomes.png" />
|
||||
|
||||
@@ -296,10 +296,10 @@ generator uses distortion before querying the small areas.</p>
|
||||
<img src="img/twolevelsmallgrid.jpg" /><br />
|
||||
<img src="img/twolevelsmallareas.jpg" /><br />
|
||||
|
||||
<p>The following image shows an example output of a TwoLevel biome generator in MCServer:</p>
|
||||
<p>The following image shows an example output of a TwoLevel biome generator in Cuberite:</p>
|
||||
<img src="img/twolevelbiomes.png" />
|
||||
|
||||
<p>Note that rivers are currently not implemented in this generator in MCServer, but they could be added
|
||||
<p>Note that rivers are currently not implemented in this generator in Cuberite, but they could be added
|
||||
using the same approach as in MultiStepMap - by using a thresholded 2D Perlin noise.</p>
|
||||
|
||||
|
||||
@@ -332,12 +332,12 @@ suddenly become smooth. The following image shows the situation from the previou
|
||||
the averaging process: </p>
|
||||
<img src="img/biomeheightsavg.jpg" />
|
||||
|
||||
<p>The approach used in MCServer's Biomal generator is based on this idea, with two slight modifications.
|
||||
<p>The approach used in Cuberite's Biomal generator is based on this idea, with two slight modifications.
|
||||
Instead of using a separate generator for each biome, one generator is used with a different set of input
|
||||
parameters for each biomes. These input parameters modify the overall amplitude and frequency of the Perlin
|
||||
noise that the generator produces, thus modifying the final terrain with regards to biomes. Additionally, the
|
||||
averaging process is weighted - columns closer to the queried column get a more powerful weight in the sum
|
||||
than the columns further away. The following image shows the output of MCServer's Biomal terrain height
|
||||
than the columns further away. The following image shows the output of Cuberite's Biomal terrain height
|
||||
generator (each block type represents a different biome - ocean in the front (stone), plains and ice plains
|
||||
behind it (lapis, whitewool), extreme hills back right (soulsand), desert hills back left (mossy
|
||||
cobble)):</p>
|
||||
@@ -425,7 +425,7 @@ snow, for example.</p>
|
||||
into an ice block if the biome is cold. This means that any water block that is under any kind of other
|
||||
block, such as under a tree's leaves, will still stay water. Thus an additional improvement could be made by
|
||||
scanning down from the surface block through blocks that we deem as non-surface, such as leaves, torches,
|
||||
ladders, fences etc. Note that MCServer currently implements only the easy solution.</p>
|
||||
ladders, fences etc. Note that Cuberite currently implements only the easy solution.</p>
|
||||
|
||||
<h3>Bottom lava</h3>
|
||||
<p>Most worlds in MineCraft have lava lakes at their bottom. Generating these is pretty straightforward: Use
|
||||
@@ -433,7 +433,7 @@ the user-configured depth and replace all the air blocks below this depth with l
|
||||
that this makes this generator dependent on the order in which the finishers are applied. If the mineshafts
|
||||
generate before bottom lava, the mineshafts that are below the lava level will get filled with lava. On the
|
||||
other hand, if bottom lava is generated before the mineshafts, it is possible for a mineshaft to "drill
|
||||
through" a lake of lava. MCServer doesn't try to solve this and instead lets the admin choose whichever they
|
||||
through" a lake of lava. Cuberite doesn't try to solve this and instead lets the admin choose whichever they
|
||||
prefer.</p>
|
||||
|
||||
<h3>Specific foliage</h3>
|
||||
@@ -500,12 +500,12 @@ anywhere, so it would be rather useless.</p>
|
||||
surface, perhaps a bit more in the mountaineous biomes. There should be quite a few more springs underground,
|
||||
but there should definitely be more water springs than lava springs in the upper levels of the terrain, while
|
||||
there should be more lava springs and almost no water springs near the bottom. To accomodate this, the
|
||||
MCServer team has made a tool that scanned through MineCraft's terrain and counted the amount of both types
|
||||
Cuberite team has made a tool that scanned through MineCraft's terrain and counted the amount of both types
|
||||
of springs in relation to their height. Two curves have been found for the distribution of each type of the
|
||||
spring:</p>
|
||||
<img src="http://mc-server.xoft.cz/img/vanilla_springs_huge.png" />
|
||||
|
||||
<p>MCServer uses an approximation of the above curves to choose the height at which to generate the
|
||||
<p>Cuberite uses an approximation of the above curves to choose the height at which to generate the
|
||||
spring.</p>
|
||||
|
||||
<!--
|
||||
|
||||
Reference in New Issue
Block a user