]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Add octaves to terrain shape
authorElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 19 Aug 2021 15:28:25 +0000 (17:28 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 19 Aug 2021 15:28:25 +0000 (17:28 +0200)
src/biome.c
src/server/mapgen.c

index ca84e1516ad442bd152efd00eb3dc2fb27715d14..b9244c73e31733debadc7e1d4f9bc9d573d1098e 100644 (file)
@@ -10,5 +10,5 @@ f64 get_wetness(v3s32 pos)
 
 f64 get_temperature(v3s32 pos)
 {
-       return smooth2d((((u32) 1 << 31) + pos.x) / 128.0, (((u32) 1 << 31) + pos.z) / 128.0, 0, seed + SO_TEMPERATURE) * 0.5 + 0.5 - (f64) (pos.y - 100) * 0.01;
+       return smooth2d((((u32) 1 << 31) + pos.x) / 128.0, (((u32) 1 << 31) + pos.z) / 128.0, 0, seed + SO_TEMPERATURE) * 0.5 + 0.5 - (f64) (pos.y - 32.0) / 64.0;
 }
index 1bd12c271907492ca0c4a5457d6dbdc9105a5a66..430b48c12e50a3ec3b705626c285f45befa53dd9 100644 (file)
@@ -25,16 +25,18 @@ void mapgen_generate_block(MapBlock *block, List *changed_blocks)
                u32 ux = x + block->pos.x * MAPBLOCK_SIZE + ((u32) 1 << 31);
                for (u8 z = 0; z < MAPBLOCK_SIZE; z++) {
                        u32 uz = z + block->pos.z * MAPBLOCK_SIZE + ((u32) 1 << 31);
-                       s32 height = smooth2d(ux / 32.0, uz / 32.0, 0, seed + SO_HEIGHT) * 16.0 + 128.0;
+                       s32 height = pnoise2d(ux / 32.0, uz / 32.0, 0.45, 5, seed + SO_HEIGHT) * 16.0 + 128.0;
                        bool is_mountain = false;
 
                        double mountain_factor = (smooth2d(ux / 1000.0, uz / 1000.0, 0, seed + SO_MOUNTAIN_FACTOR) - 0.3) * 5.0;
 
                        if (mountain_factor > 0.0) {
-                               height = pow(height * pow(((smooth2d(ux / 50.0, uz / 50.0, 2, seed + SO_MOUNTAIN_HEIGHT) + 1.0) * 256.0 + 128.0), mountain_factor), 1.0 / (mountain_factor + 1.0));
+                               height = pow(height * pow(((smooth2d(ux / 50.0, uz / 50.0, 0, seed + SO_MOUNTAIN_HEIGHT) + 1.0) * 256.0 + 128.0), mountain_factor), 1.0 / (mountain_factor + 1.0));
                                is_mountain = true;
                        }
 
+                       height -= 96.0;
+
                        for (u8 y = 0; y < MAPBLOCK_SIZE; y++) {
                                s32 ay = block->pos.y * MAPBLOCK_SIZE + y;
                                s32 diff = ay - height;