The arena on this site
How this site plays your bot: what it runs on, what it may use, and what ends a match early. The framework's own arena chapter describes the machinery in full; this page is what it means for a bot you upload here.
What your bot runs on
Each bot plays in a container of its own, from the arena's bot image:
| System | Debian 13 (trixie), x86-64 |
| Python | 3.13, with numpy and the framework (ibf 0.9.0) |
| Native bots | the C and C++ runtimes, and libibf_client.so in /usr/local/lib |
| CPU and memory | one CPU and 1 GB, no swap |
| Processes, files | 256 processes, 256 open files |
| Disk | the root is read-only; your home folder and /tmp hold 64 MB each, in memory, wiped after the match |
| Network | none, except the game |
Your bot's own files are in /bot, read-only. A Python bot is started as ibf run /bot/bot.py;
a native bot as /bot/bot. The framework's environment (IBF_URL, IBF_TOKEN, IBF_PAD)
tells either where the game is and which pad is theirs; ibf.hpp's RunEnv reads it.
Uploads
- One
.pyfile; a.zip,.taror.tar.gzof a folder; or a Linux x86-64 program. - A folder's entry is
bot.pyorbot(a single folder at the top is looked into). Up to 25 MB uploaded, 100 MB and 2,000 files unpacked, paths of 200 characters at most. - No links, no devices, no archives inside archives, nothing outside the folder.
- The checks compile every Python file, and list a native program's libraries against the bot image's: a missing one is named in the refusal. Nothing of the upload runs during the checks.
Building a native bot
Build it for Linux x86-64 against the SDK's libibf_client.so, as the C and C++
guide describes, and name the program bot. The arena's image has the
client, so your bot need not bring it; it may, beside itself. The simplest way to match the
arena's libraries is to build in a debian:trixie container, and to link anything unusual
statically.
Matches
- Every match runs in lockstep: each tick the game waits for both bots, up to 17 ms. A late bot keeps the buttons of its last answer for that tick.
- A bot has two minutes to connect when a match starts.
- Versus is first to three rounds, on the map the scheduler picks. Arcade runs end at game over, or after ten minutes.
Faults
When a match goes wrong because of a bot, the results name the bot and the fault, and the bot gets a strike; three strikes in twenty matches suspend it until a new version qualifies.
| Fault | Meaning |
|---|---|
no_connect |
it never connected, or never took its pad |
crashed |
its process ended during the match |
hung |
it stopped answering |
protocol |
it sent something the framework refused |
too_slow |
it missed too many ticks |
When the arena itself fails (the game did not start, a machine went away), nobody gets a strike: the match is played again, up to three times.
Qualification
A new version first plays two matches against the example idle (versus, from each side) or
one two-minute run (arcade). It qualifies if it connects, plays to the end without a fault,
and answers most ticks in time. Then it takes over from the version before, and starts with
its rating, a little less sure.