Mapgen Parameters

From Minetest Developer Wiki
Jump to: navigation, search

All map generator algorithms have a few common parameters, plus any mapgen-specific options such as noise parameters or threshhold values. Only mapgen-generic parameters are listed here; mapgen-specific ones are listed in the corresponding mapgen wiki page.

Contents

Mapgen parameter source precedence

There are several sources which the map generator may retrieve parameters from. In order from highest precedence to lowest they are:

  • Hard-coded
  • Lua mods
  • map_meta.txt
  • Game-specific config file
  • Global config file
  • Default settings (set in defaultsettings.cpp)
  • Default object constructor values

List of mapgen parameters

Mapgen name

The name of the map generator algorithm being used. Currently supported:

Mapgen name Developer responsible Description
v5 missing info Description needed
v6 kwolekr, celeron55 The current default map generator. Uses an improved Mapgen v2 algorithm for base terrain; terrain is generated entirely using 2D Perlin noise.
v7 kwolekr The next generation map generator with an emphasis on generating interesting and playable terrain. Has full support for the internal biome infrastructure and uses a mixture of 2D and both positive and negative 3D noise for terrain.
valleys missing info Description needed
carpathian missing info Description needed
fractal missing info Generates maps based on Mandelbrot fractal series
flat missing info Generates completely flat world. Replaces the flat flag in mg_flags. Caves, dungeons, decorations, and biomes need to be explicitly excluded to make a flat and empty world.
singlenode celeron55 Places only a single node everywhere, namely the one aliased to mapgen_singlenode (by default air). Intended to be used by mods that perform total mapgen takeovers.

example: mg_name = v7

Seed

A 64-bit unsigned integer value. At this time, only the lower 32 bits are currently used for randomization.
example: seed = 1246106421

Water level

The y coordinate at which water starts being placed, for mapgens that do place water.
This is also the position at which blocks are assumed to be underground if no block above is present, and thus is not given sunlight.
example: water_level = 1

Mapgen Limit

Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).

  • Only mapchunks completely within the mapgen limit are generated.
  • Value is stored per-world.
  • type: int min: 0 max: 31000

example : mapgen_limit = 4500

Flags parameter

The flags parameter is a set of booleans indicating whether or not a certain option is enabled. Global flags applying to all map generators are listed in mg_flags. Other map generator-specific flags are shown below.
Like all other config and Lua flag fields, they are represented as a comma-delimited string. E.g. the flag string "trees, caves, flat" would direct the Mapgen to create flat terrain with trees and caves.
An exhaustive list of currently recognized Mapgen flags:

Lua/config flag name Defaults Allowed values
mgv5_spflags caverns caverns, nocaverns
mgv6_spflags jungles,biomeblend,mudflow,snowbiomes,trees jungles, biomeblend, mudflow, snowbiomes, flat, trees, nojungles, nobiomeblend, nomudflow, nosnowbiomes, noflat, notrees
mgv7_spflags mountains,ridges,nofloatlands,caverns mountains, ridges, floatlands, caverns, nomountains, noridges, nofloatlands, nocaverns
mgcarpathian_spflags caverns caverns, nocaverns
mgflat_spflags nolakes,nohills lakes, hills, nolakes, nohills
mgvalleys_spflags altitude_chill,humid_rivers,vary_river_depth,altitude_dry altitude_chill, noaltitude_chill, humid_rivers, nohumid_rivers, vary_river_depth, novary_river_depth, altitude_dry, noaltitude_dry

Other fine-tuning parameters are available for each map generator, and can be found in lua_api.txt.

Chunk size

The side length (in MapBlocks) of the cubic area that is generated at once. Default is 5; larger values take longer to generate but blocks generate quicker on average and could produce larger, more intricate caves and dungeons.
Don't mess around with this if you don't know what you're doing! This parameter cannot be modified through the Lua API.

Mapgen Parameter Lua API

The task of getting and setting mapgen parameters is much trickier than it seems it should be. For this reason there exists a small but effective set of API for accomplishing this.

minetest.register_on_mapgen_init()

Available in 0.4.8+

Registers a callback that is called after mods initially run but before the environment is created, while the mapgen is being initialized. This allows modification of map generation parameters via minetest.set_mapgen_params() and registration of additional decorations, nodes, etc. required by the mapgen.

  • mapgen_params — Table of mapgen parameters. Fields that are unset/nil leave that parameter unchanged.
    • mgname — Name of the mapgen to use (e.g. "singlenode", "v6", "v7"). Same format and options as "mg_name" in minetest.conf
    • seed — Seed
    • water_level — Water level.
    • flags — Comma-delimited string of flags to set. Clears a flag if the prefix "no" is added. Same format and options as "mg_flags" in minetest.conf.

Note that this callback is the correct place for a mod to determine and override map generation parameters; reading the configuration file for parameter overrides is incorrect, since there are many other sources from which the mapgen parameters could be set.


minetest.set_mapgen_params()

Available in 0.4.10+

Sets map generation parameters. Cannot be called after the registration period; only initialization and on_mapgen_init (calls made elsewhere will not have any effect).

If there are multiple callbacks registered to run on_mapgen_init and there are multiple calls to minetest.set_mapgen_params(), the effective parameter modification is the one passed to the most recent call to minetest.set_mapgen_params(). Also, since parameter modification does not take effect until after all on_mapgen_init callbacks have been completed, prior staged changes are not visible to later callbacks.

  • mapgen_params — Table of mapgen parameters. Fields that are unset/nil leave that parameter unchanged.
    • mgname — Name of the mapgen to use (e.g. "singlenode", "v6", "v7").
    • seed — Seed
    • water_level — Water level.
    • flags — Comma-delimited string of flags to set. Clears a flag if the prefix "no" is added. Same format and options as "mg_flags" in minetest.conf.
Personal tools
Namespaces

Variants
Actions
Navigation
API
Toolbox