Quick Design Spec: UI/HUD & Co-op Affordances
Type: New Small System Scope: The MVP HUD element inventory, the per-system UI contribution ledger, the binding UI-layer rules, and the /ux-design routing queue. Does NOT own: visual direction (art bible §7 owns it entirely — this spec cites, never restates), per-screen layouts (each is a /ux-design spec in Pre-Production), or any system's reason-string content (each owner's GDD). Date: 2026-08-27 Estimated Implementation: n/a — this spec is a contract consolidation; implementation lands per-screen after /ux-design
Overview
The systems index calls co-op UI "chronically underestimated," and the mitigation is discipline, not volume: the world carries every state it can (art bible §7.1's decision rule), the screen carries an explicit, closed list, and every screen gets a real /ux-design spec before any epic references it. This quick-spec is the ledger that keeps those three promises — what the HUD is, what each system has already contracted into it, and what is banned at the presentation layer no matter who builds the screen.
Core Rules
- **The MVP screen-space HUD is a closed list (art bible §7.1, verbatim):** own health, dash cooldown, equipped-tool/hotbar, party member health, off-screen party status (edge indicators, §7.2), carry capacity (slate, never crimson), and the compass tide-glint (direction + temperature only — no timer, no countdown, ever). Adding an element to this list is an art-bible amendment, not a UI ticket.
- Everything else is diegetic (§7.1's rule applied): tide state = palette, danger = telegraphs + crimson, base status = visible structures, resource richness = prop density. A proposal for new screen-space HUD must first fail the two-part test (not visible from player position / needs precision the silhouette can't carry).
- Co-op affordances are required, not optional (§7.2): edge-of-screen ally indicators (hat silhouettes), shared-storage live who-took-what feedback (the anti-double-hauling mechanism — this is Inventory's race rule made visible), and the world-space ping (signal-orange, never Ember Crimson). These ship at MVP; they are the Fellowship aesthetic's UI floor.
- **The per-system contribution ledger (each row's content owned by its GDD):**
- Crafting: recipe list with three per-cause reason strings; maker's-mark display (tooltip/rack/examine); craft-beat progress with true-no-op cancel read.
- Base Building: build-mode picker with live affordability; ghost validity + per-gate reason strings; demolish prompt with refund preview; grid within reach only.
- Inventory: bag + storage panels on the stack interface; honest no-op feedback on races (storage renders host-confirmed state only).
- Harvesting: the no-op cue family — "bag full" vs "someone got there first" must read differently (its OQ6, **pre-playtest priority**).
- Combat: HUD rows from the inclusion list (health/dash/party); telegraph language is diegetic, never HUD.
- Movement/Camera: input rebinding surface; ultrawide/aspect letterbox policy.
- Two project-wide bans bind at this layer, restated as UI law: the tone rule (world-facts copy everywhere — no punitive banners, no "YOU MISSED IT"; departures are stated, never scolded) and the no-contribution-comparison rule (phase brief rule 5: no craft counts, build logs, harvest tallies, or any per-player aggregation affordance — the mark is per-item readable, the base is collectively anonymous, and no screen may assemble a leaderboard from either).
- Interaction commitments (§7.3–7.5, cited as binding): humanist slab-sans, 3 sizes, 13–14 px floor, ≥4.5:1 contrast verified before theme lock; ink-outline iconography (the hotbar is the visual system in miniature); 100–150 ms ease-out only, **nothing animates that gates an input** (Pillar 4 at the UI layer); every panel has an explicit gamepad navigation order + visible focus state, no hover-only interactions.
- **The
/ux-designqueue (Pre-Production, before epics — stories citedesign/ux/, never GDDs):** ① harvesting no-op cues + inventory bag/storage (before the first friend playtest — escalated twice); ② crafting station/recipe/rack screens (aggregation ban binding); ③ BB build-mode/picker/demolish; ④ HUD composition (the closed list arranged); ⑤ rebinding + accessibility requirements (seeded by §7.3's commitments).
Tuning Knobs
No numeric knobs live here — sizes, timings, and colors are art-bible commitments (§7.3–7.5); per-screen values land in each /ux-design spec. This section exists to say so.
Acceptance Criteria
- [ ] [UNIT] Schema-negative (the two bans): no UI data contract anywhere exposes per-player craft/build/harvest counts or a sort/group/filter affordance keyed on a player identity (crafting AC-13b + BB AC-25, unified at the layer that would violate them).
- [ ] [MANUAL] The closed-list check: a screenshot of MVP gameplay shows exactly the Rule 1 elements and nothing else on screen-space HUD.
- [ ] [MANUAL] Tone audit: every player-facing string in every screen states a world fact — zero punitive or urgency-manufacturing copy (tone rule).
- [ ] [MANUAL] Gamepad-only session: every screen fully operable with visible focus states, no hover-dependent information anywhere (§7.5 + technical preferences).
- [ ] [EXPERIENTIAL] The two no-op flavors ("bag full" vs "Alex got there first") are distinguished by first-time players without explanation (harvesting OQ6's bar — the pre-playtest gate).
- [ ] Regression: no UI element gates an input behind an animation (Pillar 4; §7.5's "never animates" list holds).
Systems Index
Already tracked as MVP system #13 (UI, quick-spec, "Visual contract in art bible §7"). On approval: status → Designed (quick-spec) — the ledger exists; screens get real design in Pre-Production via the Rule 7 queue.
Forward refs owned elsewhere: every per-screen layout → /ux-design; accessibility requirements doc → seeded by §7.3, authored with queue item ⑤; HUD implementation tech (UI Toolkit vs UGUI) → unity-ui-specialist at implementation, not a design fact.