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>
2.1 KiB
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 |
|
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_visionruns per layer; a player'sPlayerVisionis 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-12asave 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-layercompute_vision),mc-player-api(layer-keyed projection),mc-save(per-layer vision). - Presentation:
fog_renderer.gd+minimap.gdconsume 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