Log in
Before submitting, authenticate the CLI with your platform account:
This opens a browser window to complete the OAuth flow. Your session persists until it expires or you run cambc logout.
Via CLI
If you pass a directory, the CLI auto-zips it. You can also submit a zip file directly.
- Go to game.battlecode.cam
- Navigate to Submissions in the sidebar
- Upload your bot zip
Bot requirements
Your submission must contain a main.py file with a Player class. The file can be at the root of the zip or inside a single top-level directory.
| Constraint | Limit |
|---|
| Zip size | 5 MB max |
| Decompressed size | 50 MB max |
| File count | 500 files max |
| Native extensions | Not allowed (.so, .pyd, .dylib, .dll) |
| Imports | Must be top-level (file I/O is blocked during run()) |
All imports must happen at the top of your file, not inside run(). The sandbox blocks file reads during gameplay for security.
What happens after upload
- Your zip is validated (structure, size, no native extensions)
- Status is set to ready
- Your latest ready submission becomes your active bot on the ladder (you can also manually select which submission is active from the Submissions page)
- The scheduler pairs you against other teams every 10 minutes
Ladder
The ladder ranks all teams by Elo rating. Every 10 minutes, the scheduler creates one match per team, pairing you with a nearby-rated opponent using greedy nearest-rating matching with small random jitter. Each match consists of 5 games — the team that wins more games wins the match. Ratings update immediately after each match. See How matches work for details.
Use cambc match test to test your bot with full time limits on the same hardware as the ladder before submitting. Use cambc match unrated to challenge specific teams without affecting your rating.