mirror of
https://gitlab.com/gaelysam/mapgen_rivers.git
synced 2025-07-03 00:40:38 +02:00
Compare commits
4 Commits
terrainlib
...
v1.0.1
Author | SHA1 | Date | |
---|---|---|---|
2e29474686 | |||
27670addb3 | |||
54b94e6485 | |||
09de0fd298 |
10
README.md
10
README.md
@ -1,14 +1,20 @@
|
||||
# Map Generator with Rivers
|
||||
`mapgen_rivers v1.0` by Gaël de Sailly.
|
||||
`mapgen_rivers v1.0.1` by Gaël de Sailly.
|
||||
|
||||
Semi-procedural map generator for Minetest 5.x. It aims to create realistic and nice-looking landscapes for the game, focused on river networks. It is based on algorithms modelling water flow and river erosion at a broad scale, similar to some used by researchers in Earth Sciences. It is taking some inspiration from [Fastscape](https://github.com/fastscape-lem/fastscape).
|
||||
|
||||
Its main particularity compared to conventional Minetest mapgens is that rivers that flow strictly downhill, and combine together to form wider rivers, until they reach the sea. Another notable feature is the possibility of large lakes above sea level.
|
||||
|
||||

|
||||

|
||||
|
||||
It used to be composed of a Python script doing pre-generation, and a Lua mod reading the pre-generation output and generating the map. The code has been rewritten in full Lua for version 1.0 (July 2021), and is now usable out-of-the-box as any other Minetest mod.
|
||||
|
||||
# Author and license
|
||||
License: GNU LGPLv3.0
|
||||
|
||||
Code: Gaël de Sailly
|
||||
Flow routing algorithm concept (in `terrainlib/rivermapper.lua`): Cordonnier, G., Bovy, B., & Braun, J. (2019). A versatile, linear complexity algorithm for flow routing in topographies with depressions. Earth Surface Dynamics, 7(2), 549-562.
|
||||
|
||||
# Requirements
|
||||
Mod dependencies: `default` required, and [`biomegen`](https://github.com/Gael-de-Sailly/biomegen) optional (provides biome system).
|
||||
|
||||
|
5
init.lua
5
init.lua
@ -4,6 +4,11 @@ local modpath = minetest.get_modpath(minetest.get_current_modname()) .. '/'
|
||||
mapgen_rivers.modpath = modpath
|
||||
mapgen_rivers.world_data_path = minetest.get_worldpath() .. '/river_data/'
|
||||
|
||||
if minetest.get_mapgen_setting("mg_name") ~= "singlenode" then
|
||||
minetest.set_mapgen_setting("mg_name", "singlenode", true)
|
||||
print("[mapgen_rivers] Mapgen set to singlenode")
|
||||
end
|
||||
|
||||
dofile(modpath .. 'settings.lua')
|
||||
|
||||
local sea_level = mapgen_rivers.settings.sea_level
|
||||
|
@ -1,7 +1,7 @@
|
||||
local mtsettings = minetest.settings
|
||||
local mgrsettings = Settings(minetest.get_worldpath() .. '/mapgen_rivers.conf')
|
||||
|
||||
mapgen_rivers.version = "1.0"
|
||||
mapgen_rivers.version = "1.0.1"
|
||||
|
||||
local previous_version_mt = mtsettings:get("mapgen_rivers_version") or "0.0"
|
||||
local previous_version_mgr = mgrsettings:get("version") or "0.0"
|
||||
|
@ -1,5 +1,17 @@
|
||||
-- rivermapper.lua
|
||||
|
||||
-- This file provide functions to construct the river tree from an elevation model.
|
||||
-- Based on a research paper:
|
||||
--
|
||||
-- Cordonnier, G., Bovy, B., and Braun, J.:
|
||||
-- A versatile, linear complexity algorithm for flow routing in topographies with depressions,
|
||||
-- Earth Surf. Dynam., 7, 549–562, https://doi.org/10.5194/esurf-7-549-2019, 2019.
|
||||
--
|
||||
-- Big thanks to them for releasing this paper under a free license ! :)
|
||||
|
||||
-- The algorithm here makes use of most of the paper's concepts, including the Planar Boruvka algorithm.
|
||||
-- Only flow_local and accumulate_flow are custom algorithms.
|
||||
|
||||
local function flow_local_semirandom(plist)
|
||||
local sum = 0
|
||||
for i=1, #plist do
|
||||
|
Reference in New Issue
Block a user