mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
2.1 KiB
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 aShipActionper 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
GameModesubclass with no HUD/camera, run viagodot --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_changedsignal. - 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 replicatedShipActions from a network peer into the local ship simulation.- Networked
GameModesubclass: 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.tscnis the template — an arena is terrain + lighting + two team-tagged goals + spawn markers, with no rules or state.