Skip to content

Add RoboCode CC:Ladder#115

Merged
john-b-yang merged 8 commits into
mainfrom
john/robocode-ladder
Jul 7, 2026
Merged

Add RoboCode CC:Ladder#115
john-b-yang merged 8 commits into
mainfrom
john/robocode-ladder

Conversation

@john-b-yang

Copy link
Copy Markdown
Contributor
  • 116 open-source classic Robocode bots imported to CodeClash-ai/RoboCode human/robocode/* branches from ~30 repos
    • shipped sample bots + mgalushka Super* variants
    • the full RoboWiki/PEZ collection (micro/mini/nano/femto + Marshmallow/GF1/Swiffer)
    • flat multi-file bots (Mb2, BerendBotje, MaximBot, TheCarver, BobTheBuilder, StarterBot, npcomplete)
    • flattened subpackage bots (ur4no, kokomo)
    • single-file DrussGT/HawkOnFire (strong top rungs)
    • ~35 more from a broad GitHub sweep.
    • All copy-in (0 reimplementations): verbatim, only repackaged to the arena package + main class renamed to MyTank (helpers flattened where needed).
  • Each of the 116 verified to compile and play a real battle in the arena image (stage 2, 116/116).
  • Provenance: every port file carries a source-URL/author/license header; scripts/ladder/SOURCES.md is the committed manifest (slug -> GitHub URL). See stamp_sources.py.
  • Fix arena description: it mislabeled itself Tank Royale but the engine is classic Robocode.
  • make_robocode.yaml: round-robin (100 rounds, ~2h local at -w6) for Elo
  • scripts/ladder/: build tooling (copy-in porting guide, structural validator, compile+battle smoke, push script, provenance stamper, reference bot); ports/ regenerated, not committed.

john-b-yang and others added 8 commits July 6, 2026 18:18
…oling)

- 116 open-source classic Robocode bots imported to CodeClash-ai/RoboCode human/robocode/*
  branches (source of truth, not committed here) from ~30 repos: shipped sample bots +
  mgalushka Super* variants; the full RoboWiki/PEZ collection (micro/mini/nano/femto +
  Marshmallow/GF1/Swiffer); flat multi-file bots (Mb2, BerendBotje, MaximBot, TheCarver,
  BobTheBuilder, StarterBot, npcomplete); flattened subpackage bots (ur4no, kokomo); single-file
  DrussGT/HawkOnFire (strong top rungs); and ~35 more from a broad GitHub sweep. All copy-in
  (0 reimplementations) -- verbatim, only repackaged to the arena package + main class renamed to
  MyTank (helpers flattened where needed). yngwie/chomsky skipped (unresolvable external deps).
- Each of the 116 verified to COMPILE and play a real battle in the arena image (stage 2, 116/116).
- Provenance: every port file carries a source-URL/author/license header; scripts/ladder/SOURCES.md
  is the committed manifest (slug -> GitHub URL). See stamp_sources.py.
- Fix arena description: it mislabeled itself Tank Royale but the engine is classic Robocode.
- make_robocode.yaml: round-robin (100 rounds, ~2h local at -w6) for Elo; README note.
- scripts/ladder/: build tooling (copy-in porting guide, structural validator, compile+battle
  smoke, push script, provenance stamper, reference bot); ports/ regenerated, not committed.
`ladder make` set the per-player name to the raw branch_init (e.g.
`human/robocode/walls`), which the RoboCode arena turns into an on-disk dir,
a Java package via `sed s/custom/<name>/`, and a robot-selector token. Slashes
broke the sed (terminating the s/// command) and produced invalid robot names,
so battles loaded 0 robots and get_results crashed on max() of an empty score
dict. Sanitizing to `robocode_<bot>` still failed: RoboCode reserves the
`robocode` package namespace for its engine, so its robot classloader refuses
any robot whose package starts with it (ClassNotFoundException at battle time).

Add `_player_slug()` (shared by make + run) that strips the `human/` prefix and
a leading path segment equal to the game name, yielding a bare `<bot>` package
(e.g. `human/robocode/walls` -> `walls`). Non-RoboCode branches
(`human/<author>/<bot>`, `human/<bot>`) are unaffected -- their leading segment
never matches the game name, so slugs are identical to before.

Bump make_robocode.yaml sims_per_round 100 -> 300 for lower Elo variance
(~41s/pair solo, ~25s/pair throughput under -w 6; still far under the 5-min/pair
budget) and refresh the cost comment with measured numbers.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The round-robin only needs per-battle scores to fit Elo; recording every sim
wrote ~8.7MB of compressed replay XML per pair (~59GB over 6670 pairs, risking
disk exhaustion mid-run) and pinned a gzip core on each log copy. Scores come
from results_*.txt, which is unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… john/robocode-ladder

# Conflicts:
#	configs/ladder/README.md
#	configs/ladder/make_robocode.yaml
@john-b-yang john-b-yang merged commit afe9efd into main Jul 7, 2026
5 checks passed
@john-b-yang john-b-yang deleted the john/robocode-ladder branch July 7, 2026 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant