feat: curve v3 — terraced ascent, two benches, white plateau at 220 m (terrain-water task 07)
Per the task-06 ground-test verdict (floor and 420 m ceiling frozen; v2's ascent read flat-then-wall — 87% of the vertical budget in the last 4% of input): the ascent is rebuilt as a terraced climb. Knots recalibrated from the same pooled batch-04 land CDF at P59/72/82/87/95/98 (K=0.509179/0.604081/0.698485/0.767213/0.930304/ 1.050720), pooled land fractions exactly 59/13/10/5/8/3/2 (orange/red/ foothill-riser/bench/mid-riser/plateau/spike). Segments: frozen toe and rise (storm anchors), smoothstep foothill riser to a near-flat 100 m bench, smoothstep mid riser to the near-flat white plateau at 220 m (relocated from 50 m — mountain towns/snow belong there), per-seed-normalized u4 summit spike to 420 m (both retained from v2), linear tail. Per-seed effective-curve monotonicity assertion retained. TerrainCurve gate: "off"|"v3" (default v3); v1/v2 retired with a loud config error (old blueprints regenerable). TCRV: knot slots carry K1..K4 (K5/K6 are version constants), PlateauLo/Hi carry the two bench anchors; version byte selects the semantics. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
5720f05a5b
commit
ae7431ac87
3 changed files with 102 additions and 83 deletions
|
|
@ -26,12 +26,12 @@ namespace IslaApocalypse.Core // Change this if your namespace is different
|
|||
public static string SeaLevelModel = "flat";
|
||||
public static float SeaLevelValue = 0.15f;
|
||||
|
||||
// Height-redistribution curve (tasks 05/06, graduation M-7): "v2" applies the
|
||||
// calibrated storm-ladder curve with the per-seed peak spike (HeightCurve.cs);
|
||||
// "off" is the raw legacy profile. "v1" was dropped with the v2 recalibration
|
||||
// (task-05 blueprints are regenerable). Biome classification is curve-invariant
|
||||
// by construction either way. Default: v2.
|
||||
public static string TerrainCurve = "v2";
|
||||
// Height-redistribution curve (tasks 05/06/07, graduation M-7): "v3" applies
|
||||
// the terraced-ascent curve with the per-seed peak spike (HeightCurve.cs);
|
||||
// "off" is the raw legacy profile. "v1"/"v2" were retired by their successor
|
||||
// recalibrations (old blueprints are regenerable). Biome classification is
|
||||
// curve-invariant by construction either way. Default: v3.
|
||||
public static string TerrainCurve = "v3";
|
||||
|
||||
public static void LoadConfig()
|
||||
{
|
||||
|
|
@ -106,10 +106,10 @@ namespace IslaApocalypse.Core // Change this if your namespace is different
|
|||
if (data.ContainsKey("TerrainCurve"))
|
||||
{
|
||||
string curve = (string)data["TerrainCurve"];
|
||||
if (curve == "off" || curve == "v2")
|
||||
if (curve == "off" || curve == "v3")
|
||||
TerrainCurve = curve;
|
||||
else if (curve == "v1")
|
||||
GD.PrintErr($"[ConfigManager] TerrainCurve 'v1' was retired by the v2 recalibration (task 06). Keeping '{TerrainCurve}' — use \"v2\" or \"off\".");
|
||||
else if (curve == "v1" || curve == "v2")
|
||||
GD.PrintErr($"[ConfigManager] TerrainCurve '{curve}' was retired by a later recalibration (v3, task 07). Keeping '{TerrainCurve}' — use \"v3\" or \"off\".");
|
||||
else
|
||||
GD.PrintErr($"[ConfigManager] Unknown TerrainCurve '{curve}'. Keeping '{TerrainCurve}'.");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue