# 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-.exe` and `step-line--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--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. - [ ] Long (10-15 minute) shift lengths (phase lighting already implemented). - [ ] Venue selection startup menu (keyboard cycling with `V` is implemented). - [ ] IDE/editor-based GUT integration when a Godot editor workflow is introduced. - [ ] Reduce RefCounted reference cycles (NPCController <-> FSM) noted in `MEMORY.md`. ## Open Polish - [ ] Add a body/wand cooldown feel: wand screening currently has no reuse penalty; consider a short per-guest scan animation. - [ ] 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.