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
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,7 +6,7 @@
[node name="Match" type="Node3D"]
script = ExtResource("1_m")
bot_model_path = "res://bots/run05.json"
bot_model_path = "res://bots/promoted/easy.json"
[node name="Arena" parent="." instance=ExtResource("2_m")]
+2 -2
View File
@@ -6,8 +6,8 @@
[node name="Spectate" type="Node3D"]
script = ExtResource("1_s")
bot_a_model_path = "res://bots/run05.json"
bot_b_model_path = "res://bots/run05.json"
bot_a_model_path = "res://bots/promoted/easy.json"
bot_b_model_path = "res://bots/promoted/easy.json"
[node name="Arena" parent="." instance=ExtResource("2_s")]
+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