1. Realm names no longer literally reuse the capital settlement's own name
("Kingdom of X" where X == the city). Kingdoms/empires now get an
independently generated "place name" (namegen::makeName, keyed on the
capital settlement's permanent id + its own language bank, deterministic
and stable across yearly recomputes) so a realm and the city it's ruled
from read as two distinct places, same as any real one.
2. stepColonization() now skips a realm with no assigned culture
(nat.cultureId < 0) -- nothing to pass on to a new colony, and it stops a
culture-less realm from propagating that gap to its colonies.
3. Realm labels (3D, 2D, and the atlas export) now always show a culture
line -- either the real "(the Velmar)" or an explicit "(cultureless)" in
a muted colour, instead of silently omitting the line when
Nation.cultureId is unset. Makes a genuinely culture-less realm (can
still arise from conquest/schism edge cases) a readable, intentional-
looking state rather than a gap that looks like a rendering bug.
test_culture.cpp updated to rebuild the new independent name deterministically
(mirroring PlanetCulture.cpp's private name-generation formula) instead of
asserting the old capital-name-based format, plus a new assertion that a
realm's place name differs from its capital's own name.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TMfyZv91tonDnPJqbaTVJE
Give the world peoples and faiths on top of Step 3's realms. All derived
deterministically from the (saved) settlement set + geography (pure hashes,
no RNG, recomputed each sim year -> no save-version bump, step-back free).
- PlanetCulture.{hpp,cpp}: computeCultures() groups living settlements into one
culture per inhabited continent, each with a generated people name, a dominant
ethos picked from its cells' environment (Seafaring/Highland/Nomadic/Agrarian,
else a hashed Mercantile/Warlike), and a religion (a Faith focus biased by the
dominant biome + a generated faith name). Runs after computeTerritory().
- Governments: each realm (Nation) gets a GovType from its tier + a deterministic
pick, folded into its name ("Republic of X", "Duchy of X", "X Theocracy", "X
Confederation", "X Dominion", ...) -- culture-driven renaming.
- Culture-driven grouping: realm vassalage is now restricted to the same
continent, so every kingdom/empire is mono-cultural.
- Render: a Culture colour mode (cultureColor, cultural blocs) + pale
buildCultureBorders lines + a Cultures tab + a cell-info culture/faith line +
government-aware realm labels, all under key X. Cultures recompute with
territory in rebuildTerritory().
- test_culture.cpp: one culture per continent, valid ethos/faith, governments per
tier reflected in names, mono-cultural realms, determinism, RNG isolation,
save->load->recompute parity. All 12 suites green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>