Systems Index: Driftlands
Status: Approved
Created: 2026-08-25
Last Updated: 2026-08-27 (cross-GDD review FAIL → six rulings applied → since-last-review CONCERNS; report: gdd-cross-review-2026-08-27.md)
Source Concept: design/gdd/game-concept.md
Phase Brief: design/gdd/systems-design-brief.md (binding: 5 full GDDs + 7 quick-specs)
TD-SYSTEM-BOUNDARY: CONCERNS (adopted inline) 2026-08-25 · PR-SCOPE: REALISTIC WITH ADJUSTMENTS (adopted) 2026-08-25
Overview
Driftlands is a top-down 2D co-op crafting-survival game for 2–5 friends whose entire mechanical identity flows from one Foundation system: the **Tide Scheduler**, a pure function of (seed, wallClockTime) that docks and departs landmasses against a permanent home island. Every other system either feeds the loop it creates (venture → fight → harvest → haul → craft → build) or presents that loop's state to players. The netcode model is fixed by prototype and binding constraints (host-and-play NGO 2.x; owner-auth movement, host-auth damage; see Forbidden Patterns in .claude/docs/technical-preferences.md). Progression is flat-stats-through-gear — skill-drift was cut at the Systems Design gate. Visual language is governed by the approved art bible (design/art/art-bible.md).
Systems Enumeration
| # | System Name | Category | Priority | Status | Design Doc | Depends On |
|---|---|---|---|---|---|---|
| 1 | Tide Scheduler | Core | MVP | Reviewed (CD-GDD-ALIGN APPROVED; independent /design-review APPROVED WITH CONDITIONS 2026-08-26 — all findings applied) | full GDD — tide-scheduler.md | — |
| 2 | Netcode Session | Core | MVP | Designed (cross-GDD review 2026-08-27: C1 Downed-disconnect vs combat, W7, W8 — blockers applied same day; since-last-review CONCERNS, warnings applied) (quick-spec 2026-08-27 — netcode-session-2026-08-27.md; two-rail model locked, full-table late-join sync, rejoin = late join; ADR still pending the friend playtest) | quick-spec + ADR (after friend playtest) | — |
| 3 | Camera | Core | MVP | Designed (quick-spec 2026-08-27 — camera-2026-08-27.md; locked 64 px/u integer zoom = the silhouette-test calibration; never detaches; no shake) | quick-spec | — |
| 4 | Save & Persistence | Persistence | MVP | Designed (quick-spec 2026-08-26 — save-persistence-2026-08-26.md; consolidates the 5 provisional reconcile contracts; two-class rule: HarvestDiff droppable, all else permanent) | quick-spec | Tide Scheduler |
| 5 | Player Movement | Gameplay | MVP | Designed (quick-spec 2026-08-27 — player-movement-2026-08-27.md; moveSpeed 6 u/s registered; no-MoveSpeedModifier lock; no player/enemy body collision; twin-stick aim parity) | quick-spec | Netcode Session |
| 6 | Inventory & Hauling | Economy | MVP | Designed (cross-GDD review 2026-08-27: C2 instanceTag in ItemStack, W6 — blockers applied same day; since-last-review CONCERNS, warnings applied) (quick-spec 2026-08-26 — inventory-hauling-2026-08-26.md; TD carry/storage split baked in; HIGH-RISK mitigations: no world items, atomic host transfers) | quick-spec — sprint-1 exit criterion, 3-day time-box | Netcode Session |
| 7 | Combat | Gameplay | MVP | Reviewed (cross-GDD review 2026-08-27: C1, D2 unarmed strike, Rule 13 vs EC8, W2, W4, W6 — blockers applied same day; since-last-review CONCERNS, warnings applied) (CD-GDD-ALIGN APPROVED; independent /design-review NEEDS REVISION 2026-08-26 — all findings applied same day) | full GDD — combat-system.md | Player Movement, Netcode Session |
| 8 | Land Dock/Undock | Core | MVP | Designed (cross-GDD review 2026-08-27: C3 party-clock gate, W1 — blockers applied same day; since-last-review CONCERNS, warnings applied) (quick-spec 2026-08-27 — land-dock-undock-2026-08-27.md; KnownLandTemplates registry contract locked; party-clock check owned; TD lifecycle/authority split-watch honored) | quick-spec | Tide Scheduler, Save & Persistence |
| 9 | Harvesting & Resource Nodes | Economy | MVP | Reviewed (cross-GDD review 2026-08-27: C3 clock claim, strike disambiguation timing, W3, W2/W5/W6 — blockers applied same day; since-last-review CONCERNS, warnings applied) (CD-GDD-ALIGN CONCERNS applied; independent /design-review NEEDS REVISION 2026-08-26 — all findings applied same day) | full GDD — harvesting-system.md | Inventory, Save, Tide Scheduler |
| 10 | Crafting & Gear Identity | Economy | MVP (cloth) / Tier 1 (full) | Designed + Reviewed (cross-GDD review 2026-08-27: D1 reinforced DR undefined, C2, W6 — blockers applied same day; since-last-review CONCERNS, warnings applied) (CD-GDD-ALIGN CONCERNS resolved 2026-08-26; independent /design-review 2026-08-26 NEEDS REVISION, all findings applied same day — review) | full GDD — crafting-system.md | Inventory, Harvesting |
| 11 | Base Building | Gameplay | MVP (basic) | Reviewed (fifth re-review 2026-08-27 closed with CS-18 applied and CD gating inline — no sixth panel; consistency-check PASS same day. History: third re-review 2026-08-27, fresh session, scoped to CS-4/5: CS-6 (knob-row bounds 25–57 → 35–58, gate subject) and CS-7 (AC-14b constructible, AC-14c BFS pin, host-exactness mechanism, maze boundary) applied same day with the recommended pass, fourth re-review 2026-08-27 (fresh session, scoped to CS-6/7): blocking CS-8 (wallCost 3–4), CS-10 (EC17 bound < 2 hops), CS-11 (AC-14b/14c pinned), CS-12 (EC21 (iii) fresh search) + recommended CS-9/13–16, all applied same day; fifth re-review 2026-08-27 (fresh session, scoped to CS-8–16 + closure step — every numeric cell passed; blocking CS-18: AC-14c's pinned hop-2 GIVEN unreachable under EC21's clear-cells-only rule → BFS hop bound retired (EC17 ratio row, AC-64b) for a four-neighbour ring check with a binding reference block, AC-14c rewritten, AC-14e added, plus the recommended/nice tail — applied same day; no sixth panel, CD gates inline; see design/reviews/base-building-rereview-5-2026-08-27.md). Prior: fourth re-review. Prior: third re-review; second re-review; re-review; first review; full GDD 2026-08-26, CD-GDD-ALIGN CONCERNS resolved) | full GDD — base-building.md | Crafting, Save & Persistence |
| 12 | Enemy AI | Gameplay | MVP (3 named behaviors) | Designed (quick-spec 2026-08-27 — enemy-ai-2026-08-27.md; PR tripwire closed: chase-and-lunge / kite-and-throw / advance-and-slam; flat state machines + separation steering; telegraph-density cap = 1; guard variation = harvesting OQ8 mechanism) | quick-spec | Combat, Land Dock/Undock |
| 13 | UI/HUD & Co-op Affordances | UI | MVP (minimal) / Tier 1 (full) | Designed (quick-spec 2026-08-27 — ui-hud-2026-08-27.md; closed HUD list, per-system ledger, two UI-layer bans, /ux-design queue with pre-playtest items; UX queue ①–⑤ all APPROVED 2026-08-31 — design/ux/ inventory · crafting · build-mode · hud · settings + interaction-patterns v0.15) | quick-spec | wraps Core systems |
| 14 | Tide-Tint Render Pipeline (minimal) | Presentation | MVP (pulled forward 2026-08-27 at the Technical Setup gate — cross-GDD D5, CD + AD: the anchor's "world says it, no UI timer" test must be runnable at the playtest) | Shader contract in art bible §4.3/§8.B.3 — one Shader Graph sprite shader, global _TideAmount, amber/violet only; ADR-0013 (Accepted 2026-09-01) discharges the Render Graph / shader ADR input — no separate quick-spec is owed | Tide Scheduler, Land Dock/Undock | |
| 15 | Tide-Tint Polish (atmosphere, departure mist, drift-in/out cosmetics, multi-stop §4.3 curves) | Presentation | Tier 1 | art bible §4.3 / §2 — the polish half of the former row 14 | — | Tide-Tint Render Pipeline |
| 16 | Base-Defense Events | Gameplay | Tier 1 — first-to-slip | Indexed only — NO design work | none (deliberate) | Enemy AI, Base Building |
| 17 | Save-Anyone-Can-Host | Persistence | Tier 1 — first-to-slip | Indexed only — NO design work | none (deliberate) | Save & Persistence |
| 18 | Animal Husbandry | Gameplay | Full Vision | Indexed only | none | — |
| 19 | Production Chains | Economy | Full Vision | Indexed only | none | — |
| 20 | Ruins & Blueprints | Gameplay | Full Vision | Indexed only | none | — |
| 21 | Rival Settlements | Gameplay | Full Vision | Indexed only | none | — |
| 22 | Audio Direction | Audio | Full Vision | Indexed only | none | — |
Dependency Map
Foundation Layer (no dependencies)
- Tide Scheduler — the world IS this function; not networked state but a shared computable fact (TD: "no authority question")
- Netcode Session — every multiplayer interaction rides it; model fixed by prototype + Forbidden Patterns
- Camera — fixed top-down; inert wrt netcode; parallel-buildable (PR note)
Core Infrastructure Layer (Foundation-only deps)
- Save & Persistence — depends on: Tide Scheduler (reconcile-on-load drops departed dockings)
- Player Movement — depends on: Netcode Session (owner-authoritative transform)
- Inventory & Hauling — depends on: Netcode Session. TD-mandated boundary (binding for the quick-spec): two components — a client-predicted CARRY component on the owner-auth rail, and a host-authoritative SHARED-STORAGE container on the damage rail. Never build as one undifferentiated system: the first co-op storage-grab race forces a mid-implementation split.
Gameplay Engine Layer
- Combat — depends on: Player Movement, Netcode Session
- Land Dock/Undock — depends on: Tide Scheduler, Save & Persistence. TD flag: second-likeliest future split (Addressables lifecycle vs. authority boundary) — acceptable as one module today.
- Harvesting — depends on: Inventory (stack interface), Save (harvest-diffs), Tide Scheduler (node lifetime)
- Crafting & Gear — depends on: Inventory, Harvesting
- Base Building — depends on: Crafting, Save & Persistence
Feature Layer
- Enemy AI — depends on: Combat, Land Dock/Undock. PR flag: nail "2–3 types" to specific named behaviors before coding or it balloons past quick-spec.
- Base-Defense Events* — depends on: Enemy AI, Base Building — validate against Forbidden Patterns (no offline simulation) before ANY implementation
- Save-Anyone-Can-Host* — depends on: Save & Persistence — validate against Forbidden Patterns (no host migration) before ANY implementation
Presentation Layer
- UI/HUD & Co-op Affordances — wraps Core systems; visual contract is art bible §7 (merged UX resolutions binding)
- Tide-Tint Render Pipeline — depends on: Tide Scheduler, Land Dock/Undock; shader contract is art bible §4.3 + §8.B (global
_TideTint, never MPBs). Minimal tint = MVP (row 14, ruled 2026-08-27); polish = Tier 1 (row 15).
Cycle Resolution (locked)
Inventory ↔ Crafting: Inventory owns the item-stack interface; Crafting owns item definitions and recipes. Contract between them — Inventory is designed first against the interface. (TD: correct Dependency Inversion; no circular assembly reference.)
Recommended Design Order
| Order | System | Doc Type | Rationale |
|---|---|---|---|
| 1 | Tide Scheduler | Full GDD | Foundation everything hangs off; contract already spike-proven — GDD formalizes cadence/recurrence as rules (CD line item: recurrence is a Pillar 1 rule, not a tuning value) |
| 2 | Combat | Full GDD | Prototype tuning values + the hit-reconciliation edge case captured while fresh; swing-masks-latency principle goes in Detailed Rules |
| 3 | Inventory & Hauling | Quick-spec — 3-day time-box, sprint-1 exit criterion | Critical path: owns the item-stack interface + carry/storage authority split that GDDs 4–6 build against. If this slips, three full GDDs stall simultaneously (PR) |
| 4 | Harvesting | Full GDD | Defines harvest-diff usage; needs Inventory's interface |
| 5 | Crafting & Gear | Full GDD | Pillar 3 rules must be unambiguous; explicitly note MVP-cloth cannot validate Pillar 3 (CD line item); owns gear-as-identity (skill-drift replacement) |
| 6 | Base Building | Full GDD | Placement/storage rules; co-op friction lives here |
| 7+ | Player Movement, Save & Persistence, Camera, Land Dock/Undock, Enemy AI, UI/HUD | Quick-specs | Interleave as needed; Camera + UI parallel-buildable (PR) |
Tripwire (phase brief): if full-GDD count exceeds 7, run /scope-check.
High-Risk Systems
| System | Risk | Mitigation |
|---|---|---|
| Inventory & Hauling | Unmitigated bottleneck: no prototype, co-op storage races, chronically underestimated UI | TD boundary split mandated; 3-day time-boxed quick-spec as sprint-1 exit criterion; consider a micro-spike if the spec surfaces unknowns |
| Tide Scheduler | 4 direct dependents | Mitigated — 9/9 contract tests (prototypes/tide-scheduler-spike-2026-08-25/) |
| Netcode Session | Everything rides it | Mitigated — combat prototype CONFIRMED; external gate: friend-group playtest before ADR lock |
| Land Dock/Undock | Boundary overload (lifecycle + authority) | Watch for split; keep the two concerns internally separated |
| Enemy AI | Scope balloon past quick-spec | Name the 2–3 MVP behaviors in the quick-spec before any code |
Progress Tracker
**13 of 14 MVP systems designed (row 14 Tide-Tint Render Pipeline was pulled forward to MVP 2026-08-27 and still needs its quick-spec) — GDD AUTHORING WORK COMPLETE (2026-08-27).** Remaining phase exits: independent /design-review of base-building.md (fresh session), the friend-group playtest (external — gates the netcode ADR), then /gate-check toward Pre-Production. — Netcode Session (quick-spec 2026-08-27 — two-rail model [owner: movement/CARRY/predicted FX; host: damage/storage/ commits/registries]; late-join = full small-table sync incl. complete InstanceMetadata [no view-scope relevancy — protects the signature test]; rejoin = late join, no separate path; disconnect despawns the body, tide EC1 governs return; host quit ends session; ADR pending playtest), — UI/HUD & Co-op Affordances (quick-spec 2026-08-27 — closed screen-space list per art bible §7.1; co-op affordances required; per-system contribution ledger; tone rule + no-contribution-comparison bound as UI law; /ux-design queue ordered with harvesting no-op cues + inventory panels BEFORE the first friend playtest), — Camera (quick-spec 2026-08-27 — locked integer zoom 64 px/u [the silhouette-test calibration, a rule not a knob]; smoothed follow + aim bias; never detaches [anti-RTS made hardware]; hard cuts on deposit/respawn, no travel pans; no shake), — Player Movement (quick-spec 2026-08-27 — flat 6 u/s owner-auth/predicted; instant accel; decoupled aim, one vector for combat arc + BB ghost; collision blocks never damages, no body collision with players/enemies; NO MoveSpeedModifier hook ever [Pillar 4 schema fact]; interpolated remotes, never extrapolated), — Enemy AI (quick-spec 2026-08-27 — three behaviors named [PR tripwire closed]; host-simulated flat state machines, no behavior trees at MVP; separation steering [prototype fix]; no-respawn-per-docking + fully ephemeral state; telegraph-density cap maxUninterruptibleTelegraphsPerTarget=1 [combat CD advisory mechanized]; guard variation via variationSeed = harvesting OQ8's live-variance mechanism; party-scaling lever pre-armed = density/HP never per-hit reduction), — Land Dock/Undock (quick-spec 2026-08-27 — lifecycle on tide edges; pure seed→layout; append-at-φ historical registry seeded at world creation; sole-source loud warning; enemy spawn routing with reserved scalingContext; "possibly changed" = variation not revision at MVP; party-clock check ≥1.0 @ 5 harvesters, live-recomputed), — Save & Persistence (quick-spec 2026-08-26 — host-owned single file, never merged; per-confirmed-action durability with atomic writes; fixed reconcile pipeline invoking each owner's predicate; two-class rule binding), — Base Building (full GDD 2026-08-26, 847+ lines, 68 ACs; CD-GDD-ALIGN CONCERNS resolved same day: C1 orbit test [stations/storage exist ONLY at home — Pillar 2 enforced at the provider], C2 staleness falsification OQ8, C3 no-move-verb reclassified as MVP scope decision; **crafting OQ9 ruled in the NEGATIVE and CD-approved on merits** — MVP base building is a finite stand-it-up project, the home-facing dead zone is accepted; no-contribution-comparison rule propagated to the phase brief [CD A4]; pending independent /design-review), — Crafting & Gear (full GDD 2026-08-26; CD CONCERNS resolved same day incl. the durability implementation approved on merits and the maker's-mark aggregation ban; independent /design-review 2026-08-26 NEEDS REVISION, all findings applied same day — report at design/reviews/crafting-system-review-2026-08-26.md), — Harvesting & Resource Nodes (full GDD 2026-08-26; CD-GDD-ALIGN CONCERNS applied same day incl. the sinew carcass-node Pillar 3 ruling; independent /design-review NEEDS REVISION — all findings applied same day, incl. supply ratio 2.19 correction, monotonic-band load guard, hard modifier ceiling 2.0 enforced, Enemy AI guard-variation named load-bearing; report at design/reviews/harvesting-system-review-2026-08-26.md), Inventory & Hauling (quick-spec 2026-08-26, design/quick-specs/inventory-hauling-2026-08-26.md — TD carry/storage boundary baked in; Harvesting, Crafting, and Base Building design unblocked), Tide Scheduler (full GDD, independent /design-review 2026-08-26 APPROVED WITH CONDITIONS — **all findings applied same day**, H1/M2 unblocked Harvesting + Save) and Combat (full GDD, CD-GDD-ALIGN APPROVED 2026-08-26; independent /design-review 2026-08-26 NEEDS REVISION — all findings applied same day, incl. telegraph hard floor 350→400 and binding contracts inherited by Enemy AI + Crafting; report at design/reviews/combat-system-review-2026-08-26.md). Next in design order: independent /design-review of base-building.md (fresh session), then the remaining quick-specs (Player Movement, Netcode Session, Save, Enemy AI, LDU — Save now carries BB's Edge Case 13–16 reconcile posture; Enemy AI + LDU carry inherited constraints from Harvesting + Crafting; LDU also owns the socketNoBuildRadius Tier 1 re-check, BB OQ2). Update this index as each GDD/quick-spec lands: Status → In Design → In Review → Approved.