Files
security-game/TODO.md
T
zwitschi 5662baa14d Plan focus cone, head ring, and radial action menu; defer host sign-in
Document the next playable pass: WASD/look stop fighting action keys, cone
focus with a billboarded head ring, doughnut HUD opened by LMB or Space
(click or A/D then Space to confirm, Esc/RMB cancel). Emergency stays on R.
Wand leaves W. NPC rigs stay procedural but get a face/hair/neck. Host
REQUIRE_SIGNIN_VIEW follow-up deferred.
2026-10-31 15:00:11 +01:00

92 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TODO
## Player control, focus ring, and radial action menu
Design is in `PLAN.md` → "Player Control, Focus, and Action Menu (next pass)". Distribution
follow-up (host `REQUIRE_SIGNIN_VIEW`) is deferred.
### Locomotion
- [ ] Stop stealing WASD: wand off `W` (use wheel + optional `C`); allow/deny `A`/`D` only while
inspect/wand is open; polite direction off `Q` as a required bind.
- [ ] Accel/decel on walk; gravity only when airborne; `floor_snap_length` for the steps.
- [ ] Mouse look only while captured and no modal UI is open. Freeze walk+look while the radial
(and inspect/wand opened from it) is up. Recapture on close.
- [ ] `Esc` closes the top modal first; with nothing open it still toggles mouse capture.
### Focus and head ring
- [ ] Replace the 8 m hairline ray as the primary picker with a focus cone (range ~10 m, head
inside a ~90 px / 10° circle around the crosshair; closest to center wins; occluded heads
skipped). Keep `Tab` as the 12 m cycle.
- [ ] Small grace so walk-bob does not drop focus.
- [ ] Billboarded ring on the focused avatar `Head`; gold idle, brighter while the radial is open;
one at a time. Optional `display_name` under the ring. No internal type name in the world.
### Radial HUD
- [ ] New `src/game/ui/action_radial.gd` doughnut: open on LMB or `Space` when someone is focused.
Opening click does not pick a slice. Slices (top, clockwise, de-escalation first): raise
hand, point, head shake, polite direction, inspect, wand (grey if no wand), warning, block,
radio assist. Emergency stays on `R` only.
- [ ] Highlight by mouse angle, or `A`/`D` / arrows. Click slice or `Space` confirms. `Esc` / RMB
closes with no action and no recorder event.
- [ ] Inspect / wand / radio slices close the wheel then open the existing panels. Freeze until
that panel closes.
- [ ] Number keys `1`–`6` may remain as closed-menu shortcuts; they must not fire while the wheel
is open.
### NPC display
- [ ] Procedural rig: neck, shoes, hair cap from seed, two eye spheres so the head has a front.
Keep props, height variation, walk bob, notice-head-turn. Collision capsule matches height.
Named `Head` node stays the attach point.
### Input, copy, tests
- [ ] Update `project.godot` input map (`action_menu`, `confirm`, `cancel` includes RMB, wand on
`C`). Update `hud.controls` and the README table + smoke checklist.
- [ ] Headless tests `src/test/tests/test_focus_and_radial.gd`: cone picks the centered head;
highlight wrap; cancel writes no recorder event; `W` does not open wand.
## Distribution follow-up (findings + host config)
Verified via API+host credentials (2026-10-31):
- [x] Repo is **public** (`private:false`) and account has admin rights.
- [x] Release `v0.2.1` now carries all five artifacts (portable binaries + NSIS installer +
AppImage) — the two installers were missing after CI publish (script uploaded only the
portables); `tools/publish_release.sh` fixed to include them and re-uploaded via API.
- [ ] **Remaining host setting**: instance-wide `[service] REQUIRE_SIGNIN_VIEW=true` makes
anonymous browsing/downloads redirect to login (API-confirmed repo is public; this is a
server `app.ini` setting, not an API or repo option).
Advised path for the host admin: set `REQUIRE_SIGNIN_VIEW = false` in `app.ini` under
`[service]`, restart Gitea, then verify `curl -sI https://git.allucanget.biz/zwitschi/security-game/releases/tag/v0.2.1`
returns 200 (not a login redirect) and an anonymous asset download succeeds. Alternative:
mirror downloads (Itch.io / GitHub Releases) for anonymous users.
## Future Systems (design-level backlog)
- [ ] Body-camera replay timeline in the shift review.
- [ ] Venue selection startup menu (keyboard cycling with `V` is implemented).
- [ ] IDE/editor-based GUT integration when a Godot editor workflow is introduced.
## Open Polish
- [ ] Keep `%` placeholders stable in `Strings.fmt` when adding keys (positional formatting).
## Detailed Graphics — remaining performance items
The visual pass is done (textures, rigs, HUD feedback — see `DONE.md`). Remaining work is
performance hardening only.
- [ ] Profile the crowd: ensure textured materials and props hold target frame rate around a
busy entrance.
- [ ] Add LOD or culling for distant NPCs/props if the crowd grows.
## Generated Asset Integration
- [ ] Regenerate the AI asset set at role-specific aspect ratios and dimensions.
- [ ] Audit, process, and wire every generated asset into the game runtime.
- [ ] Add screenshot auditing and refresh the README screenshot gallery.