Modding:WorldGen Configuration: Difference between revisions

From Vintage Story Wiki
(Created page with "== Sample landform == <pre> { code: "landforms", "variants": [ { "code": "humongous mountain", "comment": "humongous mountains with caverns in them", "hexcol...")
 
Line 31: Line 31:
* <code>terrainOctaves: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]</code> would give you veeeery rugged and chaotic terrain
* <code>terrainOctaves: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1]</code> would give you veeeery rugged and chaotic terrain


=== Octave Thresholds ===
'''Octave Thresholds'''


These act as substractor to the octaves. This allows you for example to generate a flat terrain with a few rare bumps by it, by setting something like this:
These act as substractor to the octaves. This allows you for example to generate a flat terrain with a few rare bumps by it, by setting something like this:
Line 38: Line 38:
terrainOctaves:          [1, 1, 1, 0, 0, 0,  1, 0, 0, 0],
terrainOctaves:          [1, 1, 1, 0, 0, 0,  1, 0, 0, 0],
terrainOctaveThresholds: [0, 0, 0, 0, 0, 0, 0.7, 0, 0, 0],
terrainOctaveThresholds: [0, 0, 0, 0, 0, 0, 0.7, 0, 0, 0],
</code>  
</code>


== Y-Thresholds ==
== Y-Thresholds ==

Revision as of 16:25, 9 September 2017

Sample landform

{
	code: "landforms",
	"variants": 
	[
		{
			"code":  "humongous mountain",
			"comment": "humongous mountains with caverns in them",
			"hexcolor": "#5BC184",
			"weight": 2,
			"useClimateMap": false,
			"terrainOctaves":          [0, 0, 0, 0, 1,   1, 1, 1, 0.6, 0.2],
			"terrainOctaveThresholds": [0, 0, 0, 0, 0.5, 0, 0,   0,   0, 0],
			"terrainYKeyPositions":    [0, 0.33, 0.37, 0.42, 0.43, 0.5, 0.6, 0.7, 0.9, 0.97, 1],
			"terrainYKeyThresholds":   [1,    1, 0.87, 0.84, 0.7, 0.94, 1, 1, 0.1, 0.05, 0]
		},
	]
}


There are 2 system at work that let you control the shape of the terrain - the octaves and the Y-Thresholds.

Octaves

If you know perlin noise, you will know what this is, but shortly explained low octaves will give you very smooth terrain whereas high octave give you rugged/chaotic terrain. You can mix an match freely between those. Examples:

  • terrainOctaves: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] would give you veeeery gradually changing terrain
  • terrainOctaves: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1] would give you veeeery rugged and chaotic terrain

Octave Thresholds

These act as substractor to the octaves. This allows you for example to generate a flat terrain with a few rare bumps by it, by setting something like this:

terrainOctaves: [1, 1, 1, 0, 0, 0, 1, 0, 0, 0], terrainOctaveThresholds: [0, 0, 0, 0, 0, 0, 0.7, 0, 0, 0],

Y-Thresholds

Image you had a side view of a mountain and you could make it wider and thinner at any given elevation. This is approximately how the y-threshold system works. terrainYKeyPositions are the relative (0=bottom, 1=top of the world) coordinates and terrainYKeyThresholds define how much Percent of terrain should be solid blocks (0 = always air, 1 = always solid), or in other words it's density. We could also make a graph of this:

Densitygraph.png

In this example at maximum world height the density is 0, so there will always be air blocks. In the middle we have a jump where the y-position changes, but not the density, so this will create cliffs in the mountain. On the lower end the opposite happens. The Y-Position changes very little but it's density increases a lot. If that position happens to be at the sealevel we would get flat beaches. The default sealevel y-position is 0.43 And below a certain y-position the density is always 1. If we would set that to a lower value, we would get very deep lakes.