About robocode-s

robocode-s rebuilds Robocode around three ideas:

  • The engine is separate from the robots. The battle engine is written in Rust. Robots don’t run inside it: every robot is its own process, which talks to the engine over a small, open protocol. A robot that crashes, hangs or eats memory only takes itself down.
  • Classic robots keep working. Existing Java robot jars run unmodified, and a battle with the same seed plays out turn for turn exactly as in classic Robocode 1.11.1. That is verified by replaying recorded classic battles, including RoboRumble’s top bots, and comparing every turn.
  • Robots can be written in any language. Because the protocol is language-neutral, robots can also be written in Kotlin, Python, C#, Rust or C/C++, and run locally, in a container or on another machine.

On top of that come a GPU-accelerated desktop viewer, a deterministic mode where the same seed always gives the same battle, and our own rumble with a modern website and battle replays in the browser.

Classic Robocode, Tank Royale and robocode-s

Classic Robocode (Mathew A. Nelson, Flemming N. Larsen and contributors) is the original: a Java application in which robots run as threads in the same JVM. Its RoboRumble has ranked community bots for two decades. robocode-s treats classic as the reference: same rules, same physics, same events, down to the last bit of every floating-point number.

Robocode Tank Royale is the classic team’s own next generation. Like robocode-s it runs robots out of process, in several languages. Its game API is different, though, so classic robots don’t run on it. robocode-s puts running the existing robots exactly first. A bridge between the two protocols is on the wish list.

Where the project stands

MilestoneWhatState
M0Repository, CI on Linux, Windows and macOS, designDone
M1Headless engine, protocol, server, classic Java robots, bit-exactIn progress: engine, server and robot host fight real RoboRumble robots identically to classic; the command-line battle runner is next
M2Desktop GUI: battle setup, viewer, debug painting, replayPlanned
M3Isolation: Docker images, remote runnersPlanned
M4Native APIs for Python, .NET, Rust, C/C++ and Java/KotlinPlanned
M5The rumble: backend, volunteer client, rankings websitePlanned (this website is its start)
M5bBattle replays in the browserPlanned

License and contributing

robocode-s is open source under the Eclipse Public License 2.0. The classic sample robots are bundled under the same license, with their original copyright.

The code, issues and design documents are on GitHub. Bug reports and ideas are welcome there.

Edit this page on GitHub