reikhelm/reikhelm-core/src
Parley Hatch df02911a1b feat(world): procedural overworld generator — continents, climate, rivers
A new `world` generation domain in reikhelm-core, sibling to the dungeon
passes. Builds continuous fields (elevation, temperature, moisture, flow)
and classifies them into biomes — a general-purpose world generator any
game can consume, the foundation for the "generate a world for any game"
app idea.

Stages (each forks its own RNG sub-stream, like the dungeon pipeline):
- noise:     own Perlin + fBm + domain warp (no `noise` crate, same reason
             we own range/shuffle — version drift would change every seed)
- elevation: domain-warped fBm shaped by edge falloff + redistribution
- hydrology: ocean/lake flood, priority-flood depression fill, D8 flow
             accumulation → dendritic rivers that always reach the sea
- climate:   latitude temperature w/ altitude lapse; prevailing-wind
             moisture sweep with orographic rain + emergent rain shadows
- biome:     Whittaker classifier over temperature × moisture

Determinism: same (config, seed) → byte-identical World on every machine.
The whole generator is transcendental-free (only + - * / and comparisons),
so even the f32 fields reproduce exactly cross-platform (spec §7 ethos).

Plus `examples/world_png.rs`: a zero-dependency PNG exporter (hand-rolled
stored-DEFLATE zlib) with biome palette, ocean-depth shading, and hillshade
— a viewer for eyeballing output, kept out of the pure core.

24 new tests (determinism, rain-shadow, depression-filling, river density,
Whittaker corners); full suite 169 passing, clippy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 19:11:04 -06:00
..
passes feat(core): room theming — RoomThemer classifier + themed renderer (10th pass) 2026-05-31 17:03:53 -06:00
recipes feat(core): room theming — RoomThemer classifier + themed renderer (10th pass) 2026-05-31 17:03:53 -06:00
world feat(world): procedural overworld generator — continents, climate, rivers 2026-06-15 19:11:04 -06:00
ascii.rs feat(core): items & creatures — entity layer + EntityPlacer (9th pass) 2026-05-31 01:11:13 -06:00
blackboard.rs feat(core): generation engine — GenContext, Pass, Pipeline, Blackboard 2026-05-28 21:20:29 -06:00
entity.rs feat(core): items & creatures — entity layer + EntityPlacer (9th pass) 2026-05-31 01:11:13 -06:00
geometry.rs feat(core): geometry primitives (Point, Rect, Line) 2026-05-28 21:02:36 -06:00
grid.rs feat(core): derive PartialEq/Eq on Grid<T> and Map 2026-05-28 21:14:12 -06:00
lib.rs feat(world): procedural overworld generator — continents, climate, rivers 2026-06-15 19:11:04 -06:00
map.rs feat(core): room theming — RoomThemer classifier + themed renderer (10th pass) 2026-05-31 17:03:53 -06:00
pass.rs feat(core): room theming — RoomThemer classifier + themed renderer (10th pass) 2026-05-31 17:03:53 -06:00
region.rs feat(core): room theming — RoomThemer classifier + themed renderer (10th pass) 2026-05-31 17:03:53 -06:00
rng.rs feat(core): deterministic ChaCha8 RNG with order-independent fork 2026-05-28 21:07:43 -06:00