refactor: Update noise parameters in GenerationConfig for better configurability

Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
方而静 2025-08-01 22:21:39 +08:00
parent 75b362037c
commit 31f8e6b385
Signed by: szTom
GPG Key ID: 072D999D60C6473C
2 changed files with 17 additions and 6 deletions

View File

@ -16,8 +16,16 @@ struct GenerationConfig {
// Noise parameters
double temperature_scale = 0.005; // Scale for temperature noise
double humidity_scale = 0.007; // Scale for humidity noise
double base_scale = 0.08; // Scale for base terrain noise
int temperature_octaves = 3; // Number of octaves for temperature noise
double temperature_persistence = 0.4; // Persistence for temperature noise
double humidity_scale = 0.005; // Scale for humidity noise
int humidity_octaves = 3; // Number of octaves for humidity noise
double humidity_persistence = 0.4; // Persistence for humidity noise
double base_scale = 0.08; // Scale for base terrain noise
int base_octaves = 3; // Number of octaves for base terrain noise
double base_persistence = 0.5; // Persistence for base terrain noise
};
// Terrain generator class that manages the generation process

View File

@ -13,7 +13,9 @@ TerrainGenerator::TerrainGenerator(const GenerationConfig &config)
, humidity_noise_(config.seed ^ humidity_seed_mask) {
// Calibrate the uniform base noise with the same parameters that will be
// used for generation
base_noise_.calibrate(config.base_scale, 3, 0.5);
base_noise_.calibrate(
config.base_scale, config.base_octaves, config.base_persistence
);
}
void TerrainGenerator::generate_map(TileMap &tilemap) {
@ -122,13 +124,14 @@ std::pair<double, double> TerrainGenerator::get_climate(
// Generate temperature noise (0-1 range)
double temperature = temperature_noise_.octave_noise(
global_x * config_.temperature_scale,
global_y * config_.temperature_scale, 3, 0.5
global_y * config_.temperature_scale, config_.temperature_octaves,
config_.temperature_persistence
);
// Generate humidity noise (0-1 range)
double humidity = humidity_noise_.octave_noise(
global_x * config_.humidity_scale, global_y * config_.humidity_scale, 3,
0.5
global_x * config_.humidity_scale, global_y * config_.humidity_scale,
config_.humidity_octaves, config_.humidity_persistence
);
return {temperature, humidity};