Skip to content

Commit 92981b2

Browse files
paramatRealBadAngel
authored andcommittedNov 8, 2014
Add mgv5. New noise code, uses biome API. Eased 3d noise for terrain, caves, blobs
1 parent d0be274 commit 92981b2

8 files changed

+629
-3
lines changed
 

‎builtin/mainmenu/dlg_create_world.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1717

1818
local function create_world_formspec(dialogdata)
19-
local mapgens = {"v6", "v7", "singlenode"}
19+
local mapgens = {"v5", "v6", "v7", "singlenode"}
2020

2121
local current_seed = core.setting_get("fixed_map_seed") or ""
2222
local current_mg = core.setting_get("mg_name")

‎minetest.conf.example

+11-1
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@
407407
# Mapgen stuff
408408
#
409409

410-
# Name of map generator to be used. Currently supported: v6, v7, singlenode
410+
# Name of map generator to be used. Currently supported: v5, v6, v7, singlenode
411411
#mg_name = v6
412412
# Water level of map.
413413
#water_level = 1
@@ -424,6 +424,16 @@
424424
#mgv6_freq_beach = 0.15
425425
# Perlin noise attributes for different map generation parameters
426426
# Offset, scale, spread factor, seed offset, number of octaves, persistence
427+
428+
#mgv5_np_filler_depth = 0, 1, (150, 150, 150), 261, 4, 0.7
429+
#mgv5_np_factor = 0, 1, (250, 250, 250), 920381, 3, 0.45
430+
#mgv5_np_height = 0, 10, (250, 250, 250), 84174, 4, 0.5
431+
#mgv5_np_cave1 = 0, 7.5, (50, 50, 50), 52534, 4, 0.5
432+
#mgv5_np_cave2 = 0, 7.5, (50, 50, 50), 10325, 4, 0.5
433+
#mgv5_np_ground = 0, 40, (80, 80, 80), 983240, 4, 0.55
434+
#mgv5_np_crumble = 0, 1, (20, 20, 20), 34413, 3, 1.3
435+
#mgv5_np_wetness = 0, 1, (40, 40, 40), 32474, 4, 1.1
436+
427437
#mgv6_np_terrain_base = -4, 20, (250, 250, 250), 82341, 5, 0.6
428438
#mgv6_np_terrain_higher = 20, 16, (500, 500, 500), 85039, 5, 0.6
429439
#mgv6_np_steepness = 0.85, 0.5, (125, 125, 125), -932, 5, 0.7

‎src/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ set(common_SRCS
368368
mapblock.cpp
369369
mapgen.cpp
370370
mapgen_singlenode.cpp
371+
mapgen_v5.cpp
371372
mapgen_v6.cpp
372373
mapgen_v7.cpp
373374
mapnode.cpp

‎src/emerge.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
4242
#include "mg_biome.h"
4343
#include "mg_decoration.h"
4444
#include "mg_ore.h"
45+
#include "mapgen_v5.h"
4546
#include "mapgen_v6.h"
4647
#include "mapgen_v7.h"
4748
#include "mapgen_singlenode.h"
@@ -82,6 +83,7 @@ class EmergeThread : public JThread
8283

8384
EmergeManager::EmergeManager(IGameDef *gamedef) {
8485
//register built-in mapgens
86+
registerMapgen("v5", new MapgenFactoryV5());
8587
registerMapgen("v6", new MapgenFactoryV6());
8688
registerMapgen("v7", new MapgenFactoryV7());
8789
registerMapgen("singlenode", new MapgenFactorySinglenode());

‎src/mapgen_v5.cpp

+496
Large diffs are not rendered by default.

‎src/mapgen_v5.h

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
/*
2+
Minetest
3+
Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net>
4+
5+
This program is free software; you can redistribute it and/or modify
6+
it under the terms of the GNU Lesser General Public License as published by
7+
the Free Software Foundation; either version 2.1 of the License, or
8+
(at your option) any later version.
9+
10+
This program is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
GNU Lesser General Public License for more details.
14+
15+
You should have received a copy of the GNU Lesser General Public License along
16+
with this program; if not, write to the Free Software Foundation, Inc.,
17+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18+
*/
19+
20+
#ifndef MAPGEN_V5_HEADER
21+
#define MAPGEN_V5_HEADER
22+
23+
#include "mapgen.h"
24+
25+
/////////////////// Mapgen V5 flags
26+
//#define MGV5_BLOBS 0x01
27+
28+
extern FlagDesc flagdesc_mapgen_v5[];
29+
30+
31+
struct MapgenV5Params : public MapgenSpecificParams {
32+
u32 spflags;
33+
NoiseParams np_filler_depth;
34+
NoiseParams np_factor;
35+
NoiseParams np_height;
36+
NoiseParams np_cave1;
37+
NoiseParams np_cave2;
38+
NoiseParams np_ground;
39+
NoiseParams np_crumble;
40+
NoiseParams np_wetness;
41+
42+
MapgenV5Params();
43+
~MapgenV5Params() {}
44+
45+
void readParams(Settings *settings);
46+
void writeParams(Settings *settings);
47+
};
48+
49+
50+
class MapgenV5 : public Mapgen {
51+
public:
52+
EmergeManager *emerge;
53+
BiomeDefManager *bmgr;
54+
55+
int ystride;
56+
int zstride;
57+
u32 flags;
58+
u32 spflags;
59+
60+
u32 blockseed;
61+
v3s16 node_min;
62+
v3s16 node_max;
63+
v3s16 full_node_min;
64+
v3s16 full_node_max;
65+
66+
Noise *noise_filler_depth;
67+
Noise *noise_factor;
68+
Noise *noise_height;
69+
Noise *noise_cave1;
70+
Noise *noise_cave2;
71+
Noise *noise_ground;
72+
Noise *noise_crumble;
73+
Noise *noise_wetness;
74+
Noise *noise_heat;
75+
Noise *noise_humidity;
76+
77+
content_t c_stone;
78+
content_t c_dirt;
79+
content_t c_dirt_with_grass;
80+
content_t c_sand;
81+
content_t c_water_source;
82+
content_t c_lava_source;
83+
content_t c_ice;
84+
content_t c_gravel;
85+
content_t c_cobble;
86+
content_t c_desert_sand;
87+
content_t c_desert_stone;
88+
content_t c_mossycobble;
89+
content_t c_sandbrick;
90+
content_t c_stair_cobble;
91+
content_t c_stair_sandstone;
92+
93+
MapgenV5(int mapgenid, MapgenParams *params, EmergeManager *emerge_);
94+
~MapgenV5();
95+
96+
virtual void makeChunk(BlockMakeData *data);
97+
void calculateNoise();
98+
void generateBaseTerrain();
99+
void generateBlobs();
100+
void generateBiomes();
101+
void dustTopNodes();
102+
};
103+
104+
105+
struct MapgenFactoryV5 : public MapgenFactory {
106+
Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) {
107+
return new MapgenV5(mgid, params, emerge);
108+
};
109+
110+
MapgenSpecificParams *createMapgenParams() {
111+
return new MapgenV5Params();
112+
};
113+
};
114+
115+
#endif

‎src/noise.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,6 @@ float noise3d_perlin_abs(float x, float y, float z, int seed,
306306
}
307307

308308

309-
// -1->0, 0->1, 1->0
310309
float contour(float v)
311310
{
312311
v = fabs(v);
@@ -653,3 +652,4 @@ void Noise::transformNoiseMap()
653652
i++;
654653
}
655654
}
655+

‎src/noise.h

+2
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ inline float easeCurve(float t) {
152152
return t * t * t * (t * (6.f * t - 15.f) + 10.f);
153153
}
154154

155+
float contour(float v);
156+
155157
#define NoisePerlin2D(np, x, y, s) \
156158
((np)->offset + (np)->scale * noise2d_perlin( \
157159
(float)(x) / (np)->spread.X, \

0 commit comments

Comments
 (0)
Please sign in to comment.