Commit graph

2 commits

Author SHA1 Message Date
566abe9784 feat: submarine coast shelf + elongation dials (terrain-water task 11)
COAST. The task's premise -- "the island edge is the steepest part" -- is
right, and the diagnostic locates it precisely: it is the SEABED, not the
land. HeightCurve.Apply returns early at and below sea level, so tasks
05-09 reshaped the land and never touched the water. Measured on the same
seed, distance-from-shore vs height:

                       land reaches 10 m   seabed reaches 10 m   gradient
  curve OFF                   31 px               31 px       0.254/0.258
  curve ON (ships)           186 px               31 px       0.038/0.258

So the landward side is ALREADY the broad shallow shelf terrain_design.md
asks for -- 54% of the island sits under 14 m -- and flattening it further
would only make it mushy. What is left is a shoreline that shelves gently
on land and then drops 6.7x steeper the moment it goes under.

CoastShelf fixes that side: depth' = depth * (1 - 0.775*exp(-depth/100 m)).
The seabed leaves the waterline at 22.5% of its former gradient and
recovers smoothly, so deep water and the Trench keep their shape. Measured
after: 5 m depth at 43 px (was 15), 10 m at 75 (was 31), 30 m at 150 (was
94) -- a 2.4-2.9x wider shallows.

It is strictly positive for positive depth, so it CANNOT move the waterline
by one pixel. Biomes and water bodies come out bit-identical, which is why
the coast is separable from elongation in the batch rather than tangled
with it -- contrary to the task's expectation that all coast work moves
biomes.

ELONGATION. IslandAxisX/Y replace the 1.15/0.90 literals (the spine shares
AxisX, as it always shared the literal). Sized by replaying candidate
falloffs against real terrain rather than guessing -- the replay reproduces
the shipped extents exactly, bbox and land count.

That replay says the task's suggested 1.30/0.85 buys +2.0% aspect, because
THE ISLAND IS ALREADY TRENCH-CLAMPED IN X: it spans 90.5% of the map width,
and 1.15 -> 1.40 moves the west coast only 393 -> ~360 px. Aspect responds
almost entirely to AxisY, which costs land:

  1.30/0.85  +2.0% aspect  +2.9% land      1.30/0.80  +4.9%  -2.2%
  1.30/0.82  +3.7% aspect  -0.1% land      1.30/0.75 +11.5%  -7.3%

Default 1.30/0.78 -- a visible step (+~8% aspect, measured 1.137 -> 1.200)
at ~4% land. The developer's eye tunes it from the batch; the table above
is the price list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 23:29:49 -04:00
896a428d47 fix: round the mountain-spine crest, the real centre line (terrain-water task 11)
The faint mid-map ridge is NOT the squircle/ellipse falloff blend that the
task suspected. Measured, read-only, before touching anything:

  bare falloff, slope step at centre   +2.05e-07  (SMALLER than the
    off-axis controls +2.36e-06 / +3.05e-06 -- Pow(2.5) crushes it,
    because the falloff is ~0 there)
  mountain spine, slope step at centre -7.58e-04  (170x the controls)

On real terrain, with the by-design Trench walls excluded, x = 4096..4099
hold the top FOUR slope-step locations out of 5999 columns. Column-mean
height runs 109.6 -> 135.5 -> 110.7 m across it: a symmetric ridge peaking
exactly on the centre column. Not the noise domain either -- the noise is
sampled over [0, MapSize], so coordinate zero is at the map CORNER. And not
seed-dependent: present on all 10 seeds checked, 6 positive AND 4 negative
(ranks 0, 18, 0, 83), so the "positive seeds only" impression does not hold.

Cause: the spine is Pow(1 - |x - cx|, 3), and |.| peaks at the axis with a
slope discontinuity of magnitude 2. SmoothAbs replaces |d| with
d^2/sqrt(d^2+e^2) -- zero with zero slope at the axis, converging to |d|
away from it -- so the crest rounds without dropping. e = 0.03 (~141 px)
cuts the 1-px kink by 99.3% (-7.64e-04 -> -5.41e-06, against a natural
profile curvature of ~1.1e-07), fills at most 3.9 m, and decays under
0.5 m by ~1100 px.

DEFERRED, reported not fixed: the spine's AXIS is still hard-coded dead
straight down x = centre for the full map height. That is what the
derivative render actually shows -- everything west of centre slopes east,
everything east slopes west. Rounding the crest does not make the range
meander. Per the task's "fix only if trivial, else report and defer" rule,
and confirmed with the developer, the axis is left alone: a wandering spine
is a world-shape change that rebaselines biomes on every seed, and it
deserves its own task and its own gate.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 23:28:45 -04:00