Robocode Tank Royale

May 6, 2026 Β· View on GitHub

Robocode logo

Build the best – destroy the rest!

πŸ€– About

Robocode is a programming game where the goal is to code a bot in the form of a virtual tank that competes against other bots in a virtual battle arena.

The player writes a program that controls the bot’s movement, scanning, firing, and reactions to events during a battle. All logic lives inside this program – you never control the bot directly.

The name Robocode is short for β€œRobot code” and comes from the original version here.
Robocode Tank Royale is the next evolution, where bots can play over the Internet via WebSocket.

This project aims to help you learn programming, improve AI skills in a fast‑running real‑time game, and have fun while competing.

βš”οΈ Example of a battle

Animated battle between tanks on a 2D battlefield

🌟 Explore More

ResourceWhy it mattersLink
πŸ“˜ The Book of RobocodeThe advanced companion to Tank Royale docs with deeper strategy content on movement, targeting, radar control, energy management, and competition-level tactics.Open the Book
πŸ–₯️ Tank Royale ViewerA dedicated web-based viewer for showing live battles, analyzing recordings, and putting matches on big screens during competitions.Open the Viewer

πŸ“˜ The Book of Robocode

Want to go beyond the fundamentals? The Book of Robocode is the advanced companion to these docs and covers both Robocode and Robocode Tank Royale.

Start here:

πŸ–₯️ Tank Royale Viewer

Want to visualize battles in style? Check out the Tank Royale Viewer β€” a web-based viewer for watching Robocode Tank Royale matches in real time.

Created by Jan Durovec, it is especially useful for:

  • displaying live battles on big monitors during competitions
  • analyzing recorded battles
  • showcasing tournament and championship matches

πŸ“š Documentation

Main page: Robocode Tank Royale Docs

πŸš€ Start here

If you want to...Start here
Install and run Tank RoyaleInstallation guide
Learn the basicsGetting Started
Build your first botMy First Bot
Learn advanced strategyThe Book of Robocode
Watch battles in a dedicated viewerTank Royale Viewer
Run battles headlessly from codeBattle Runner API docs

πŸ’» Supported platforms

Robocode runs on Java 11 or newer and supports Windows, macOS, and Linux out of the box.
Bot APIs are available for:

  • Python
  • Java (JVM)
  • .NET
  • TypeScript / JavaScript

Bots can be written in any language that can access a WebSocket API and follows the protocol.

The following Bot APIs provide full client implementations:

LanguageAPI
PythonPython Bot API
Java (JVM)Java/JVM Bot API
.NET.NET Bot API
TypeScript / JavaScriptTypeScript Bot API

Additional languages supported by the Java/JVM API:

  • Java
  • Groovy
  • Kotlin
  • Scala
  • Jython
  • Clojure

Supported .NET languages:

  • C#
  • F#
  • Visual Basic
  • IronPython

βš™οΈ Battle Runner API

The Battle Runner API lets you run battles programmatically from any JVM application β€” no GUI required. Use it for automated testing, benchmarking, or building tournament systems.

BattleRunner.create { embeddedServer() }.use { runner ->
    val results = runner.runBattle(
        setup = BattleSetup.classic { numberOfRounds = 10 },
        bots  = listOf(BotEntry.of("/path/to/MyBot"), BotEntry.of("/path/to/EnemyBot"))
    )
    println("Winner: ${results.results.first().name}")
}

Available on Maven Central as dev.robocode.tankroyale:robocode-tankroyale-runner. See the Battle Runner API docs or the module README for full documentation.

🚧 Work in progress

Thanks to the contributors

Huge thanks to every contributor β€” you make this project shine! πŸ™Œ

πŸ‘¨β€πŸ’» Maintainer

@flemming-n-larsen

Buy Me A Coffee

πŸ“„ License

Apache License 2.0

Copyright Β© 2022 Flemming N. Larsen