Files
CosmicClash/TODO.md
T

2.1 KiB

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 ShipActions 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.