magicciv/.project/objectives/g2-12b-underground-worldgen-oos.md
Natalie 2de6051c5f chore(objectives): fix Game-1 owner integrity + flesh out underground (g2-12) cluster
Game-1 dashboard fix: reassign 5 objectives off specialist-agent names
onto valid team-leads so objectives-report.py regenerates (it aborts on
any owner lacking a .project/team-leads/<owner>.md identity):
  p1-61 game-data->terraformer, p1-57 game-systems->envoy,
  p2-73/p2-60/p2-74 godot-engine|godot-ui->wireguard.

Underground (Game 2, stays OOS): decompose g2-12 umbrella into 8 ordered
phase objectives g2-12a..h (data model+save, worldgen, excavation, cross-
layer movement+pathfinding, per-layer fog, collapse, layer UI, AI
awareness); g2-11 blocked_by tightened to [g2-12a, g2-12c].

Dashboard regenerated: 319 objectives, README.md + objectives.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:24:32 -07:00

2.3 KiB

id title priority status scope category owner created updated_at blocked_by follow_ups
g2-12b Underground — worldgen for L1/L2/L3 + cavern terrain (Game 2) — OOS p3 oos game2 terrain unassigned 2026-06-06 2026-06-06
g2-12a

Context

Generates the underground layers authored by VERTICAL_LAYERS.md + UNDERGROUND.md. Underground starts as Solid Rock everywhere (no hollow space), with pre-existing natural caverns scattered through the rock, plus the underground terrain palette (Cavern, Lava Tube, Underground River, Deep Ore Vein, Ancient Ruins, Mushroom Forest, Collapsed Tunnel).

Depends on the layer data model (g2-12a). No excavation here (that's g2-12c) — this seeds the static underground at map-gen time.

Acceptance (Game 2)

  • Worldgen populates layers L1/L2/L3 with Solid Rock default tile state.
  • Natural Raw Caverns generated as connected networks (per UNDERGROUND.md "Natural Caverns"), some extending beyond surface borders into neutral/enemy territory.
  • Underground terrain types authored from JSON: cavern, lava_tube, underground_river, deep_ore_vein, ancient_ruins, mushroom_forest, collapsed_tunnel — each with movement/yield/combat-modifier fields.
  • Deposit placement extended to underground (Deep Ore Vein production deposits) without altering surface deposit distributions.
  • Deterministic: per-layer generation seeded via the existing SeedDomain/PCG64 pin (WORLDGEN_RNG.md); same seed → byte-identical layers.

Source-of-truth rails

  • Rust crate: mc-mapgen (per-layer generation pass), mc-core (underground terrain registry).
  • JSON path: public/resources/terrain/underground/*.json (reserved in g2-12).
  • mc-core wrapper: reuse TileState cavern-state field added in g2-12c; terrain ids via the biome/terrain registry.

Out of scope (for any milestone)

  • Game 1 surface-only worldgen output must be unchanged (underground layers only generated when the layer stack is enabled).
  • Excavation, claiming, and runtime cavern-state transitions → g2-12c.

References

  • public/games/age-of-dwarves/docs/terrain/UNDERGROUND.md (Natural Caverns, Underground Terrain Types)
  • public/games/age-of-dwarves/docs/terrain/WORLDGEN_RNG.md
  • Parent: g2-12 · Blocked by: g2-12a