- FSM holds owner via WeakRef; ShiftCoordinator is RefCounted (logic-only); persistence tests free the Save node -> test suite exits with zero 'resources still in use' warnings (was ~13) and 57/57 pass - GameManager uses each scenario's shift_duration_s (900s ~ 10-15 min) for real shifts instead of the 300s test duration - Wand screening gets a 0.8s recharge cooldown with a wand.recharge message - TODO/DONE/MEMORY/README synced
60 lines
3.1 KiB
Markdown
60 lines
3.1 KiB
Markdown
# TODO
|
|
|
|
## 🪟 Windows installer (self-contained, all game data)
|
|
|
|
Goal: a real Windows installer that includes the entire game (executable + data),
|
|
Start-Menu/desktop shortcuts, and an uninstaller — instead of a bare .exe + .pck.
|
|
|
|
- [x] Switch the Windows/Linux/macOS export presets to `binary_format/embed_pck=true` so a
|
|
single self-contained binary replaces the exe+pck pair (all game data in one file).
|
|
- [x] Add a game icon: `assets/icon.png` (AppImage/desktop) + `assets/icon.ico` and
|
|
`packaging/windows/step-line.ico` generated by `tools/generate_textures.py`.
|
|
- [x] Author `packaging/windows/step-line.nsi` (NSIS): installer that installs the exe, writes
|
|
the uninstaller, shortcuts, and registry uninstall entry.
|
|
- [x] Add CI packaging steps to `.gitea/workflows/build.yml` (NSIS via apt; AppImage via
|
|
appimagetool) so tags/dispatch produce `step-line-setup-<ver>.exe` and
|
|
`step-line-<ver>-x86_64.AppImage` next to the portable binaries.
|
|
- [x] Extend `tools/publish_release.sh` artifact glob to upload the installer/AppImage too.
|
|
- [ ] Verify on CI: NSIS installer builds (cannot be run locally — no `makensis` on this box).
|
|
- [ ] Verify the Windows installer contents in CI (e.g. `7z l` shows the embedded data file).
|
|
|
|
## 🐧 Linux AppImage (self-contained, all game data)
|
|
|
|
Goal: a single executable `.AppImage` that runs the full game on any recent distro.
|
|
|
|
- [x] Author AppDir files: `packaging/linux/step-line.desktop`, `packaging/linux/AppRun`,
|
|
icon wiring.
|
|
- [x] Add `packaging/linux/build_appimage.sh` (appimagetool; `APPIMAGE_EXTRACT_AND_RUN=1` to
|
|
avoid FUSE dependency) producing `step-line-<ver>-x86_64.AppImage`.
|
|
- [x] Local verification: built the AppImage on this machine and ran it headless
|
|
(`--appimage-extract-and-run --headless --quit-after 90` → 0 script errors,
|
|
`[Step Line] game started`).
|
|
- [x] AppStream metainfo added (`packaging/linux/step-line.appdata.xml`); tool validates clean.
|
|
- [ ] CI verification: AppImage step runs on tags/dispatch and the artifact uploads.
|
|
- [x] README Downloads table documents installer + AppImage rows and naming.
|
|
|
|
## Distribution follow-up (host config, no code work)
|
|
|
|
- [ ] Asset downloads currently require sign-in on the host (`/releases/download/…` redirects to
|
|
login). Decide with the host admin: open repo visibility / `REQUIRE_SIGNIN_VIEW=false` or
|
|
accept sign-in-required downloads. Pages and the tag page are already public (HTTP 200).
|
|
|
|
## 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.
|