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>
119 lines
7.2 KiB
Markdown
119 lines
7.2 KiB
Markdown
---
|
|
title: "Sprint 10 — Client Briefing"
|
|
description: "Hub teleport UX, room reset UX, auto-checklist progress tracking"
|
|
type: sprint
|
|
status: archived
|
|
sprint: 10
|
|
team: "client"
|
|
---
|
|
|
|
# Sprint 10: Prove — Client Tasks
|
|
|
|
**Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together.
|
|
|
|
**Branch:** `client`
|
|
**Agents:** Stig (UI/client dev), Tyre (arch review), Hoshe (QA)
|
|
|
|
---
|
|
|
|
## Carry-over from Sprint 9
|
|
|
|
| # | Title | Status | Notes |
|
|
|---|-------|--------|-------|
|
|
| #501 | Hub teleport client UX (Home key, fade transition) | backlog | Targeted Sprint 9, slipped — blocked by #491 server work which also slipped. Unblocks immediately once server #491 ships. |
|
|
| #502 | Room reset client UX (reset plate tile, interaction verb, amber flash) | backlog | Targeted Sprint 9, slipped. Unblocked (#490 done). |
|
|
| #503 | Auto-checklist progress tracking (client-side snapshot evaluation) | backlog | Targeted Sprint 9, slipped. Unblocked (#497 done). |
|
|
|
|
---
|
|
|
|
## New Tickets
|
|
|
|
| # | Title | Blocked by |
|
|
|---|-------|------------|
|
|
| #501 | Hub teleport client UX (Home key, fade transition) | #491 server (Sprint 10) |
|
|
| #502 | Room reset client UX (reset plate tile, interaction verb, amber flash) | #490 (done) |
|
|
| #503 | Auto-checklist progress tracking (client-side snapshot evaluation) | #497 (done) |
|
|
| #517 | Introduce Michroma as game font | — |
|
|
| #526 | Client: mouse-relative facing and movement (D-054) | — |
|
|
| #518 | Client: wire insert open/close to PauseSimulation command | — |
|
|
| #521 | Confrontation D-033 color shift — client-side entity tint | #520 server (Sprint 10) |
|
|
|
|
Use `db/connectors/ticket show <id>` for full details.
|
|
|
|
---
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/architecture.md` — D-020 (Godot/Rust IPC), D-054 (mouse-relative facing), D-058 (auto-pause on insert open), D-066 (dual-scale grid)
|
|
- `decisions/perception.md` — D-033 (entity color = relationship to player), D-056 (insert diegetic visibility), D-057 (interaction verbs), D-060 (cognitive delay), D-063 (confrontation same box)
|
|
- `decisions/scope.md` — D-053 (movement stance toggle)
|
|
|
|
---
|
|
|
|
## Open Questions to Resolve Early
|
|
|
|
- **Q-019 (partial): Client-side entity lifecycle / StableId mapping** — #521 reads relationship state from `ObserverSnapshot` and adjusts entity tint. Confirm with server team that relationship state is included in the snapshot before #521 starts. Resolve before #521 begins.
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
**#501 — Hub teleport client UX**
|
|
- Existing: `client/scripts/protocol/protocol.gd` handles PlayerAction serialization. `client/scripts/rendering/world_renderer.gd` handles camera.
|
|
- Deliver: Home key sends `PlayerAction::TeleportToHub`. On receipt: instant camera snap to hub spawn position + 0.3s fade-to-black-and-back tween. Effort: 0.5d. Gauntlet-mode only guard matches server behavior.
|
|
- Dependency: Wait for server #491 to merge before testing end-to-end. Can develop and unit-test client logic in isolation using local bridge stub.
|
|
|
|
**#502 — Room reset client UX**
|
|
- Existing: `client/scripts/rendering/tile_renderer.gd` handles tile visual overrides. Interaction verbs rendered by UI layer.
|
|
- Deliver: (1) `reset_plate` tile type renders with amber color override. (2) 'Reset Room' verb appears when player faces reset plate. (3) On reset confirmation: 0.15s amber flash + monologue "Systems recalibrated." fires via monologue event. Effort: 0.5d.
|
|
- Integration: Server #490 (done) already emits the reset event. Client just needs to consume it.
|
|
|
|
**#503 — Auto-checklist progress tracking**
|
|
- Existing: Checklist YAML schema defined by CI #497 (done). The test client handles its own evaluation separately.
|
|
- Deliver: Client evaluates `ObserverSnapshot` against loaded checklist YAML conditions, auto-tracks verification items with a Gauntlet-mode HUD overlay. Full tracking in test-client-only mode; lightweight overlay in Godot per R2-OQ-06. Effort: 1.5d.
|
|
- Integration: Test-client-only overlay — does not affect production game HUD. Coordinate with Hoshe on checklist condition format.
|
|
|
|
**#517 — Michroma font**
|
|
- Existing: Default Godot font throughout client UI. No font assets committed yet.
|
|
- Deliver: Download Michroma from Google Fonts (OFL license), commit to `client/assets/fonts/`. Update all Label, RichTextLabel, and LineEdit nodes to use Michroma. Acceptance: font renders legibly in HUD, dialogue box, and debug overlay at game resolution. Effort: 0.5d. Purely cosmetic — no logic changes.
|
|
- Non-obvious: Michroma is geometric sans-serif at display weights — confirm legibility at small sizes (sub-16px tooltip text) before committing globally. Consider a size floor.
|
|
|
|
**#526 — Mouse-relative facing and movement**
|
|
- Existing: `client/scripts/main.gd` handles input. WASD currently uses fixed cardinal directions. `client/scripts/protocol/protocol.gd` sends facing octant to server.
|
|
- Deliver: Mouse position determines facing direction (client-side float computed from player screen position to cursor). WASD movement becomes mouse-relative (forward = toward cursor). Server receives facing octant only, unchanged interface. Effort: 1d.
|
|
- Key decision: D-054 — mouse facing is purely client-side. Server only ever sees the octant. The full float stays in the client for rendering purposes.
|
|
|
|
**#518 — Wire insert open/close to PauseSimulation**
|
|
- Existing: Server pause system at 50%/0% tick rate exists (#406, done). `client/scripts/autoloads/sim_bridge.gd` handles server commands. Insert UI open/close events are in `client/scripts/main.gd`.
|
|
- Deliver: When insert UI opens, client sends `PauseSimulation` command. When it closes, client sends `ResumeSimulation`. D-058 confirms auto-pause in SP mode. Ticket #448 was cancelled before client wiring was completed. Effort: 0.5d.
|
|
- Non-obvious: The pause/resume must be idempotent — if the server is already paused (e.g. Gauntlet room interlude), opening the insert should not double-pause.
|
|
|
|
**#521 — Confrontation D-033 color shift**
|
|
- Existing: `client/scripts/rendering/entity_renderer.gd` applies D-033 relationship colors. `ObserverSnapshot` carries entity relationship state.
|
|
- Deliver: On confrontation delivery (server #520 decrements relationship state), entity renderer fades the entity's D-033 tint toward the new relationship color using a 0.5-1s tween. Not an instant flip — a fade that the player perceives as "something changed."
|
|
- Dependency: Blocked by server #520. Start after #520 merges.
|
|
|
|
---
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#502 (room reset UX) — standalone (server #490 done)
|
|
#503 (auto-checklist) — standalone (CI #497 done)
|
|
#517 (Michroma font) — standalone, parallel
|
|
#518 (insert pause wire) — standalone, parallel
|
|
#526 (mouse-relative facing) — standalone, parallel
|
|
Server #491 (hub teleport) → #501 (hub teleport UX)
|
|
Server #520 (confrontation response) → #521 (D-033 color shift)
|
|
```
|
|
|
|
---
|
|
|
|
## 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): sprint 10 prove — client" --description "body" --base main --head client
|
|
```
|