map_gen_util_serialized¶
Source: base/tealdef/climates/gen/map_gen_util_serialized.d.tl
Notes
Types of the map generator's river and ridge helpers, /climates/gen/mapgenutil.tl (MapGenUtil)
and /climates/gen/rivermapgenutil.tl (RiverMapGenUtil). The map editor's node editor
(gui/node_editor/layer_nodes.script.tl) uses them to place rivers, lakes and mountain ridges.
Coordinates are in metres.
Globals¶
Types
| Name | Definition | Description |
|---|---|---|
RiverId |
integer |
Number identifying a generated river. |
MapBounds¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:5
global record MapBounds
Notes
Rectangle of the map area, in metres.
Fields
| Name | Type | Description |
|---|---|---|
min |
Vec2Serialized.Vec2 |
Lower-left corner. |
max |
Vec2Serialized.Vec2 |
Upper-right corner. |
RiverStartConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:10
global record RiverStartConfig
Notes
Settings for MapGenUtil.findGoodRiverStarts.
Functions
getStartWeight(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:11
Notes
Weight of a position; positions with a negative weight are river sources.
Returns number
RiverStartResult¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:15
global record RiverStartResult
Notes
A river start point.
Fields
| Name | Type | Description |
|---|---|---|
pos |
Vec2Serialized.Vec2 |
Start position. |
angle |
number |
Start direction in radians. |
weight |
number |
Start weight at the position. |
RiverData¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:21
global record RiverData
Notes
A sampled river position in the collision grid.
Fields
| Name | Type | Description |
|---|---|---|
riverId |
integer |
River the sample belongs to. |
position |
Vec2Serialized.Vec2 |
Sample position. |
RiverMap¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:26
global record RiverMap
Notes
Collision grid of river samples, used to keep rivers apart.
Fields
| Name | Type | Description |
|---|---|---|
riverMap |
{{RiverData}} |
Samples per grid block (800 m blocks). |
RiverBuilderConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:30
global record RiverBuilderConfig
Notes
Settings for MapGenUtil.makeRivers.
Fields
| Name | Type | Description |
|---|---|---|
curvature |
number |
Random direction change per segment (default 0.2). |
map |
RiverMap |
Collision grid; created if nil. |
depthScale |
number |
Factor on the river depth. |
segmentLength |
number |
Length of a river segment in metres; derived from the remaining length if nil. |
minLength |
number |
Rivers shorter than this (in metres) are discarded. |
bounds |
MapBounds |
Map bounds; rivers stop 5 km outside them. |
maxOrder |
integer |
Highest branching order of tributaries. |
baseProbability |
number |
Factor on the probability of tributaries per segment. |
minDist |
number |
Minimum number of segments between two tributaries. |
currentRiverId |
RiverId |
Id of the river being built; incremented for every river. |
Functions
getRiverWeight(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:33
Notes
Weight of a position; each step picks the direction with the highest weight below 1.2.
Returns number
RiverResult¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:44
global record RiverResult
Notes
A generated river with values per point.
Fields
| Name | Type | Description |
|---|---|---|
points |
{Vec2Serialized.Vec2} |
Point positions. |
widths |
{Vec2Serialized.Vec2} |
Bank widths per point (x left, y right). |
depths |
{number} |
Depth per point. |
tangents |
{Vec2Serialized.Vec2} |
Curve tangent per point. |
widthTangents |
{Vec2Serialized.Vec2} |
Width tangent per point. |
depthTangents |
{number} |
Depth tangent per point. |
features |
{Feature} |
Flags per point. |
feeders |
{integer} |
Index of the tributary that joins at a point (-1 or nil for none). |
RiverResult.Feature¶
record base/tealdef/climates/gen/map_gen_util_serialized.d.tl:45
record Feature
Notes
Flags of one river point.
Fields
| Name | Type | Description |
|---|---|---|
curve |
boolean |
The point was added as a meander. |
lake |
boolean |
The point is part of a lake. |
lakeDist |
number |
Distance in points to the nearest lake or tributary. |
RidgeResult¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:60
global record RidgeResult
Notes
A generated mountain ridge.
Fields
| Name | Type | Description |
|---|---|---|
points |
{Vec2Serialized.Vec2} |
Ridge points. |
heights |
{number} |
Height per point. |
directions |
{number} |
Direction per point in radians. |
RidgesBuilderConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:66
global record RidgesBuilderConfig
Notes
Settings for MapGenUtil.makeRidges.
Fields
| Name | Type | Description |
|---|---|---|
bounds |
MapBounds |
Map bounds. |
density |
number |
Ridges per 2048 m tile; if nil, 0 to 2 are chosen with probabilityLow and probabilityHigh. |
minHeight |
number |
Lowest peak height. |
maxHeight |
number |
Highest ridge height. |
probabilityLow |
number |
A random number above this gives no ridge in a tile. |
probabilityHigh |
number |
A random number above this (and not above probabilityLow) gives one ridge, otherwise two. |
Functions
ridgeMask(Vec2f) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:73
Notes
Mask value of a position; ridges stop where it is below 0.5.
Returns number
RidgesResult¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:76
global record RidgesResult
Notes
A generated ridge with points as {x, y} pairs.
Fields
| Name | Type | Description |
|---|---|---|
points |
{{number, number}} |
Ridge points. |
heights |
{number} |
Height per point. |
directions |
{number} |
Direction per point in radians. |
SubdivideConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:82
global record SubdivideConfig
Notes
Settings for RiverMapGenUtil.subdivide.
Fields
| Name | Type | Description |
|---|---|---|
nSegments |
integer |
Number of segments each river segment is split into. |
LakeConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:86
global record LakeConfig
Notes
Settings for RiverMapGenUtil.makeLakes.
Functions
probability(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:87
Notes
Lake probability at a position.
Returns number
startProbability(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:88
Notes
A lake starts where probability exceeds this value.
Returns number
endProbability(number, Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:89
Notes
A lake ends where 1 - probability exceeds this value; receives the current lake size in points.
Returns number
makeProfile(number) : Vec2Serialized.Vec2, number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:90
Notes
Width and depth of a lake point; the argument runs from -1 at the lake start to 1 at its end.
Returns Vec2Serialized.Vec2, number
RidgesConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:93
global record RidgesConfig
Notes
Settings of MapGenUtil.makeRidges (see RidgesBuilderConfig).
Fields
| Name | Type | Description |
|---|---|---|
bounds |
MapBounds |
Map bounds. |
probabilityLow |
number |
A random number above this gives no ridge in a tile. |
probabilityHigh |
number |
A random number above this (and not above probabilityLow) gives one ridge, otherwise two. |
minHeight |
number |
Lowest peak height. |
maxHeight |
number |
Highest ridge height. |
Functions
ridgeMask(pos : Vec2f) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:99
Notes
Mask value of a position; ridges stop where it is below 0.5.
Returns number
RiverResult2¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:102
global record RiverResult2
Notes
A river in the format the terrain generator takes, with {x, y} pairs instead of vectors.
Fields
MapGenUtil¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:111
global record MapGenUtil
Notes
River and ridge generation, returned by ug_require "/climates/gen/mapgenutil.tl".
Functions
findGoodRiverStartBounds(bounds : MapBounds) : RiverStartResult base/tealdef/climates/gen/map_gen_util_serialized.d.tl:112
Notes
Random start point 100 m outside a random edge of the bounds, pointing to the centre.
Returns RiverStartResult
findGoodRiverStarts(bounds : MapBounds, startConfig : RiverStartConfig, attempts : integer) : {RiverStartResult} base/tealdef/climates/gen/map_gen_util_serialized.d.tl:113
Notes
Samples random positions and keeps those with a negative start weight; the direction points to the highest weight 200 m away (8 directions tried).
| Parameter | Type | Description |
|---|---|---|
bounds |
MapBounds |
|
startConfig |
RiverStartConfig |
|
attempts |
integer |
Number of sampled positions. |
Returns {RiverStartResult}: The found start points.
makeRivers(valleys : {RiverResult}, config : RiverBuilderConfig, startLength : number, startPosition : Vec2Serialized.Vec2, startDirection : number, order? : integer, feederId? : integer, feederDir? : number, effluentIndex? : integer, i? : integer) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:114
Notes
Builds a river from a start point and recursively its tributaries, and appends them to valleys.
| Parameter | Type | Description |
|---|---|---|
valleys |
{RiverResult} |
List the rivers are appended to. |
config |
RiverBuilderConfig |
River settings; also holds the collision grid and the current river id. |
startLength |
number |
Length budget in metres; the node editor uses 120000. |
startPosition |
Vec2Serialized.Vec2 |
|
startDirection |
number |
|
order? |
integer |
|
feederId? |
integer |
|
feederDir? |
number |
|
effluentIndex? |
integer |
|
i? |
integer |
Returns number: Total river volume, or nil if the river was discarded (blocked by another river or too short).
makeRidges(RidgesConfig) : {RidgeResult} base/tealdef/climates/gen/map_gen_util_serialized.d.tl:116
Notes
Places random mountain ridges in 2048 m tiles over the bounds.
Returns {RidgeResult}
convertRiver(valleys : {RiverResult}) : {RiverResult2} base/tealdef/climates/gen/map_gen_util_serialized.d.tl:117
Notes
Converts rivers to RiverResult2, with vectors replaced by {x, y} pairs.
Returns {RiverResult2}
RiverMapGenUtil¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:120
global record RiverMapGenUtil
Notes
River post-processing, returned by ug_require "/climates/gen/rivermapgenutil.tl".
Functions
makeSubdivision(river : RiverResult, subdivideConfig : SubdivideConfig) : RiverResult base/tealdef/climates/gen/map_gen_util_serialized.d.tl:121
Notes
Returns a copy of the river with every segment split into nSegments along the Hermite curve.
Returns RiverResult
makeLake(river : RiverResult, lakeConfig : LakeConfig, prepare? : boolean) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:122
Notes
Marks stretches of the river as lakes with the probabilities from lakeConfig and sets their width and depth from makeProfile.
| Parameter | Type | Description |
|---|---|---|
river |
RiverResult |
|
lakeConfig |
LakeConfig |
|
prepare? |
boolean |
If true, only marks the points without changing width and depth. |
makeCurve(river : RiverResult, curveConfig : CurveConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:123
Notes
Bends the tangents of points away from lakes and tributaries to form meanders, and scales widths with getWidthMultiplier.
adjustFeeder(river : RiverResult, rivers : {RiverId : RiverResult}, _adjustConfig : AdjustFeederConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:124
Notes
Sets the depth of each tributary at its junction point to the depth of the receiving river.
subdivide(rivers : {RiverResult}, subdivideConfig : SubdivideConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:125
Notes
Applies makeSubdivision to every river.
makeLakes(rivers : {RiverResult}, lakeConfig : LakeConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:126
Notes
Applies makeLake to every river.
makeCurves(rivers : {RiverResult}, curveConfig : CurveConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:127
Notes
Applies makeCurve to every river.
adjustFeeders(rivers : {RiverResult}, adjustConfig : AdjustFeederConfig) base/tealdef/climates/gen/map_gen_util_serialized.d.tl:128
Notes
Applies adjustFeeder to every river.
CurveConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:131
global record CurveConfig
Notes
Settings for RiverMapGenUtil.makeCurves.
Fields
| Name | Type | Description |
|---|---|---|
baseStrength |
number |
Base strength of the meanders. |
newRiver |
boolean |
Use the newer meander method that rotates tangents. |
Functions
getCurviness(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:133
Notes
Meander strength factor at a position.
Returns number
getWidthMultiplier(Vec2Serialized.Vec2) : number base/tealdef/climates/gen/map_gen_util_serialized.d.tl:135
Notes
Factor on the river width at a position.
Returns number
AdjustFeederConfig¶
record global base/tealdef/climates/gen/map_gen_util_serialized.d.tl:138
global record AdjustFeederConfig
Notes
Settings for RiverMapGenUtil.adjustFeeders (no fields are used).