magicciv/.project/objectives/g2-12-underground-layer-stack-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.5 KiB

id title priority status scope category owner created updated_at blocked_by follow_ups
g2-12 Underground layer stack (Game 2) — OOS p3 oos game2 terrain unassigned 2026-05-03 2026-06-06
g2-12a
g2-12b
g2-12c
g2-12d
g2-12e
g2-12f
g2-12g
g2-12h

Phases (Game 2 implementation order)

Umbrella; the wholesale acceptance below is decomposed into ordered child objectives (all oos/game2):

  1. g2-12a — N-layer data model + save format (foundation; unblocks all)
  2. g2-12b — underground worldgen (L1/L2/L3, natural caverns, terrain palette)
  3. g2-12c — excavation action + cavern lifecycle (state machine, tier gates)
  4. g2-12d — cross-layer movement, connection points + pathfinding
  5. g2-12e — per-layer fog of war + vision
  6. g2-12f — structural integrity + cross-layer collapse/sinkholes
  7. g2-12g — layer rendering + layer-switch UI (phase-gate proof)
  8. g2-12h — AI layer-awareness (or documented surface-only limitation)

Consumer (separate objective): g2-11 vertical city floor stack (depends on g2-12a).

Context

public/games/age-of-dwarves/docs/terrain/VERTICAL_LAYERS.md proposes a multi-layer GameMap: Surface + three subterranean layers (L1, L2, L3). Units carry a current_layer field and transition between layers via mine-shaft tiles. This is foundational for vertical cities (g2-11), underground biomes, and the Kzzykt race's natural habitat.

Game 1 ships surface-only. This objective is the wholesale Game-2 carve-out; nothing here is built for Game 1.

Acceptance (Game 2)

  • GameMap widened to N-layer storage with per-layer tile arrays.
  • Unit current_layer: LayerIndex field; movement disallows direct cross-layer steps except on mine-shaft tiles.
  • Mine-shaft tile type with two-way transition action.
  • Worldgen authors the underground layers per VERTICAL_LAYERS.md.
  • Renderer supports layer toggle in the UI.
  • Save/load round-trips per-layer state.

Source-of-truth rails

  • Rust crate: would live in mc-map (existing crate, widening required) and a new mc-vertical for transitions.
  • JSON path: public/resources/terrain/underground/*.json reserved.
  • mc-core wrapper: LayerIndex(u8), LayerKind enum — to be added.

Out of scope (for any milestone)

  • Single-surface gameplay continues to work in Game 1; widening cannot break the Game 1 save format.

References

  • public/games/age-of-dwarves/docs/terrain/VERTICAL_LAYERS.md
  • .claude/instructions/scope-game1-vs-game2.md
  • Child (depends on this): g2-11