Commit Graph

91 Commits

Author SHA1 Message Date
Josh Creek 390bd18be7 feat(*): Start curriculum generation 2, seeded from curric-s5-aggression 2026-07-26 19:00:38 +01:00
CosmicClash Training Bot 33b2c23f13 chore(training): curriculum progress after curric-s6-unmask-retry2 2026-07-26 13:08:35 +01:00
CosmicClash Training Bot 653afe4040 chore(training): Add curric-s6-unmask-retry2 checkpoints, logs, and exported policy 2026-07-26 13:06:31 +01:00
CosmicClash Training Bot 28109756dd chore(training): curriculum progress after curric-s6-unmask-retry1 2026-07-25 07:41:43 +01:00
CosmicClash Training Bot 4e0efec612 chore(training): Add curric-s6-unmask-retry1 checkpoints, logs, and exported policy 2026-07-25 07:39:52 +01:00
Josh Creek 580222c139 feat(*): Promote curric-s6-unmask as the shipped "easy" bot 2026-07-24 09:18:53 +01:00
CosmicClash Training Bot 407a916b40 chore(training): curriculum progress after curric-s6-unmask 2026-07-24 02:25:37 +01:00
CosmicClash Training Bot f4dfc43d04 chore(training): Add curric-s6-unmask checkpoints, logs, and exported policy 2026-07-24 02:23:34 +01:00
Josh Creek 1afdc301ab feat(training): add airborne_penalty and a stage-6 "unmask" curriculum run
Stage 5 (aggression) passed (41-47 vs grounded curric-s2-defend, within
the lenient gate but not yet a clear win). Rather than keep the locomotion
mask on indefinitely, stage 6 reopens full 3D controls on top of the
aggression retune and pairs it with a new dense airborne_penalty (scaled
by height above the floor) so the policy learns to prefer staying grounded
through incentives instead of a hard mask — same regime shift that
regressed stage 3, but this time with a mitigation and ~12x the training
time (~240M timesteps / ~24h vs ~20M / ~2h) to actually re-converge
instead of stalling mid-shift.

airborne_penalty follows the existing SHIP_AI_OVERRIDES pattern: default
0 (off) on ship_ai_controller.gd, exposed via train.py's new
--airborne-penalty flag, added to training_mode.gd's allow-list. Also adds
a per-stage timesteps override in curriculum.py (STAGES[n]["timesteps"])
since this is the first stage to need a different budget than the rest.
2026-07-22 21:22:27 +01:00
CosmicClash Training Bot 2de3085f13 chore(training): curriculum progress after curric-s5-aggression 2026-07-22 20:33:07 +01:00
CosmicClash Training Bot fda784d50d chore(training): Add curric-s5-aggression checkpoints, logs, and exported policy 2026-07-22 20:31:54 +01:00
Josh Creek 0e42182cce fix(*): jitter kickoff resets to break deterministic same-model mirror matches
GameMode.reset_ball()/reset_ships() teleported to exact, identical spawn
transforms every kickoff. Combined with deterministic bot inference
(action_noise = 0 by default), two ships running the same policy from a
mirror-symmetric state produced mirrored, non-diverging play instead of a
real contest — most visible when both sides use the same exported model.

Adds a small position/yaw jitter (well under anything a player would
notice as "not a real kickoff") so kickoff-style resets stop being
bit-for-bit identical.
2026-07-22 18:01:21 +01:00
Josh Creek fca6a46200 fix(training): correct stage-3 eval (locomotion-mask bugfix) and add grounded aggression stage
Re-ran stage-3 (curric-s3-no_draws vs curric-s2-defend) and the missing
stage-4 gate now that the locomotion-mask inference bugfix is in. Both
reverse or contradict the pre-fix bookkeeping: curric-s2-defend (grounded)
beats curric-s3-no_draws 60-26 and curric-s4-mechanics 57-24 when fairly
evaluated, so lifting the locomotion mask in stage 3 was a real regression
in floor play, not the improvement the buggy eval reported.

Adds a stage-5 "aggression" curriculum entry that resumes from stage 2
directly (via new resume_from_experiment/reference_experiment stage-dict
overrides in curriculum.py) instead of compounding the regression through
stages 3-4, keeps the locomotion mask on, and retunes ball-pursuit reward
weights for much more aggressive floor play. Extends train.py with the
three new --velocity-to-ball-weight/--ball-distance-penalty/--ball-touch-reward
flags needed to forward that retune to Godot's existing SHIP_AI_OVERRIDES.

curriculum_state.json and TRAINING.md are corrected/annotated in place
rather than silently rewritten, so the regression stays visible in history.
2026-07-22 12:48:45 +01:00
CosmicClash Training Bot cf4859e61c chore(training): Add curric-s4-mechanics checkpoints, logs, and exported policy 2026-07-22 11:53:29 +01:00
Josh Creek 8c15c466ef fix(*): apply the locomotion mask during in-game/eval inference, not just training
AIShipController (eval + real gameplay) ran the raw policy output unmasked
regardless of allow_vertical/allow_pitch_roll, while ShipAIController
(training) correctly discarded those axes for grounded curriculum stages.
A grounded-trained model's untrained vertical/pitch-roll output reached the
ship as noise during eval, understating it against models that were never
handicapped this way.
2026-07-21 22:23:09 +01:00
CosmicClash Training Bot dd2b3c570b chore(training): curriculum progress after curric-s3-no_draws 2026-07-21 21:46:34 +01:00
CosmicClash Training Bot bc644e0305 chore(training): Add curric-s3-no_draws checkpoints, logs, and exported policy 2026-07-21 21:44:51 +01:00
CosmicClash Training Bot 44b1384a97 chore(training): curriculum progress after curric-s2-defend 2026-07-21 19:19:44 +01:00
CosmicClash Training Bot ffa9017cbd chore(training): Add curric-s2-defend checkpoints, logs, and exported policy 2026-07-21 19:17:32 +01:00
CosmicClash Training Bot 7e67998a23 chore(training): curriculum progress after curric-s1-score 2026-07-21 16:52:20 +01:00
CosmicClash Training Bot 523a26aa60 chore(training): Add curric-s1-score checkpoints, logs, and exported policy 2026-07-21 16:50:08 +01:00
Josh Creek 8e3fafcc8b feat(*): add staged curriculum training with an automated stage-by-stage orchestrator 2026-07-21 12:38:51 +01:00
CosmicClash Training Bot 1d539cc8c7 chore(training): Add run11 checkpoints, logs, and exported policy 2026-07-21 09:40:13 +01:00
CosmicClash Training Bot fbf51eebe5 chore(training): Add run10 checkpoints, logs, and exported policy 2026-07-20 22:34:32 +01:00
Josh Creek 7d69ac4a01 feat(*): retune scoring incentives and add finishing reps 2026-07-20 20:06:11 +01:00
Josh Creek 46c8275523 feat(*): add wall/ceiling surface pull and retune ball-ship materials 2026-07-20 19:33:28 +01:00
CosmicClash Training Bot e23d780402 chore(training): Add run09 checkpoints, logs, and exported policy 2026-07-20 19:09:32 +01:00
Josh Creek 3457d4ca84 feat(*): Add rounded arena boundaries and reward shaping to curb corner-camping 2026-07-20 08:20:33 +01:00
Josh Creek 6cb5902eb6 feat(*): Add long training run script 2026-07-20 07:18:13 +01:00
Josh Creek 240e362f2f feat(*): Add bot selection, score HUD, and winner reveal to matches, replace HUD text with aircraft-style flight instruments, and fix camera judder 2026-07-20 07:12:09 +01:00
CosmicClash Training Bot 48369c50dc chore(training): Add run07 checkpoints, logs, and exported policy 2026-07-20 05:56:00 +01:00
CosmicClash Training Bot b8f5f4938d chore(training): Add run06 checkpoints, logs, and exported policy 2026-07-20 00:42:52 +01:00
Josh Creek 4f075b352f feat(*): Add orientation-readable team-coloured ship meshes, smooth the ball-cam orbit, and hide arena walls the camera is outside of 2026-07-19 22:18:21 +01:00
CosmicClash Training Bot dfb7285704 chore(training): Add run05 checkpoints, logs, and exported policy 2026-07-19 21:58:08 +01:00
Josh Creek d917d2742b feat(training): Add next_run.sh to idempotently kick off the next run resuming from the newest final.zip 2026-07-19 19:16:01 +01:00
Josh Creek cd94252f92 chore(*): Remove run05 artifacts trained with collapsed exploration 2026-07-19 19:16:01 +01:00
CosmicClash Training Bot c517a85508 chore(training): Add run05 checkpoints, logs, and exported policy 2026-07-19 19:11:31 +01:00
Josh Creek 4c227c24b4 feat(*): Add a distance-to-ball penalty so idling scores negative, boost ball-seeking rewards, and halve the wall-contact penalty 2026-07-19 18:04:36 +01:00
CosmicClash Training Bot 80e9b676d5 chore(training): Add run04 checkpoints, logs, and exported policy 2026-07-19 17:54:36 +01:00
Josh Creek c8f052854c fix(*): Detect wall contact by contact normal so floor contact anywhere on the pitch is exempt from the wall penalty 2026-07-19 15:53:30 +01:00
Josh Creek 4e2d406aa2 chore(*): Remove run03 artifacts trained against the floor-taxed reward 2026-07-19 15:35:55 +01:00
Josh Creek 7777280062 feat(*): Exempt the floor from the wall-contact penalty, add a tilt penalty for non-upright flight, and double velocity-to-ball shaping 2026-07-19 15:34:34 +01:00
CosmicClash Training Bot 5973d0893b chore(training): Add run03 checkpoints, logs, and exported policy 2026-07-19 15:21:06 +01:00
Josh Creek 772f98b7fe feat(*): Fix exported-policy action order to gymnasium's sorted-key layout, add wall-contact penalty and stronger ball-touch reward, and wire Spectate to run01 vs run02 2026-07-19 13:21:14 +01:00
CosmicClash Training Bot 6f1a840249 chore(training): Add run02 checkpoints, logs, and exported policy 2026-07-19 12:41:44 +01:00
Josh Creek 5480b3cf05 feat(*): Add --n-steps and --batch-size flags to train.py, applied on resume as well 2026-07-19 10:41:11 +01:00
Josh Creek 6406867911 chore(*): Remove smoke-run and aborted run03 artifacts 2026-07-19 10:36:51 +01:00
Josh Creek f4722dbd8d feat(*): Add idempotent tmux-based training scripts for the Linux box 2026-07-19 10:27:21 +01:00
Josh Creek 1b3c2e063d chore(training): Track training artifacts in git, add idempotent Linux setup/run scripts, and commit run01 results 2026-07-19 10:22:22 +01:00
Josh Creek 07217c3517 feat(*): Add bot-vs-bot Spectate mode with main-menu entry, entropy-control flags (--ent-coef, --reset-std) for resumed training runs, and a Linux/3090 remote-training guide (TRAINING_LINUX.md) 2026-07-19 10:10:32 +01:00