Sprint goal: close Phase 3 Atlas (unified nav chain, brand corps, content refinement) and establish Phase 4 foundations (bookmark system, location-culture resolution, character creation skeleton). 15 tickets assigned across server (7), client (5), copy (3). Briefings written for all four teams. DB backup updated. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
78 lines
6.0 KiB
Markdown
78 lines
6.0 KiB
Markdown
# Sprint 36: Forge — Client Tasks
|
|
|
|
**Goal:** Close Phase 3 Atlas (unified nav chain, brand corps, content refinement) and establish Phase 4 foundations (bookmark system, location-culture resolution, character creation skeleton).
|
|
|
|
**Branch:** `sprint-36/client`
|
|
**Agents:** Stig (dev), Tyre (arch), Hoshe (QA)
|
|
|
|
## New Tickets
|
|
|
|
| # | Title | Blocked by |
|
|
|---|-------|------------|
|
|
| #844 | Unify star map and atlas into single implant/map chain | — |
|
|
| #618 | CK3-style character creation screen | #614 (server) |
|
|
| #680 | Location picker in character creation UI | #679 (server) |
|
|
| #722 | Add --help flag to custom DB scripts | — |
|
|
| #724 | Show client and server version on loading screen | — |
|
|
|
|
Use `tooling/db/ticket show <id>` for full details.
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/architecture.md` — D-191 (atlas scope, zoom hierarchy, implant/map chain), D-170 (HUD layer groups), D-169 (implant component library)
|
|
- `decisions/scope.md` — D-115 (character creation scoped to skills + bookmark), D-146 (character creation preview — tile-scale sprite), D-155 (cardinal rotation only), D-158 (frontal camera default), D-159 (11 body types)
|
|
- `decisions/content.md` — D-128 (culture implicit in starting location)
|
|
|
|
## Notes
|
|
|
|
**#844 — Unify star map and atlas into single implant/map chain**
|
|
- Current state: `client/ui/star_map.gd` registers as `implant/map/starchart` and `client/ui/implant/atlas_panel.gd` registers as `implant/map/atlas`. They are two separate `HudGroups` apps with separate key bindings (M for starchart, A for atlas).
|
|
- D-191: the atlas is the star map extended downward — not a separate app. The unified chain should be a single `implant/map` app with internal level navigation. The star map (hop-ring view) becomes Level 0 of the atlas hierarchy.
|
|
- Approach: `AtlasPanel` already has a 4-level `Level` enum (`SYSTEM_PICKER`, `ORBITAL_DIAGRAM`, `BODY_ENTRY`, `HEIGHTMAP_VIEWER`). Extend it with a Level -1 or `REACH_MAP` that renders the star map view. Star map rendering logic can be lifted from `star_map.gd` into a method called by `AtlasPanel._draw()`.
|
|
- `StarMapRenderer` registers itself with `HudGroups` — after unification, de-register it or make it a sub-component rather than an independent app. Don't break the `implant/map/starchart` path for existing callers until the unified path is confirmed working.
|
|
- `client/ui/implant/atlas_viewer.gd` and `client/ui/implant/atlas_overlay_bar.gd` are the heightmap layer — preserve these.
|
|
|
|
**#618 — CK3-style character creation screen**
|
|
- IMPORTANT: extend the EXISTING character creation screen (`client/ui/character_creation.gd`, `client/scenes/character_creation.tscn`) — do NOT create a separate screen.
|
|
- D-146: character creation preview is the tile-scale sprite at heavy zoom. The existing screen already implements this correctly. The CK3-style extension adds a **skills tab** and a **bookmark selector** to the existing `TabContainer`.
|
|
- D-115: creation is limited to skills + bookmark. No family/culture/religion sliders.
|
|
- The existing tab structure: Body, Head, Hair, Clothing, Accessories, Debug. Add two new tabs: "Skills" and "Bookmark". The Bookmark tab consumes the bookmark data from #614 (server). The skills tab is a stub for this sprint — display placeholder content until the skills system is implemented.
|
|
- Blocked by #614 until the bookmark data structure is available from the server. Coordinate with Tyre on what the server exposes.
|
|
- Game flow does not change: main_menu → character_select → character_creation → main.tscn. The `creation_confirmed(descriptor)` signal already carries `CharacterVisualDescriptor` — that type will need a bookmark field added.
|
|
|
|
**#680 — Location picker in character creation UI**
|
|
- Client side of the location/culture system. The player selects their starting location in the character creation screen — this feeds into the bookmark selection flow.
|
|
- Blocked by #679 (server). Once the server exposes a location-to-culture resolution endpoint, the client needs a picker UI that shows selectable starting locations and displays the resolved culture.
|
|
- Integrate into the character creation screen as part of the Bookmark tab (coordinate with #618). The location picker is a sub-component of the bookmark selector, not a standalone screen.
|
|
- The `CharacterVisualDescriptor` or a new `CharacterProfile` struct will need to carry the selected location/bookmark.
|
|
|
|
**#722 — Add --help flag to custom DB scripts**
|
|
- `tooling/db/` scripts: `ticket`, `sprint`, `decision`, `sqlite-query`, `sqlite-exec`.
|
|
- These scripts already print usage on bad args. Wire `--help` as an alias to that same usage output.
|
|
- This is a tooling/DX improvement — no game code impact. Low priority, parallelizable with everything else.
|
|
- Note: ticket is assigned to client team but touches `tooling/db/` — this is a tooling ticket, not client game code.
|
|
|
|
**#724 — Show client and server version on loading screen**
|
|
- `client/ui/loading_screen.gd` currently shows only a loading message. Add version display.
|
|
- Client version: read from `project.yaml` at the repo root (root `version` field, format `0.1.{sprint}`). Use GDScript's `FileAccess` or a preload JSON export — choose the simplest approach that doesn't require a plugin.
|
|
- Server version: the bridge protocol already has `PROTOCOL_VERSION` (`server/src/bridge/types.rs`). The server can emit this in the initial handshake or a version ping. Alternatively, display it from the `ObserverSnapshot` if it carries a version field.
|
|
- The loading screen is `client/ui/loading_screen.tscn` — it is a simple overlay with a label. Add a second label below for version text.
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#614 (server bookmark) → #618 (CK3 character creation)
|
|
#679 (server location-culture) → #680 (location picker)
|
|
#844 → standalone (no server dependency)
|
|
#722, #724 → standalone, parallel
|
|
```
|
|
|
|
## PR Workflow
|
|
|
|
```bash
|
|
tea pr create --repo jpmschweitzer/settled-reach --login schweitz \
|
|
--title "feat(client): sprint 36 — unified map chain, character creation foundations" \
|
|
--description "body" \
|
|
--base main --head sprint-36/client
|
|
```
|