magicciv/.project/objectives/g2-12d-cross-layer-movement-pathfinding-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.8 KiB

id title priority status scope category owner created updated_at blocked_by follow_ups
g2-12d Underground — cross-layer movement, connection points + pathfinding (Game 2) — OOS p3 oos game2 terrain unassigned 2026-06-06 2026-06-06
g2-12a
g2-12c

Context

Units move within a layer normally but change layers only at connection points (mine shaft, natural cavern entrance, Tunnel Sapper dig, Siege Drill breach, city internal descent), per VERTICAL_LAYERS.md + UNDERGROUND.md. The strategic value of underground travel is obstacle bypass, not distance — tunnels nullify mountains/water/enemy territory; transitions cost movement points so short underground hops are often slower than surface travel.

Acceptance (Game 2)

  • Movement disallows direct cross-layer steps; transitions only at connection tiles, each costing MP (descend + ascend both billed).
  • Connection-point tile types with per-type access rules: mine shaft (any unit w/ underground-movement tech, Engineer-built on owned tile), natural entrance (any), Tunnel Sapper dig (creates a new connection over turns), Siege Drill breach (heavy units; connection collapses after use), city internal descent (any friendly unit in-city).
  • Underground movement geometry: same per-tile cost as surface (no distance benefit), but routes ignore surface mountains/water/enemy-territory; underground terrain movement modifiers honored (Lava Tube fast + heat damage, Underground River blocked w/o bridge, Mushroom Forest slow, Collapsed Tunnel impassable).
  • Pathfinding (find_path / find_path_with_fog / movement_range) generalized to multi-layer: routes traverse connection points across layers; the fog-aware preview labels cross-layer segments.
  • cargo test: cross-layer A* via shaft, transition MP billing, access-rule denial, obstacle-bypass route beats blocked surface route.

Source-of-truth rails

  • Rust crate: mc-turn (movement/transition resolution), and the pathfinder. NB: the fog-aware pathfinder currently lives in GDScript (pathfinder.gd), violating Rail 1 — multi-layer pathing should land in Rust (mc-pathfinding/mc-vision adjacent) as part of this phase or its prerequisite Rust port.
  • JSON path: public/resources/terrain/underground/connections.json (connection-point access rules / costs).
  • mc-core wrapper: ConnectionKind enum; current_layer transitions validated against it.

Out of scope (for any milestone)

  • Game 1 surface movement/pathing unchanged.
  • Per-layer fog (what a unit can see after descending) → g2-12e.

References

  • public/games/age-of-dwarves/docs/terrain/VERTICAL_LAYERS.md (Movement Geometry, Layer Transition Cost)
  • public/games/age-of-dwarves/docs/terrain/UNDERGROUND.md (Connection Points, Underground Terrain Types)
  • Parent: g2-12 · Blocked by: g2-12a, g2-12c