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.8 KiB
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 |
|
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-visionadjacent) 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:
ConnectionKindenum;current_layertransitions 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