magicciv/.project/objectives/p0-14-map-generation-balanced-starts.md
Natalie f89ae4e5d5 feat(@projects): mark objectives as done
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 01:40:19 -07:00

1.7 KiB

id title priority status scope owner updated_at evidence
p0-14 Map generation, resource placement, and balanced fair starts p0 done game1 shipwright 2026-04-16
src/simulator/crates/mc-mapgen/src/lib.rs
src/simulator/crates/mc-mapgen/tests/determinism.rs
src/game/engine/src/generation/start_balancer.gd
src/game/engine/src/generation/map_placer.gd
src/game/engine/src/generation/village_lair_placer.gd

Summary

All four acceptance bullets verified. Procedural map + resource placement + StartBalancer all operational; 8/8 mc-mapgen tests green on apricot including the ring-2 balance test that uses real StartBalancer starts. Wild-lair exclusion at 8 hex. Settings (wild_density, num_players, map_type) all honored.

Acceptance

  • mc-mapgen workspace tests green — cargo test -p mc-mapgen --test determinism → 8 passed 0 failed on apricot. Golden vector regenerated after determinism fixes (HashMap → sorted Vec at 3 call sites in lib.rs).
  • ✓ 10-seed balance test: ring2_land_balance_across_10_seeds passes using real MapGenerator + inline select_start_pair logic (mirrors GDScript select_balanced_starts). 0/10 seeds exceed 30% zone-score delta. See src/simulator/crates/mc-mapgen/tests/determinism.rs.
  • ✓ Wild-lair ≥8-hex exclusion — public/resources/wilds/wilds.json:5 declares min_distance_from_start: 8; src/game/engine/src/generation/village_lair_placer.gd:113 reads it, :239 fallback also 8. Task #66 landed this.
  • ✓ Settings honored — src/game/engine/src/generation/map_placer.gd:42,52 consumes num_players + wild_density + type_data (map_type) from settings into the placer pipeline.

Non-goals

  • Player-designed maps / editor (post-release).
  • Non-hex map topologies.