Files
CosmicClash/TODO.md
T
2026-08-08 14:56:17 +01:00

3.5 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)

The training pipeline is built — see TRAINING.md (self-play PPO via the vendored godot_rl_agents bridge, JSON policy export, in-game GDScript inference, eval ladder). Remaining:

  • Promote generation 4's stage-3 gauntlet policy as the new Game/bots/promoted/easy.json baseline.
  • Run the generation-5 handling/intercepts/league/teamplay curriculum described in TRAINING.md; promote later checkpoints as medium/hard only after they clear the match and behaviour gates.
  • Frozen-opponent league plumbing: --opponent-mode=league samples a past exported checkpoint per episode; generation 5 Stage 6 supplies the curated pool.
  • Extend generation 5's moving aerial-intercept states with wall plays and rebound scenarios after Stage 5 establishes a productive-air-touch baseline.
  • Design team-credit rewards and paired 2v2 evaluation before enabling the deferred teamplay stage.

Presentation / AAA polish

The largest gap between this and a AAA-feeling product is presentation, not code. Sequenced after the above for pragmatic reasons, but this is the highest impact per hour.

  • Audio — there is none. Zero sound files, zero AudioStreamPlayer nodes, no bus layout. Needs: engine hum pitched to throttle, turbo whoosh, ball impacts scaled by collision impulse, wall scrapes, goal explosion, crowd bed, UI clicks, countdown beeps, music. Can be driven off Ship's existing telemetry signals.
  • SSAO/SSIL in the arena Environments — cheapest single perceived-quality win available; grounds the ships against the deck and gives the fillets and goal recesses real depth.
  • VFX on anything that moves: throttle-reactive engine cores and simple rear flames, a speed-scaled ball trail and team-tinted goal bursts.
  • Impact feedback — intensity-scaled screen shake, unscaled hit-stop and controller rumble on ball contact.
  • Camera feel in ship_camera.gd — speed-based FOV widening, turbo kick-back and decaying impact shake.
  • Goal celebration sequence: goal burst, team-tinted flash/title card, dedicated camera cut and slow-motion beat after authoritative score registration and before reset/kickoff.
  • Local lighting / dynamic GI — four local pitch lights plus SDFGI provide bounce and contact lighting for the runtime-generated arena shell; the shader's hull_fill stand-in is retired. (The shell is generated in _ready, so it cannot participate in an editor LightmapGI bake.)
  • Dress arena_03 — its asteroid field now has mining stations, debris clusters and a distant planet.
  • Custom font + a real Theme resource for the HUD. ThemeDB.fallback_font at 10-13 px reads as a debug overlay.
  • Post-processing beyond glow: a cinematic vignette and turbo-driven chromatic aberration. DoF and motion blur were intentionally omitted after playtesting.

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