From 8166c25ba65af087881e1c67fe0def9d87532715 Mon Sep 17 00:00:00 2001 From: MDietermann Date: Mon, 1 Jun 2026 15:14:22 +0200 Subject: [PATCH] feat(core): add cave-generation and fog tuning to Configuration --- Core/Configuration.cs | 14 ++++++++++++++ VoxelEngine.Tests/ConfigurationTests.cs | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/Core/Configuration.cs b/Core/Configuration.cs index c41adad..6d81e9f 100644 --- a/Core/Configuration.cs +++ b/Core/Configuration.cs @@ -23,4 +23,18 @@ public sealed class Configuration public int WindowHeight { get; set; } = 720; public int? Seed { get; set; } = null; + + // -- Cave generation tuning -- + public float CaveNoiseFrequency { get; set; } = 0.03f; + public float CaveNoiseThreshold { get; set; } = -0.3f; + public int WormCellSize { get; set; } = 64; + public int WormSpawnProbabilityPermille { get; set; } = 300; + public int WormMaxLength { get; set; } = 80; + public float WormMinRadius { get; set; } = 1.5f; + public float WormMaxRadius { get; set; } = 3.5f; + + // -- Cave lighting (fog-distance darkness) -- + public float CaveDarkStartY { get; set; } = 72f; // WorldConstants.SeaLevel + 8 + public float CaveDarkEndY { get; set; } = 32f; // WorldConstants.SeaLevel - 32 + public float CaveMinBrightness { get; set; } = 0.15f; } diff --git a/VoxelEngine.Tests/ConfigurationTests.cs b/VoxelEngine.Tests/ConfigurationTests.cs index 02781ad..f048a4b 100644 --- a/VoxelEngine.Tests/ConfigurationTests.cs +++ b/VoxelEngine.Tests/ConfigurationTests.cs @@ -54,4 +54,24 @@ public class ConfigurationTests Assert.Equal(800, c2.WindowWidth); Assert.Equal(600, c2.WindowHeight); } + + [Fact] + public void Defaults_HaveCaveTuningConstants() + { + var c = new Configuration(); + + // Algorithm + Assert.Equal(0.03f, c.CaveNoiseFrequency); + Assert.Equal(-0.3f, c.CaveNoiseThreshold); + Assert.Equal(64, c.WormCellSize); + Assert.Equal(300, c.WormSpawnProbabilityPermille); + Assert.Equal(80, c.WormMaxLength); + Assert.Equal(1.5f, c.WormMinRadius); + Assert.Equal(3.5f, c.WormMaxRadius); + + // Lighting (fog) + Assert.Equal(72f, c.CaveDarkStartY); // SeaLevel (64) + 8 + Assert.Equal(32f, c.CaveDarkEndY); // SeaLevel (64) - 32 + Assert.Equal(0.15f, c.CaveMinBrightness); + } }