mapv10 Generator
Rust generator for mapv10 artifacts.
The generator owns map truth and writes typed products, previews, and validation reports. It must not depend on browser state, Three.js, UI state, React, or downstream application simulation.
Lake mesh output is generated from mapv10-lake-polygons-v2 outer rings plus optional hole rings through earcutr; the generator must not reintroduce center-fan lake surfaces or bbox quads.
Initial responsibility:
- parse seed/config
- produce deterministic staged artifacts
- write manifests and byte-length metadata
- validate generated products before viewer consumption
Implemented modules:
config,model,artifacts,validation,previews, andstages.- Stages:
00-config,01-continent,02-geography-graph,03-heightfield,04-water,05-biomes-materials,06-political,07-routes,08-map-features,09-influence,10-borders-sdf,11-tile-pyramid,12-meshes,13-readiness,14-previews, and15-valenar-worlddata.
Stage 09-influence writes generic influence registries, deterministic source
anchors, corruption intensity/type masks, and derived effective visual/material
products without mutating base biome/material truth.
Stage 15-valenar-worlddata writes run-local Valenar bridge products under
valenar/world-<seed>.json and valenar/world-<seed>.mesh.json. The export
preserves mapv10 numeric ids, derives Valenar regions/areas/provinces/Locations
from generated truth, normalizes Location facts, emits gameplay anchors, and
shares a deterministic content hash between the gameplay JSON and mesh manifest.
Valenar's runtime default remains the small world-42 dummy fixture until an
explicit import/package step chooses one of these generated products.
Commands:
cargo fmt --check
cargo test --release
cd ../viewer && npm run fixture:continent
../viewer/public/continent-lod6 is the canonical browser proof fixture served
as /mapv10/runs/continent-lod6/manifest.json by npm run verify:browser:continent; bootstrap it through the viewer
fixture:continent script so the generated Valenar WorldData export is also
validated. The fixture must include the current required raster contract,
including materialWeightsB, influence masks, and effective visual/material
products at the root and in every raster tile.
See:
../architecture.md../roadmap.md