Files
security-game/TODO.md
T
zwitschi ba76c0febf
Full build / Import + headless tests (push) Successful in 17s
Full build / Full desktop build + optional release (push) Skipped
Add Windows installer (NSIS) and Linux AppImage packaging; embed PCK in all exports
- export_presets: embed_pck=true for Linux/Windows/macOS -> single self-contained
  binaries (all game data in one file); build_releases.sh cleans stale .pck
- App icon: assets/textures/icon.png (1024) + multi-size icon.ico generated by
  tools/generate_textures.py; copied into packaging/windows and packaging/linux
- packaging/windows/step-line.nsi: NSIS installer (shortcuts, uninstaller,
  registry Add/Remove Programs) output step-line-setup-<ver>.exe
- packaging/linux: step-line.desktop, AppRun, step-line.appdata.xml,
  build_appimage.sh (appimagetool, APPIMAGE_EXTRACT_AND_RUN) ->
  step-line-<ver>-x86_64.AppImage
- CI build job now packages NSIS installer + AppImage alongside binaries;
  publish glob already uploads them
- Local end-to-end verification: embedded exports rebuilt, AppImage built and
  run headless (0 script errors); suite 57/57
- README Downloads table lists installer/AppImage/portable rows; RELEASING
  documents packaging; TODO/DONE synced
2026-10-31 13:46:54 +01:00

3.4 KiB

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.

  • 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).
  • Add a game icon: assets/icon.png (AppImage/desktop) + assets/icon.ico and packaging/windows/step-line.ico generated by tools/generate_textures.py.
  • Author packaging/windows/step-line.nsi (NSIS): installer that installs the exe, writes the uninstaller, shortcuts, and registry uninstall entry.
  • 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.
  • 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.

  • Author AppDir files: packaging/linux/step-line.desktop, packaging/linux/AppRun, icon wiring.
  • Add packaging/linux/build_appimage.sh (appimagetool; APPIMAGE_EXTRACT_AND_RUN=1 to avoid FUSE dependency) producing step-line-<ver>-x86_64.AppImage.
  • 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).
  • AppStream metainfo added (packaging/linux/step-line.appdata.xml); tool validates clean.
  • CI verification: AppImage step runs on tags/dispatch and the artifact uploads.
  • 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.