Standardized YAML frontmatter on all 115 sprint briefing files across sprints 1-26 with title, description, type, status, sprint number, and team fields. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
72 lines
3.1 KiB
Markdown
72 lines
3.1 KiB
Markdown
---
|
|
title: "Sprint 3 — Client Briefing"
|
|
description: "Interaction prompt system, client-side interaction infrastructure"
|
|
type: sprint
|
|
status: archived
|
|
sprint: 3
|
|
team: "client"
|
|
---
|
|
|
|
# Sprint 3: Content Foundation — Client Tasks
|
|
|
|
**Goal:** Build client-side interaction infrastructure to support v0.1 gameplay.
|
|
|
|
**Branch:** `client`
|
|
**Agents:** Stig (UI), Tyre (architecture), Hoshe (QA)
|
|
|
|
## Tickets
|
|
|
|
| # | Title | Priority | Blocked by |
|
|
|---|-------|----------|------------|
|
|
| #405 | Interaction prompt — client extensible prompt system | high | #404 |
|
|
|
|
Use `db/connectors/ticket show <id>` for full details.
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/architecture.md` — D-020 (IPC protocol), D-030 (testability)
|
|
- `decisions/perception.md` — D-016 (internal monologue), D-017 (perception modes)
|
|
- `decisions/content.md` — D-028 (dialogue architecture), D-035 (tag taxonomy)
|
|
|
|
## Notes
|
|
|
|
**#405 (Interaction prompt system):**
|
|
|
|
Client-side interaction prompt designed for extensibility from day one. v0.1 implementation: single context-sensitive "E" prompt (pick first available verb). Architecture supports v0.2 multi-verb radial menu (show all available verbs from server).
|
|
|
|
**Context:** This is a new system — currently the player can move but cannot interact with NPCs, objects, or environment. This ticket adds the UI layer that receives `InteractionOptions` data from the server (via ObserverSnapshot v3, ticket #404) and displays the appropriate prompt.
|
|
|
|
**v0.1 behavior:**
|
|
- Server sends `InteractionOptions { verbs: ["Talk", "Examine"] }` for an NPC in proximity
|
|
- Client picks first verb ("Talk") and displays "E - Talk to [NPC Name]"
|
|
- Player presses E → client sends interaction request to server
|
|
|
|
**v0.2 behavior (architecture must support this):**
|
|
- Client displays radial menu with all verbs
|
|
- Player selects verb → client sends specific verb + target to server
|
|
|
|
**Separation of concerns:** This is NOT ticket #240 (Player interaction system and dispatcher). #240 was the general-purpose dispatcher infrastructure. This ticket (#405) is specifically the UI prompt system that reads `InteractionOptions` from server state and displays context-sensitive interaction prompts. Different team, different scope, different definition of done.
|
|
|
|
**Files:**
|
|
- `client/scripts/ui/interaction_prompt.gd` (new UI component)
|
|
- `client/scripts/protocol/local_bridge.gd` (read InteractionOptions from ObserverSnapshot v3)
|
|
|
|
**Blocked by #404:** Cannot implement until server sends `InteractionOptions` data via ObserverSnapshot v3 protocol extension.
|
|
|
|
**Integration:** Reads from existing IPC bridge. Display layer only — no game logic. All interaction logic stays on server side (ticket #404).
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#404 (server: proximity + InteractionOptions) → #405 (client: interaction prompt)
|
|
```
|
|
|
|
Single ticket this sprint. Start as soon as #404 (server) is complete.
|
|
|
|
## PR Workflow
|
|
|
|
When ready to submit, create a PR with `tea` CLI. **All flags are required** to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
|
|
```bash
|
|
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(client): description" --description "body" --base main --head client
|
|
```
|