I'm still testing this, but if you'd like to try it, it's on github.
Gael de Sailly wrote:Is that normal to find a dry river in the jungle?
:-(duane wrote:Just when I think I've got the riverbeds working, I realize that I've made the jungle tree problem even worse.
Back to the drawing board.

Gael de Sailly wrote:I think I've found the explanation for the incoherent biome repartition around rivers (where there is a dry savanna next to the river and a grassland higher)...
That's not due to humidity, but to temperature. The temperature is decreased (leftward move), so it may leave the "savanna" zone and enter the grassland or forest zone, without humidity change. So that's these biomes that are incoherent.
I don't think so. I think we should modify the biomes. I think the savanna biome is way too high in humidity.duane wrote:Gael de Sailly wrote:The biomes would probably work better without any extra temperature/humidity changes, using stricter altitude limits.
duane wrote:So, at least that was easy to fix.
diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua
index c92514c..fe50cbb 100644
--- a/mods/default/mapgen.lua
+++ b/mods/default/mapgen.lua
@@ -672,7 +672,7 @@ function default.register_biomes()
y_min = 5,
y_max = 31000,
heat_point = 85,
- humidity_point = 20,
+ humidity_point = 10,
})
minetest.register_biome({
@@ -690,7 +690,7 @@ function default.register_biomes()
y_min = -112,
y_max = 4,
heat_point = 85,
- humidity_point = 20,
+ humidity_point = 10,
})
@@ -708,8 +708,8 @@ function default.register_biomes()
--node_river_water = "",
y_min = 1,
y_max = 31000,
- heat_point = 85,
- humidity_point = 50,
+ heat_point = 65,
+ humidity_point = 30,
})
minetest.register_biome({
@@ -726,8 +726,8 @@ function default.register_biomes()
--node_river_water = "",
y_min = -3,
y_max = 0,
- heat_point = 85,
- humidity_point = 50,
+ heat_point = 65,
+ humidity_point = 30,
})
minetest.register_biome({
@@ -744,8 +744,8 @@ function default.register_biomes()
--node_river_water = "",
y_min = -112,
y_max = -4,
- heat_point = 85,
- humidity_point = 50,
+ heat_point = 65,
+ humidity_point = 30,
})
Fixerol wrote:Is it possible to encounter same savannah but more hot one, so river will be without jungles? or it is always jungles in savannah river?
paramat wrote:many problems, for example rainforest can meet coniferous forest at extreme humidity.
sofar wrote:paramat wrote:many problems, for example rainforest can meet coniferous forest at extreme humidity.
This is entirely valid, and happens in many locations in real-life. For instance, not more than 80km away from me, there is a coastal rainforest that is directly backed by conifers.
duane wrote:[…] the altitude chill code decreases temperature logarithmically (whereas, reality decreases it linearly).
Gael de Sailly wrote:duane wrote:[…] the altitude chill code decreases temperature logarithmically (whereas, reality decreases it linearly).
The Lua VMG uses only positive values. That's not the case for the C++ VMG. Temperature is from -20 to 120, so the exponential decreasing of the temperature (valleys_mapgen.cpp:621-623) is inverted on very cold places. It should be linear.
noise_heat->result[index_2d] -= 20.f * t_alt / altitude_chill;duane wrote:


Gael de Sailly wrote:I've tried to change the altitude chill code with what you have proposed, and I've not seen these strange snow lines, even with the same world seed (from your dry_rivers branch)
diff --git a/src/mapgen_valleys.cpp b/src/mapgen_valleys.cpp
index 94abed3..77a9785 100644
--- a/src/mapgen_valleys.cpp
+++ b/src/mapgen_valleys.cpp
@@ -597,7 +599,8 @@ int MapgenValleys::generateTerrain()
// Derive heat from (base) altitude. This will be most correct
// at rivers, since other surface heights may vary below.
if (use_altitude_chill && (surface_y > 0 || river_y > 0))
- t_heat *= pow(0.5f, MYMAX(surface_y, river_y) / altitude_chill);
+ //t_heat *= pow(0.5f, MYMAX(surface_y, river_y) / altitude_chill);
+ t_heat -= 20.f * MYMAX(surface_y, river_y) / altitude_chill;
// If humidity is low or heat is high, lower the water table.
float delta = noise_humidity->result[index_2d] - 50.f;
@@ -661,7 +664,8 @@ int MapgenValleys::generateTerrain()
// This is similar to the lua version's seawater adjustment,
// but doesn't increase the base humidity.
if (t_alt > 0)
- humid *= pow(0.5f, t_alt / altitude_chill);
+ //humid *= pow(0.5f, t_alt / altitude_chill);
+ humid -= 20.f * t_alt / altitude_chill;
noise_humidity->result[index_2d] = humid;
}
@@ -674,8 +678,8 @@ int MapgenValleys::generateTerrain()
// The altitude hasn't changed. Use the first result.
noise_heat->result[index_2d] = t_heat;
else if (t_alt > 0)
- noise_heat->result[index_2d] *=
- pow(0.5f, t_alt / altitude_chill);
+ //noise_heat->result[index_2d] *= pow(0.5f, t_alt / altitude_chill);
+ noise_heat->result[index_2d] -= 20.f * t_alt / altitude_chill;
}
}
Gael de Sailly wrote:I would like to keep the logarithmic humidity increase near the rivers. The influence of the rivers on humidity is important when you are close to the river, and becomes quickly insignificant when climbing up, contrary to the altitude chill that is linear. But I have not tested your code. If you think that's better, you can commit it.
Hi, my username is azekill_DIABLO and i'm an exelent bug-maker(yeah...i know...i have a bad reputation)azekill_DIABLO wrote:where is cave stuff = false in the mod? i can't found it.
advanced settings
- mods
- valleys_mapgen
- mapgen
- caves
- features
- cave stuff
Users browsing this forum: No registered users and 16 guests