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 // Noise parameters
double temperature_scale = 0.005; // Scale for temperature noise double temperature_scale = 0.005; // Scale for temperature noise
double humidity_scale = 0.007; // Scale for humidity noise int temperature_octaves = 3; // Number of octaves for temperature noise
double base_scale = 0.08; // Scale for base terrain 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 // 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) { , humidity_noise_(config.seed ^ humidity_seed_mask) {
// Calibrate the uniform base noise with the same parameters that will be // Calibrate the uniform base noise with the same parameters that will be
// used for generation // 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) { void TerrainGenerator::generate_map(TileMap &tilemap) {
@ -122,13 +124,14 @@ std::pair<double, double> TerrainGenerator::get_climate(
// Generate temperature noise (0-1 range) // Generate temperature noise (0-1 range)
double temperature = temperature_noise_.octave_noise( double temperature = temperature_noise_.octave_noise(
global_x * config_.temperature_scale, 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) // Generate humidity noise (0-1 range)
double humidity = humidity_noise_.octave_noise( double humidity = humidity_noise_.octave_noise(
global_x * config_.humidity_scale, global_y * config_.humidity_scale, 3, global_x * config_.humidity_scale, global_y * config_.humidity_scale,
0.5 config_.humidity_octaves, config_.humidity_persistence
); );
return {temperature, humidity}; return {temperature, humidity};