fix: IslandAxis defaults to the gate's verdict, 1.15/0.90 (terrain-water task 13)

Task 11 shipped 1.30/0.78 as the default; the developer's gate REJECTED that
elongation. The defaults stayed rejected, so any generation that omitted the
two keys silently produced the rejected island and a different biome baseline
(task 11 measured elongation at 12-15% of biome pixels). The developer's own
ServerConfig.json omits them. Flagged in task 12 §4, fixed here.

Both defaults now name LEGACY_AXIS_X/Y, so the default and the bad-value
restore point at one place instead of drifting apart.

VERIFIED, not assumed: generated seed 1825907253 with IslandAxisX/Y absent
from ServerConfig.json entirely -- the generator reports
"Island falloff: axis 1.15x/0.90y".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stewart Howe 2026-08-09 02:20:35 -04:00
parent 6fd00cbfa5
commit a6d4b870fc

View file

@ -52,20 +52,26 @@ namespace IslaApocalypse.Core // Change this if your namespace is different
// A/B. The shelf cannot move the waterline, so biomes and water are identical
// either way. Default: wide.
//
// IslandAxisX/Y: the falloff axis ratios (pre-task-11: 1.15 / 0.90). NOTE,
// measured: the island is already Trench-clamped in x at ~90% of the map
// width, so AxisX is a weak lever — aspect responds almost entirely to AxisY.
// These MOVE THE COASTLINE and therefore move biomes, by design.
// IslandAxisX/Y: the falloff axis ratios. These MOVE THE COASTLINE and
// therefore move biomes, so the DEFAULT is the shape the gate approved.
// Task 11 shipped 1.30/0.78 as the default and the developer's gate REJECTED
// that elongation; the defaults are back to 1.15/0.90 so that omitting the
// keys can no longer silently produce the rejected island (task 12 §4).
// NOTE, measured in task 11: the island is already Trench-clamped in x at
// ~90% of the map width, so AxisX is a weak lever — aspect responds almost
// entirely to AxisY, which trades against land area.
//
// OffshoreIslandDensity: fraction of the ocean noise field above the islet
// threshold. 0 disables the layer. Islets never touch the Trench and are held
// off the mainland by a depth moat.
public static string CoastProfile = "wide";
public static float IslandAxisX = 1.30f;
public static float IslandAxisY = 0.78f;
public static float IslandAxisX = LEGACY_AXIS_X; // 1.15 — the gate's verdict
public static float IslandAxisY = LEGACY_AXIS_Y; // 0.90
public static float OffshoreIslandDensity = 0.02f;
// The pre-task-11 axis ratios, so "steep"/legacy runs can restore them exactly.
// The gate-approved island shape, named so the defaults above and the bad-value
// restore below both point at one place. (`const`, so using it in a field
// initialiser declared earlier resolves at compile time.)
public const float LEGACY_AXIS_X = 1.15f;
public const float LEGACY_AXIS_Y = 0.90f;