# Sprint 5: Live — Client Tasks **Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide **Branch:** `client` **Agents:** Stig (UI lead), Tyre (integration), Hoshe (testing) ## Carry-over from Sprint 4 | # | Title | Status | Notes | |---|-------|--------|-------| | #405 | Interaction prompt — client extensible prompt system | in_progress | Stig actively working, carries into Sprint 5 | ## New Tickets | # | Title | Blocked by | |---|-------|------------| | #409 | UI microcopy | — (joint with copy team) | Use `db/connectors/ticket show ` for full details. ## Key Decisions - `decisions/architecture.md` — D-020 (Godot client + Rust server via IPC) - `decisions/scope.md` — D-027 (vertical slice), D-039 (wow moments) - `decisions/content.md` — D-028 (dialogue architecture), D-035 (tag taxonomy) ## Critical Path ``` #405 (interaction prompt, carry-over) → complete independently #409 (UI microcopy) → starts when copy delivers strings ``` Client team has light load this sprint — Sprint 4 delivered most client infrastructure. Sprint 5 focus is content authoring (copy team) with client providing integration points. ## Notes ### #405: Interaction prompt — client extensible prompt system (CARRY-OVER) **What exists:** - Server-side interaction system with proximity detection (#404, done in Sprint 4) - Multi-verb `InteractionOptions` server state - Client rendering infrastructure at `client/scripts/rendering/` - Protocol types in `client/scripts/protocol/` **What to deliver:** - Client-side interaction prompt UI system - v0.1: single context-sensitive E prompt - Architecture must support v0.2 multi-verb menu (design for extensibility now, build minimal version) - Prompt reads `InteractionOptions` from server snapshot - Visual design: minimalist, diegetic feel (neural insert aesthetic) - Position: near interactable entity or HUD corner (test both, choose best) **File location:** New script at `client/scripts/ui/interaction_prompt.gd` or extend existing HUD system **Integration:** Reads from `ObserverSnapshot` message field `interaction_options`. When non-empty, show prompt. On player input (E key), send `Interact` command to server. **Gotcha:** This is Sprint 4 in-progress work. Stig should finish architecture in early Sprint 5, then support #409 integration. --- ### #409: UI microcopy (JOINT TICKET) **What exists:** - Client UI elements from Sprint 3 - Interaction prompt system (#405, finalizing) - Constants at `client/scripts/constants.gd` - Rendering scripts at `client/scripts/rendering/` **What to deliver:** - Integration of ~50 UI strings from copy team - Determine string format (YAML file vs GDScript constants) - Apply strings to: interaction prompts, knowledge panel labels, relationship state descriptors, HUD labels, tutorial text - Coordinate with copy team on file format and location **Workflow:** 1. Early sprint: coordinate with copy team (Mellanie) on format and location 2. Copy team authors strings 3. Client team integrates into UI systems 4. Test in-game, provide feedback to copy if strings don't fit UI constraints **File location (proposed):** `client/scripts/constants/ui_strings.gd` or load from `content/campaigns/main/_meta/ui-strings.yaml` via content loader **Integration points:** - Interaction prompt labels (E to interact, E to talk, E to examine, etc.) - Knowledge panel headers ("Known Contacts", "Persons of Interest", etc.) - Relationship state text ("Trusted colleague", "Flagged by case file", etc.) - HUD labels (time display, location name, pause indicator) - Tutorial/hint text (if any) **Gotcha:** UI strings must be brief — HUD space is limited. If copy delivers long strings, client team provides length constraints and copy revises. --- ## Sprint Success Criteria By end of Sprint 5, client team delivers: 1. **Interaction prompt system complete** (#405) — context-sensitive E prompt working in-game 2. **UI microcopy integrated** (#409) — all 50 strings applied to UI elements, tested in-game Light sprint for client team. Primary work is finishing #405 carry-over and coordinating #409 integration with copy. ## Testing Notes Both tickets need in-game validation: - **#405:** Test interaction prompts with multiple verb types (talk, examine, interact with object). Verify prompt appears/disappears based on proximity. Test visual clarity in fog/non-fog areas. - **#409:** Test all UI strings in context. Check for text overflow, truncation, readability. Verify tone matches Sova setting (quotidian-with-undertow, working-class pragmatic). Use existing client test infrastructure (gdUnit4 if applicable, or manual playtesting). ## PR Workflow When ready to submit, create a PR with `tea` CLI: ```bash tea pr create \ --repo jpmschweitzer/settled-reach \ --login schweitz \ --title "feat(ui): interaction prompt + UI microcopy" \ --description "Sprint 5 client delivery - see docs/sprints/sprint-5/client.md" \ --base main \ --head client ```