Skip to content

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

Name Type Description
points {{number, number}} Point positions.
tangents {{number, number}} Curve tangent per point.
widthTangents {{number, number}} Width tangent per point.
widths {{number, number}} Bank widths per point.
depths {number} Depth per point.
depthTangents {number} Depth tangent per point.

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).

Example

-- from base/content/gui/gui/node_editor/layer_nodes.script.tl
local river = map_gen_util.makeRivers(rivers, riverConfig, 120000, start.pos, start.angle)

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).