diff --git a/tilemap/include/generation.h b/tilemap/include/generation.h index 716ad91..c783f29 100644 --- a/tilemap/include/generation.h +++ b/tilemap/include/generation.h @@ -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 diff --git a/tilemap/src/generation.cpp b/tilemap/src/generation.cpp index 271ee4a..58007e4 100644 --- a/tilemap/src/generation.cpp +++ b/tilemap/src/generation.cpp @@ -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 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};