Two features (the ecoregions layer was authored locally and was still uncommitted; civilization Step 2 builds on top and is intermingled in shared files, so they land together): Ecoregions (v19, PlanetEcoregions.*, key E): - generateEcoregions() flood-fills cells sharing biome + land/water context + productivity band into named ecological provinces (dominant flora/fauna/funga + per-kind productivity), a separate sEcoRng. ColorMode::Ecoregion + an Eco tab + cell-info dominants. Saved v19 (v18 geography reshuffle salt already in). Civilizations Step 2 (v20, PlanetCiv.*, keys U/I): - computeHabitability(): derived per-cell food/livability (climate comfort + water access (rivers/lakes/coast) + food (flora/fauna + ecoregion productivity), gated by freezing winters / high terrain). ColorMode:: Habitability (key I). - placeSettlements() (key U, "the dawn"): one-time greedy placement on the best well-spaced fertile cells (separate sCivRng; named from the continent's NameGen bank). The set is fixed, so the only mutable per-step state is each settlement's population. - stepCivilization(): logistic growth toward K = civMaxPopulation*habitability, cut where an active volcano ashes the area, so settlements grow / decline / are abandoned (floored at 1 so a site can revive). Tiers village->town->city. Runs in liveAdvance; detectLiveEvents logs kind=3 events. - Step-back snapshots only the population vector (WeatherSnapshot.settlementPop). 3D + 2D tier-sized markers + city/town labels, a Civ tab, cell-info line. buildGeometry() clears settlements on reseed. Save v20; sCellSettlement rebuilt on load. civ* config knobs. New test_ecoregions.cpp + test_civ.cpp; all 10 headless suites pass; GUI build clean. CLAUDE.md / design-notes / BUILD.md updated (roadmap Step 2 done). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
No description provided
Languages
C++
99.6%
CMake
0.4%