# TODO Deferred work, in rough priority order. The current architecture (ShipAction/ShipController seam, Arena/GameMode split, code-driven spawning, group-tagged ball/goals) was chosen specifically so these bolt on without rework. ## AI opponent (reinforcement learning) - [ ] `AIShipController extends ShipController` — produces a `ShipAction` per physics tick from observations instead of keyboard input. - [ ] Observation builder: self ship state (position, orientation, velocities) + ball state (group `"ball"`) + goal positions/teams (group `"goal"`), normalized for the policy. - [ ] Reward shaping: goals scored/conceded, ball touches, ball-toward-opponent-goal velocity, etc. - [ ] Headless training scene: a `GameMode` subclass with no HUD/camera, run via `godot --headless`, stepping the sim for training (consider godot-rl-agents or a custom socket bridge). - [ ] Swap the inert placeholder opponent in Match mode for the trained `AIShipController`. ## Match mode polish - [ ] Kickoff countdown (3-2-1) before play starts and after each goal, instead of instant reset. - [ ] HUD scoreboard widget consuming the existing `score_changed` signal. - [ ] Results screen on timer expiry (winner, final score) instead of dumping straight back to the main menu. - [ ] Overtime / golden-goal rule on a draw. ## Multiplayer (long term) - [ ] `RemoteShipController extends ShipController` — feeds replicated `ShipAction`s from a network peer into the local ship simulation. - [ ] Networked `GameMode` subclass: per-peer ship spawning (MultiplayerSpawner or custom), authoritative server for ball/score. - [ ] C# backend / online servers per README roadmap (not started). - [ ] Possible v0.2 split-screen: spawn one `ship_camera_rig` + viewport per local player (camera is already outside the ship scene to allow this). ## General - [ ] No autoloads yet by design — add a singleton only when cross-scene state is actually needed (e.g. passing match settings/results between menu, match, and results screens). - [ ] More arenas: `arena_01.tscn` is the template — an arena is terrain + lighting + two team-tagged goals + spawn markers, with no rules or state.