Document the multi-culture-per-continent seeding change in CLAUDE.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TMfyZv91tonDnPJqbaTVJE
This commit is contained in:
parent
cd268167b0
commit
78e58171e5
29
CLAUDE.md
29
CLAUDE.md
@ -479,6 +479,28 @@ on the Live World clock). **Steps 1–7 of the roadmap are done (plus a derived
|
|||||||
differs from the capital's own name. Touches `src/sim` (`PlanetCulture.cpp`, `PlanetCiv.cpp`) as
|
differs from the capital's own name. Touches `src/sim` (`PlanetCulture.cpp`, `PlanetCiv.cpp`) as
|
||||||
well as `src/render` — `Nation.name`/`cultureId` are derived/not saved (per the Territory & Culture
|
well as `src/render` — `Nation.name`/`cultureId` are derived/not saved (per the Territory & Culture
|
||||||
entries above), so no save-format version bump.
|
entries above), so no save-format version bump.
|
||||||
|
- **Multiple cultures per continent (was always exactly one)** *(done — see `Planet::seedCultures()`,
|
||||||
|
`src/sim/PlanetCulture.cpp`)* — a continent seeding only ever one culture at the dawn, combined with
|
||||||
|
the existing border-conversion/backfill dynamics, eroded into one super-dominant culture covering
|
||||||
|
the whole world over a long run. `seedCultures()` now splits each continent into
|
||||||
|
**1..`cultDawnMaxPerContinent`** initial peoples via deterministic farthest-point seeding (each
|
||||||
|
settlement joins its nearest seed point — geographically coherent, Voronoi-like regions, not a
|
||||||
|
checkerboard); the target count scales with the continent's settlement population via
|
||||||
|
`cultDawnSettlementsPerCulture` (both new `planet.cfg` knobs). Per-culture ethos/faith/name hashes
|
||||||
|
now fold in `Culture.id` so same-continent cultures (sharing `regionId`/`bank`) get distinct
|
||||||
|
identities instead of colliding. This surfaced a real, previously-latent **ordering bug**:
|
||||||
|
`computeTerritory()` (realm/vassalage grouping, which prefers matching by actual culture and only
|
||||||
|
falls back to same-continent when culture data doesn't exist yet) ran *before*
|
||||||
|
`computeCultures()` populated per-settlement culture — harmless when one culture ≡ one continent,
|
||||||
|
but would leave temporarily multi-cultural realms now. Fixed at the root: `computeCultures()` split
|
||||||
|
into `refreshSettlementCultures()` (the settlement-level seed/backfill/tally slice, no dependency on
|
||||||
|
`nations`) which `computeTerritory()` now calls on itself before grouping — every caller (the viewer
|
||||||
|
and the dozens of existing test call sites) gets correct behaviour automatically. `test_culture.cpp`/
|
||||||
|
`test_cultevo.cpp` updated to assert the new bounded invariant (a continent has 1..N cultures; a
|
||||||
|
single culture never itself spans two continents — still enforced) instead of exact equality.
|
||||||
|
Verified live: one continent now shows six distinct peoples instead of a single dominant culture,
|
||||||
|
with realms still correctly mono-cultural. `src/sim` + `src/render`; cultures are derived/not saved,
|
||||||
|
so no save-format version bump.
|
||||||
|
|
||||||
## Current state
|
## Current state
|
||||||
|
|
||||||
@ -1341,7 +1363,12 @@ triangles (plates are fixed in phase 1).
|
|||||||
lower = easier colonial breakaways), `cultSchismMinCluster` (2, distant settlements needed to break away
|
lower = easier colonial breakaways), `cultSchismMinCluster` (2, distant settlements needed to break away
|
||||||
together), `cultSchismRate` (0.08, per-year chance per qualifying culture). All rates 0 = the static
|
together), `cultSchismRate` (0.08, per-year chance per qualifying culture). All rates 0 = the static
|
||||||
pre-Step-8 world. Runs in the yearly `stepCulture` tick (pure hashes, no RNG); the culture list is
|
pre-Step-8 world. Runs in the yearly `stepCulture` tick (pure hashes, no RNG); the culture list is
|
||||||
capped at 64 peoples.
|
capped at 64 peoples. Dawn seeding (`Planet::seedCultures()`, before Step 8 evolution runs at all):
|
||||||
|
`cultDawnSettlementsPerCulture` (5, target dawn settlements per initial culture on a continent —
|
||||||
|
lower = more initial peoples) and `cultDawnMaxPerContinent` (6, hard cap on how many initial peoples
|
||||||
|
one continent can seed) — raise `cultDawnSettlementsPerCulture` or lower `cultDawnMaxPerContinent`
|
||||||
|
for a world that starts more culturally uniform (closer to the old always-one-per-continent
|
||||||
|
behaviour), lower/raise them the other way for more initial diversity.
|
||||||
- `upliftGain` (PlanetConfig) — m/tick per unit convergence stress; main
|
- `upliftGain` (PlanetConfig) — m/tick per unit convergence stress; main
|
||||||
knob for how fast/high relief builds.
|
knob for how fast/high relief builds.
|
||||||
- `relax` (PlanetConfig) — isostatic relaxation toward base elevation. Peaks
|
- `relax` (PlanetConfig) — isostatic relaxation toward base elevation. Peaks
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user