feat(*): Promote curric-s6-unmask as the shipped "easy" bot

This commit is contained in:
Josh Creek
2026-07-24 09:18:53 +01:00
parent 407a916b40
commit 580222c139
4 changed files with 29 additions and 3 deletions
+25
View File
@@ -142,6 +142,31 @@ mode (`bot_model_path`, `bot_reaction_ticks`, `bot_action_noise` in
reactions, easier.
- **action_noise**: adds execution error, easier.
### Promoted bots (`Game/bots/promoted/`)
`Game/bots/*.json` is a flat, ever-growing dump of every experiment/curriculum
export — useful for `evaluate.py` and for A/B-ing arbitrary past checkpoints
against each other in the in-game Spectate dropdown (`main_menu.gd` lists
`Game/bots/` non-recursively, so anything one directory deeper is invisible
to it), but none of those filenames (`run07.json`, `curric-s3-no_draws.json`,
...) are meant to be *the* shipped bot — they get superseded constantly and
the automated curriculum pipeline (`run_training.sh`) only ever writes new
flat files there, never touching subdirectories.
`Game/bots/promoted/<tier>.json` is the small, curated, hand-maintained set
actually referenced by the shipped game — currently just `easy.json`
(promoted 2026-07-24 from `curric-s6-unmask`, the strongest checkpoint at the
time). `match.tscn`/`spectate.tscn` point their `bot_model_path` exports here
directly, so a promoted file is never touched by training scripts, never
overwritten by a same-named future export, and never disturbed by pruning old
experiment files from the flat dump.
To promote a new bot into a tier: copy the chosen `Game/bots/<experiment>.json`
to `Game/bots/promoted/<tier>.json` (overwriting the old one), and note the
source experiment + date in this section. Do this for `medium.json`/
`hard.json` as later curriculum stages clear the bar against `easy.json` in
`evaluate.py`.
## Curriculum training
Training from scratch with self-play alone hands the network every skill