feat(@projects/@magic-civilization): ✨ add naval combat and caravan trade routes objectives
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
7a65fc2fa1
commit
4a93aaf2ab
5 changed files with 111 additions and 21 deletions
|
|
@ -41,6 +41,8 @@
|
|||
| [g5-02](g5-02-flugel-oos.md) | ⚫ oos | P3 | Flügel playable species — Game 5 (Age of Ascension) | — | 🟢 |
|
||||
| [g5-03](g5-03-gith-oos.md) | ⚫ oos | P3 | Gith playable species (Githyanki + Githzerai) — Game 5 (Age of Ascension) | — | 🟢 |
|
||||
| [g5-04](g5-04-demonia-oos.md) | ⚫ oos | P3 | Demonia playable species — Game 5 (Age of Ascension) | — | 🟢 |
|
||||
| [g6-01](g6-01-naval-combat-oos.md) | ⚫ oos | P3 | Naval combat — out-of-scope (post-v10) | — | 🟢 |
|
||||
| [g6-02](g6-02-caravan-trade-routes-oos.md) | ⚫ oos | P3 | Caravan trade routes — out-of-scope (post-v10) | — | 🟢 |
|
||||
| [p0-01](p0-01-mcts-wiring.md) | 🟡 partial | P0 | Wire MCTS into gameplay AI | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
|
||||
| [p0-02](p0-02-clan-personalities.md) | ✅ done | P0 | Five AI clan personalities drive distinct playstyles | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
|
||||
| [p0-03](p0-03-pvp-in-turn.md) | ✅ done | P0 | PvP combat resolved inside the authoritative turn processor | — | 🟢 |
|
||||
|
|
@ -112,7 +114,7 @@
|
|||
| [p1-25](p1-25-export-script-error-cleanup.md) | ✅ done | P1 | Eliminate parse-error spam in export logs (Unit dup decl + SaveManager stray) | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p1-26](p1-26-tile-placement-preview-ux.md) | ❌ missing | P1 | Tile-placement UX with effect preview — Civ7-style "where does this go and what changes" | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p1-27](p1-27-mcts-service-extraction.md) | ❌ missing | P1 | Extract GPU MCTS into a standalone service/client (model-boss-shaped, magic-civ-only) | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
|
||||
| [p1-28](p1-28-culture-research-tree.md) | 🔵 in_progress | P1 | Culture research tree — real graph, bridge, UI | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p1-28](p1-28-culture-research-tree.md) | 🟡 partial | P1 | Culture research tree — real graph, bridge, UI | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p2-01](p2-01-minimap-improvements.md) | ✅ done | P2 | Minimap — fog reflection and unit markers | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p2-02](p2-02-hud-tooltips.md) | ✅ done | P2 | Tooltips on all HUD elements | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
| [p2-03](p2-03-hotkey-cheat-sheet.md) | ✅ done | P2 | Hotkey cheat sheet (F1 / ?) | [shipwright](../team-leads/shipwright.md) | 🟢 |
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@
|
|||
| Priority | 🔵 | 🟡 | 🔴 | ❌ | ⚫ | ✅ | Total |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **P0** | 0 | 1 | 0 | 0 | 0 | 42 | 43 |
|
||||
| **P1** | 1 | 4 | 0 | 8 | 1 | 25 | 39 |
|
||||
| **P1** | 0 | 5 | 0 | 8 | 1 | 25 | 39 |
|
||||
| **P2** | 0 | 2 | 8 | 0 | 0 | 20 | 30 |
|
||||
| **P3 (oos)** | 0 | 0 | 0 | 1 | 17 | 0 | 18 |
|
||||
| **total** | **1** | **7** | **8** | **9** | **18** | **87** | **130** |
|
||||
| **P3 (oos)** | 0 | 0 | 0 | 1 | 19 | 0 | 20 |
|
||||
| **total** | **0** | **8** | **8** | **9** | **20** | **87** | **132** |
|
||||
|
||||
</td><td valign='top' style='padding-left:2em'>
|
||||
|
||||
|
|
@ -35,16 +35,6 @@
|
|||
|
||||
</td></tr></table>
|
||||
|
||||
## 🔵 In Progress
|
||||
|
||||
> Actively claimed by a team lead. Grouped by owner.
|
||||
|
||||
### [shipwright](../team-leads/shipwright.md)
|
||||
|
||||
| ID | Priority | Title | Updated | Blocked |
|
||||
|---|---|---|---|---|
|
||||
| [p1-28](p1-28-culture-research-tree.md) | P1 | Culture research tree — real graph, bridge, UI | 2026-04-26 | 🟢 unblocked |
|
||||
|
||||
## P0 — Blockers
|
||||
|
||||
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|
||||
|
|
@ -58,6 +48,7 @@
|
|||
| [p0-20](p0-20-gpu-mcts-rollouts.md) | 🟡 partial | GPU-accelerated MCTS rollouts for look-ahead decision-making | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 | 🟢 unblocked |
|
||||
| [p1-05](p1-05-balance-tuning.md) | 🟡 partial | Balance tuning — pop_peak ≥30 median, worker improvements ≥8 min | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
|
||||
| [p1-22](p1-22-mcts-wall-clock-budget.md) | 🟡 partial | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 | 🟢 unblocked |
|
||||
| [p1-28](p1-28-culture-research-tree.md) | 🟡 partial | Culture research tree — real graph, bridge, UI | — | [shipwright](../team-leads/shipwright.md) | 2026-04-26 | 🟢 unblocked |
|
||||
| [p2-22](p2-22-sprite-generation-pipeline.md) | 🟡 partial | Sprite generation pipeline — runnable end-to-end | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-25 | 🟢 unblocked |
|
||||
| [p1-26](p1-26-tile-placement-preview-ux.md) | ❌ missing | Tile-placement UX with effect preview — Civ7-style "where does this go and what changes" | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
|
||||
| [p1-27](p1-27-mcts-service-extraction.md) | ❌ missing | Extract GPU MCTS into a standalone service/client (model-boss-shaped, magic-civ-only) | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 | 🟢 unblocked |
|
||||
|
|
@ -107,6 +98,8 @@
|
|||
| [g5-02](g5-02-flugel-oos.md) | ⚫ oos | Flügel playable species — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
|
||||
| [g5-03](g5-03-gith-oos.md) | ⚫ oos | Gith playable species (Githyanki + Githzerai) — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
|
||||
| [g5-04](g5-04-demonia-oos.md) | ⚫ oos | Demonia playable species — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
|
||||
| [g6-01](g6-01-naval-combat-oos.md) | ⚫ oos | Naval combat — out-of-scope (post-v10) | — | — | 2026-04-26 | 🟢 unblocked |
|
||||
| [g6-02](g6-02-caravan-trade-routes-oos.md) | ⚫ oos | Caravan trade routes — out-of-scope (post-v10) | — | — | 2026-04-26 | 🟢 unblocked |
|
||||
|
||||
## Superseded
|
||||
|
||||
|
|
|
|||
36
.project/objectives/g6-01-naval-combat-oos.md
Normal file
36
.project/objectives/g6-01-naval-combat-oos.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
id: g6-01
|
||||
title: Naval combat — out-of-scope (post-v10)
|
||||
priority: p3
|
||||
status: oos
|
||||
scope: post-v10
|
||||
owner:
|
||||
updated_at: 2026-04-26
|
||||
evidence: []
|
||||
---
|
||||
|
||||
> **Out of scope for Game 1 "Age of Dwarves" and the planned Game 2-5 cycle.** Per `public/games/age-of-dwarves/data/shipping-roadmap.json`, naval combat is in the **post-v10** bucket alongside the Ethereal Plane, caravan trade routes, map editor, and mod support. Dwarves are mountain-dwelling; ships are not narratively core to Game 1's experience. Tracking here so the roadmap entry has a corresponding objective ID.
|
||||
|
||||
## Summary
|
||||
|
||||
Hex-based naval combat — water-tile movement for ships, ship unit types (transport / warship / etc.), naval-vs-naval and naval-vs-coastal-city combat, harbor / port buildings, sea-region map topology where applicable.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- ❌ Ship unit types in `public/games/<game>/data/units/` with `domain: "water"` (or new domain) and naval-only stats / promotions.
|
||||
- ❌ Water-tile pathfinding in `mc-mapgen` / `mc-turn` honoring coast, deep-water, and impassable land/water transitions.
|
||||
- ❌ Naval-vs-naval combat resolution in `mc-combat` (deck-to-deck volley + boarding distinct from land hex combat).
|
||||
- ❌ Coastal-city bombardment and amphibious assault (transport unloads land troops onto a coastal hex).
|
||||
- ❌ Harbor / shipyard buildings (production gate for ships, +trade for adjacency).
|
||||
- ❌ Map topology variants supporting meaningful naval play (archipelago / continents / island maps).
|
||||
|
||||
## Why post-v10 (not Game 1-5)
|
||||
|
||||
- Game 1 (Dwarves): mountain-dwelling race, pangaea / continental landmass play. No naval need.
|
||||
- Games 2-5: each already scoped around specific systems (leylines, Archons, psionics, ascended species). No naval slot reserved.
|
||||
- Post-v10: roadmap pairs naval with map editor + mod support + Ethereal Plane — the "engine completes its surface" phase, not the "ship ten races" phase.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Submarine / aerial-naval hybrid mechanics (separate scope if relevant to post-v10 race work).
|
||||
- Procedural sea-monster encounters (would belong to whichever game's bestiary, not this objective).
|
||||
37
.project/objectives/g6-02-caravan-trade-routes-oos.md
Normal file
37
.project/objectives/g6-02-caravan-trade-routes-oos.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
id: g6-02
|
||||
title: Caravan trade routes — out-of-scope (post-v10)
|
||||
priority: p3
|
||||
status: oos
|
||||
scope: post-v10
|
||||
owner:
|
||||
updated_at: 2026-04-26
|
||||
evidence: []
|
||||
---
|
||||
|
||||
> **Out of scope for Game 1 "Age of Dwarves" and the planned Game 2-5 cycle.** Per `public/games/age-of-dwarves/data/shipping-roadmap.json`, caravan trade routes are in the **post-v10** bucket alongside naval combat (g6-01), the Ethereal Plane, map editor, and mod support. Game 1 ships peace/war + simple luxury-for-gold trade (p1-01 done); persistent unit-routed caravans are a separate, larger system.
|
||||
|
||||
## Summary
|
||||
|
||||
Persistent trade-route units (caravans, traders) that travel between owned cities OR between own-city and foreign-city, generate per-turn gold/resource yields tied to distance and city-pair characteristics, and can be plundered by enemy units. Distinct from p1-01's instantaneous luxury-for-gold trade modal.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- ❌ Caravan unit type with movement, finite cargo capacity, and a route assignment from origin → destination city.
|
||||
- ❌ Per-turn trade yield computation in `mc-trade` based on route distance, city populations, road/river connections, and luxury parity between endpoints.
|
||||
- ❌ Plunder mechanic: enemy military unit ending its turn on a caravan's hex captures cargo + interrupts the route.
|
||||
- ❌ Route persistence across turns: the caravan auto-loops between endpoints, generating yield each cycle, until destroyed or reassigned.
|
||||
- ❌ International routes (own-city ↔ foreign-city) gated by diplomatic state — peace required, war breaks the route, alliance gives bonus.
|
||||
- ❌ UI: route-management panel showing all active routes, per-route yield, expected-arrival turns, and reassignment controls.
|
||||
- ❌ Caravan sprite + roads-and-rivers visual feedback distinguishing trade-routed paths.
|
||||
|
||||
## Relationship to existing trade
|
||||
|
||||
- `p1-01` (Diplomacy-lite — peace/war + one trade action) is the Game 1 trade surface. Gold-for-luxury exchange is instantaneous, no unit involved. Caravans are the persistent / spatial trade upgrade.
|
||||
- `mc-trade` already has `Relation::{Peace, War}` and `apply_trade_offer` — caravan routes layer on top, they don't replace.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Trade depots / warehouses as separate building types (could be a sub-feature of the harbor / city-improvement system if naval-coupled).
|
||||
- Stock-market / commodity-pricing minigame (out-of-scope even post-v10 unless a specific economic-focused expansion is greenlit).
|
||||
- Cross-game-world trade (any kind of inter-game economy is beyond the scope of any single game's design).
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"generated_at": "2026-04-26T07:39:22Z",
|
||||
"generated_at": "2026-04-26T08:14:51Z",
|
||||
"totals": {
|
||||
"done": 87,
|
||||
"in_progress": 1,
|
||||
"partial": 7,
|
||||
"in_progress": 0,
|
||||
"partial": 8,
|
||||
"stub": 8,
|
||||
"missing": 9,
|
||||
"oos": 18,
|
||||
"total": 130
|
||||
"oos": 20,
|
||||
"total": 132
|
||||
},
|
||||
"objectives": [
|
||||
{
|
||||
|
|
@ -796,12 +796,12 @@
|
|||
"id": "p1-28",
|
||||
"title": "Culture research tree — real graph, bridge, UI",
|
||||
"priority": "p1",
|
||||
"status": "in_progress",
|
||||
"status": "partial",
|
||||
"scope": "game1",
|
||||
"owner": "shipwright",
|
||||
"updated_at": "2026-04-26",
|
||||
"blocked_by": [],
|
||||
"summary": "The culture data files (`public/games/age-of-dwarves/data/culture/manifest.json` →\n`public/resources/culture/*.json`) describe a six-pillar culture tree that\nmirrors the tech-tree shape: `id`, `name`, `pillar`, `era`, `tier`, `cost`,\n`requires`, `unlocks{…}`, `flavor`. The web guide already renders it via the\nshared `TechTreeGraph` component (`CultureTreePage.tsx`).\n\nInside the Godot game there is **no** culture-tree surface: no Rust research\ngraph, no GDExtension bridge, no GDScript wrapper, no scene, no per-turn\nresearch accumulator. The `CulturePool` only powers border expansion.\n\nThis objective ships the live culture-research path end-to-end so the player\ncan open a culture-tree screen identical in UX to the tech tree, pick a\ntradition, accumulate culture-research progress per turn, and unlock\nbuildings / wonders / lenses / mechanics on completion."
|
||||
"summary": "The culture data files\n(`public/games/age-of-dwarves/data/culture/manifest.json` →\n`public/resources/culture/*.json`) describe a six-pillar culture tree that\nmirrors the tech-tree shape: `id`, `name`, `pillar`, `era`, `tier`, `cost`,\n`requires`, `unlocks{…}`, `flavor`. The web guide already renders it via the\nshared `TechTreeGraph` component (`CultureTreePage.tsx`).\n\nInside the Godot game there was no culture-tree surface: no Rust research\ngraph, no GDExtension bridge, no GDScript wrapper, no scene, no per-turn\nresearch accumulator. The `CulturePool` only powered border expansion.\n\nThis objective shipped the live culture-research path end-to-end so the\nplayer can open a culture-tree screen identical in UX to the tech tree,\npick a tradition, accumulate culture-research progress per turn, and unlock\nbuildings / wonders / lenses / mechanics on completion."
|
||||
},
|
||||
{
|
||||
"id": "p2-06",
|
||||
|
|
@ -1402,6 +1402,28 @@
|
|||
"blocked_by": [],
|
||||
"summary": "Demonia (NGNL rank 11) are the demon species of the Ethereal Plane, aligned with Chaos school. Low-to-mid tier; they have no coherent belief system, making them the primary beachhead for Terran religious conversion — susceptible when isolated, violently opposed when organized. They are the \"wild card\" species of Game 5: unpredictable alliances, high aggression, and the most conventional military threat."
|
||||
},
|
||||
{
|
||||
"id": "g6-01",
|
||||
"title": "Naval combat — out-of-scope (post-v10)",
|
||||
"priority": "p3",
|
||||
"status": "oos",
|
||||
"scope": "post-v10",
|
||||
"owner": "",
|
||||
"updated_at": "2026-04-26",
|
||||
"blocked_by": [],
|
||||
"summary": "Hex-based naval combat — water-tile movement for ships, ship unit types (transport / warship / etc.), naval-vs-naval and naval-vs-coastal-city combat, harbor / port buildings, sea-region map topology where applicable."
|
||||
},
|
||||
{
|
||||
"id": "g6-02",
|
||||
"title": "Caravan trade routes — out-of-scope (post-v10)",
|
||||
"priority": "p3",
|
||||
"status": "oos",
|
||||
"scope": "post-v10",
|
||||
"owner": "",
|
||||
"updated_at": "2026-04-26",
|
||||
"blocked_by": [],
|
||||
"summary": "Persistent trade-route units (caravans, traders) that travel between owned cities OR between own-city and foreign-city, generate per-turn gold/resource yields tied to distance and city-pair characteristics, and can be plundered by enemy units. Distinct from p1-01's instantaneous luxury-for-gold trade modal."
|
||||
},
|
||||
{
|
||||
"id": "p3-01",
|
||||
"title": "Courier-gated diplomacy — open borders + shared maps via tech-tiered courier units",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue