magicciv/.project/objectives/g2-12e-per-layer-fog-vision-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.1 KiB

id title priority status scope category owner created updated_at blocked_by follow_ups
g2-12e Underground — per-layer fog of war + vision (Game 2) — OOS p3 oos game2 terrain unassigned 2026-06-06 2026-06-06
g2-12a
g2-12d

Context

Each layer has independent visibility: standing on the surface does not reveal the rock below, and a unit underground sees only its own layer (within line-of-sight through cavern geometry). Vision is already a Rust producer (mc-vision::compute_vision, g2-70/p2-70) and a tri-state fog renderer (fog_renderer.gd: visible / seen-stale / unexplored-vellum) — both must become layer-aware.

Acceptance (Game 2)

  • compute_vision runs per layer; a player's PlayerVision is keyed by (player, LayerIndex); surface vision never reveals underground tiles and vice versa.
  • Underground line-of-sight follows cavern connectivity (solid rock blocks sight; LoS does not pass through SolidRock), distinct from open-surface LoS.
  • Fog renderer + minimap render the currently-viewed layer's fog only; switching layers (g2-12g) swaps the fog set. Unexplored underground uses the dwarven-vellum treatment already shipped for the surface.
  • Save round-trips per-(player,layer) vision/explored/last-seen state (extends the g2-12a save work).
  • cargo test -p mc-vision: per-layer isolation (surface sight ≠ underground reveal), solid-rock LoS blocking, layer-keyed projection redaction.

Source-of-truth rails

  • Rust crate: mc-vision (per-layer compute_vision), mc-player-api (layer-keyed projection), mc-save (per-layer vision).
  • Presentation: fog_renderer.gd + minimap.gd consume the active layer's vision.
  • mc-core wrapper: vision maps keyed by LayerIndex.

Out of scope (for any milestone)

  • Game 1 single-layer fog (already shipped, incl. dwarven-cartographer unexplored treatment) unchanged.
  • The layer-switch UI itself → g2-12g.

References

  • public/games/age-of-dwarves/docs/terrain/UNDERGROUND.md
  • Related shipped: p1-60 (fog testing/AI fairness), p2-70/g2-70 (mc-vision producer)
  • Parent: g2-12 · Blocked by: g2-12a, g2-12d