Releases: robocode-dev/tank-royale
0.40.2
[0.40.2] - 2026-04-14 - Bot API stability and intent fixes
π Bug Fixes
-
Bot API (Java):
- #207: Fixed Java 26 warning about mutating
finalfields via reflection during
deserialization ofRoundStartedEventandRoundEndedEvent. Gson now deserializes
into the mutable schema classes first, then constructs the immutable bot API event
objects via their constructors.
- #207: Fixed Java 26 warning about mutating
-
Bot API (Java, .NET, Python, TypeScript):
- #202: Fixed bots receiving a
SkippedTurnEventon turn 1 when the OS scheduler delayed
the bot thread's first time slice by more than the turn timeout. The bot API now sends
default intent immediately after the bot thread wakes up for the first turn, ensuring turn 1
is never skipped due to scheduling latency. - #202: Fixed an edge case where the pre-warmed bot thread could bypass the tick-arrival
wait at the start of rounds 2+ if the previous round's tick state was still set.
- #202: Fixed bots receiving a
-
Bot API (.NET):
- Fixed console output is becoming corrupted after a bot reconnects to the server in a
multi-game session. - Fixed a rare crash where an interrupted thread flag could leak into unrelated operations
after a bot disconnects.
- Fixed console output is becoming corrupted after a bot reconnects to the server in a
-
Bot API (Java, .NET, Python):
- Fixed
rescan()/setRescan()having no effect. The rescan flag was cleared internally
before the intent was sent to the server, so the server never received it.
- Fixed
Robocode Tank Royale 0.40.2
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.40.2.msi |
| π macOS | robocode-tank-royale-gui-0.40.2.pkg |
| π§ Linux | robocode-tank-royale-gui-0.40.2.rpm (RPM) / robocode-tank-royale-gui-0.40.2.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.40.2.jar
Running: java -jar robocode-tankroyale-gui-0.40.2.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.40.2.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.40.2.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.40.2.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.40.2β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.40.2</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.40.2'Direct JAR: robocode-tankroyale-bot-api-0.40.2.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.40.2More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.40.1
[0.40.1] - 2026-04-12 - First-turn skip fix + breakpoint disconnect fix
π Bug Fixes
-
Server:
- #206: Fixed bots disconnecting from the server after ~80 seconds while paused at a
debugger breakpoint.
- #206: Fixed bots disconnecting from the server after ~80 seconds while paused at a
-
Bot API (Java, .NET, Python):
- #202: Fixed bots receiving a
SkippedTurnEventon turn 1 and missing their first chance
to act.
- #202: Fixed bots receiving a
Robocode Tank Royale 0.40.1
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.40.1.msi |
| π macOS | robocode-tank-royale-gui-0.40.1.pkg |
| π§ Linux | robocode-tank-royale-gui-0.40.1.rpm (RPM) / robocode-tank-royale-gui-0.40.1.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.40.1.jar
Running: java -jar robocode-tankroyale-gui-0.40.1.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.40.1.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.40.1.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.40.1.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.40.1β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.40.1</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.40.1'Direct JAR: robocode-tankroyale-bot-api-0.40.1.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.40.1More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.40.0
[0.40.0] - 2026-04-11 - Debug Mode, Breakpoints & Debugger Detection
This release makes Tank Royale a first-class environment for bot development and debugging. The three
new capabilities work together as a system: each Bot API now auto-detects a connected debugger and
advertises it to the server; the server uses that signal to auto-enable breakpoint mode for that
bot, suspending the turn clock whenever the bot hits a breakpoint rather than issuing a
SkippedTurnEvent; and a new debug mode lets any controller (or the GUI) step through the battle
one completed turn at a time, inspecting the full game state before advancing. Together these remove
the friction of debugging a bot under real game conditions β no manual setup, no missed turns, no
racing the clock.
β¨ Features
-
Server:
- Added debug mode (
EnableDebugMode/DisableDebugMode): turns complete fully before
pausing;next-turnsteps one turn,ResumeGameexits.GamePausedgains apauseCause
field (pause,debug_step, orbreakpoint). - #204: Added breakpoint mode: server waits for a late bot intent instead of issuing
SkippedTurnEvent; auto-resumes on arrival. Advertised viafeatures.breakpointMode.
Auto-enabled for bots withdebuggerAttached = true. - Added
server.properties(debugModeSupported,breakpointModeSupported) with CLI
overrides (--[no-]debug-mode,--[no-]breakpoint-mode).breakpointModeSupported = false
silently ignores breakpoint requests (tournament safety).
- Added debug mode (
-
GUI:
- Added a Debug π toggle to the control panel β steps one complete turn per Next Turn click.
- #205: Added Start paused to the New Battle dialog β enters debug mode from turn 1.
- #204: Added Breakpoint Mode toggle to the Bot Properties panel; auto-enabled and π-labelled
whendebuggerAttached = true. Hidden when the server doesn't support breakpoint mode.
-
Bot APIs (Java, .NET, Python):
- #204: Added debugger detection:
debuggerAttached: trueis included in the bot handshake
when a debugger is found (JDWP args /Debugger.IsAttached/sys.gettrace()). Overridable
viaROBOCODE_DEBUG.
- #204: Added debugger detection:
π Bug Fixes
-
Sample bots (C#):
- Fixed
PaintingBot.cswith a broken .json file.
- Fixed
-
Bot API (Java, .NET, Python):
- #202: Fixed race condition in
go()/execute()where the WebSocket thread could deliver a new
tick between event dispatch and intent sending, causing the bot to skip a turn. This produced early
SkippedTurnEventat tick 1, prevented the bot from acting at tick 2, and delayedScannedBotEvent
delivery by one tick. The fix passes the captured turn number fromgo()intoexecute()so both
use the same consistent tick throughout the call.
- #202: Fixed race condition in
Robocode Tank Royale 0.40.0
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.40.0.msi |
| π macOS | robocode-tank-royale-gui-0.40.0.pkg |
| π§ Linux | robocode-tank-royale-gui-0.40.0.rpm (RPM) / robocode-tank-royale-gui-0.40.0.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.40.0.jar
Running: java -jar robocode-tankroyale-gui-0.40.0.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.40.0.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.40.0.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.40.0.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.40.0β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.40.0</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.40.0'Direct JAR: robocode-tankroyale-bot-api-0.40.0.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.40.0More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.39.0
[0.39.0] - 2026-04-06 - Convention-over-Configuration & Scriptless Bots
β¨ Features
-
Booter:
- Template-based booting for JVM, .NET, and Python β bots no longer need
.sh/.batscripts.
The Booter selects a template fromplatform,programmingLang, andbasein the bot's JSON. - Bots without a
.jsonfile are now supported: the Booter heuristically detects the platform
from files in the directory (.java,.py,.cs, JARs, etc.) and boots accordingly. - The bot's parent-directory name is used as the default
basewhen not set in JSON.
- Template-based booting for JVM, .NET, and Python β bots no longer need
-
GUI:
- Boot progress dialog handles no-JSON bots via baseline-snapshot tracking β waits for the right
number of new connections rather than a specific name/version. - #201: Added Tank Color Mode to the config dialog (persisted in
gui.properties):- Bot Colors (default) β bot-defined colors apply freely.
- Bot Colors (Once) β the first color set per component is locked for the entire battle.
- Default Colors β system defaults always used; bot colors ignored.
- Bot Colors (Debug Only) β bot colors visible only when Graphical Debugging is active.
- Boot progress dialog handles no-JSON bots via baseline-snapshot tracking β waits for the right
-
Bot API (Java, .NET, Python):
- Runtime validation of required properties (
name,version,authors). ABotExceptionwith
a descriptive message is thrown on connection if any are missing.
- Runtime validation of required properties (
π§ Changes
-
Build:
- #203: Updated
release-docs-template.mdto use the direct JAR link for the Java Bot API on Maven Central.
- #203: Updated
-
Sample Bots:
- Removed generated
.cmd/.shscripts from all standard sample bots β they now rely on template-based booting. - Added
NuGet.Configto C# sample bot distributions for standalone source-based builds.
- Removed generated
π Bug Fixes
- GUI:
- Fixed double-clicking in the New Battle dialog. The boot-progress dialog was
APPLICATION_MODAL,
blocking the window and stealing focus between clicks. It is now modeless withsetAutoRequestFocus(false),
so the bot list keeps focus and additional double-clicks accumulate in the same dialog.
- Fixed double-clicking in the New Battle dialog. The boot-progress dialog was
Robocode Tank Royale 0.39.0
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.39.0.msi |
| π macOS | robocode-tank-royale-gui-0.39.0.pkg |
| π§ Linux | robocode-tank-royale-gui-0.39.0.rpm (RPM) / robocode-tank-royale-gui-0.39.0.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.39.0.jar
Running: java -jar robocode-tankroyale-gui-0.39.0.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.39.0.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.39.0.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.39.0.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.39.0β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.39.0</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.39.0'Direct JAR: robocode-tankroyale-bot-api-0.39.0.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.39.0More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.38.3
[0.38.3] - 2026-04-05 - TPS Resume Dialog & TimeLeft Fix
π Bug Fixes
-
Bot API (Java, .NET, Python):
- #202: Fixed
getTimeLeft()returning negative values when turns were skipped or the bot was busy.
The timing now uses the arrival time of the latest tick received by the bot to ensure accurate
reporting of the time remaining for the current turn.
- #202: Fixed
-
GUI:
- Fixed JNA restricted native access warning (
java.lang.System::load) on Java 16+ when starting the
booter, server, and recorder subprocesses. The--enable-native-access=ALL-UNNAMEDJVM flag is now
passed automatically when running on Java 16 or later.
- Fixed JNA restricted native access warning (
π§ Changes
- Bot API (Java, .NET, Python, TypeScript) + Schemas:
- Increased the maximum number of country codes per bot from 5 to 20.
Robocode Tank Royale 0.38.3
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.38.3.msi |
| π macOS | robocode-tank-royale-gui-0.38.3.pkg |
| π§ Linux | robocode-tank-royale-gui-0.38.3.rpm (RPM) / robocode-tank-royale-gui-0.38.3.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.38.3.jar
Running: java -jar robocode-tankroyale-gui-0.38.3.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.38.3.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.38.3.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.38.3.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.38.3β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.38.3</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.38.3'Direct JAR: robocode-tankroyale-bot-api-0.38.3.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.38.3More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.38.2
[0.38.2] - 2026-03-29 β TPS Resume Dialog & Double-Turn Fixes
π Bug Fixes
- Server:
- #199: Fixed double-turn bugs when stepping at TPS=0, rapidly changing TPS, or switching between TPS values.
The turn-timeout timer is now rescheduled only after the visual delay completes, and nonzeroβnonzero TPS
changes no longer reset the timer. - Fixed game freeze on pause/resume and when resuming from TPS=0. Resume now calls
resetTurnTimeout()
directly instead of relying onturnTimeoutTimer.resume(), which could be a no-op depending on timer state.
- #199: Fixed double-turn bugs when stepping at TPS=0, rapidly changing TPS, or switching between TPS values.
β¨ Features
- GUI:
- Resume at TPS=0 now shows a confirmation dialog asking the user to resume at the default TPS instead of
silently resuming with no visual delay.
- Resume at TPS=0 now shows a confirmation dialog asking the user to resume at the default TPS instead of
π§ Changes
- Bot API (Java, .NET, Python) + Schemas:
- Increased the maximum number of authors per bot from 5 to 20.
β»οΈ Refactoring
- Server:
- Improved thread-safety, model immutability, error handling, and game start validation.
- Booter:
- Improved CLI structure and error logging.
Robocode Tank Royale 0.38.2
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.38.2.msi |
| π macOS | robocode-tank-royale-gui-0.38.2.pkg |
| π§ Linux | robocode-tank-royale-gui-0.38.2.rpm (RPM) / robocode-tank-royale-gui-0.38.2.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.38.2.jar
Running: java -jar robocode-tankroyale-gui-0.38.2.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.38.2.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.38.2.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.38.2.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.38.2β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.38.2</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.38.2'Direct JAR: robocode-tankroyale-bot-api-0.38.2.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.38.2More info: robocode.dev/api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.38.1
[0.38.1] - 2026-03-23 β GUI Boot Progress Dialog
β¨ Features
- GUI:
- Boot progress dialog: when starting a battle, a modal dialog now shows each expected bot identity with a status
icon (β³ pending / β connected). For duplicate identities (e.g., 4 droids), the row shows
MyFirstDroid v1.0 (2/4 connected). - Elapsed time label (
Elapsed: 12s / 30s) updates every 500 ms during the wait. - The cancel button aborts the boot, kills booted bot processes, and returns to the bot selection dialog.
- Timeout error: after the configured timeout, the status area is replaced with a list of pending bots and
"Retry" / "Cancel" buttons. "Retry" resets the timer and continues waiting. - Boot timeout is now configurable in GUI Options (default: 30 seconds).
- Boot progress dialog: when starting a battle, a modal dialog now shows each expected bot identity with a status
π Bug Fixes
- Python bot API:
- Fixed
AssertionError: No current event to check interruptibility forcausing bots to stall after ~200β300
rounds at high TPS (#196). Root causes: threading race between the bot thread and WebSocket thread in
dispatch_events(fixed by joining the bot thread instop_thread()), and a missingNoneguard on
current_top_eventafter aThreadInterruptedExceptionin the event dispatch loop.
- Fixed
Robocode Tank Royale 0.38.1
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.38.1.msi |
| π macOS | robocode-tank-royale-gui-0.38.1.pkg |
| π§ Linux | robocode-tank-royale-gui-0.38.1.rpm (RPM) / robocode-tank-royale-gui-0.38.1.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.38.1.jar
Running: java -jar robocode-tankroyale-gui-0.38.1.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.38.1.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.38.1.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.38.1.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.38.1β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.38.1</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.38.1'Direct JAR: robocode-tankroyale-bot-api-0.38.1.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.38.1More info: robocode.dev/bot-api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.38.0
[0.38.0] - 2026-03-21 β Identity-Based Bot Matching
β¨ Features
- Runner API:
- Identity-based bot matching: bots are now matched by
name+versionfrom theirbot.jsonrather than by count alone. This fixes incorrect matching when teams, stray bots, or duplicate bot instances are present β only bots whose identity matches an expected slot are counted. - Configurable boot timeout via
botConnectTimeout(java.time.Duration)onBattleRunner.Builder. Default remains 30 seconds. Replaces the previous hard-coded constant. - Boot progress reporting:
BattleHandle.onBootProgressfires on everyBotListUpdateand every 500 ms during the wait loop, delivering aBootProgresssnapshot withexpected,connected,
pendingidentity maps,elapsedMs, andtimeoutMs. Intended for GUI progress dialogs. - Team member directory validation:
BooterManager.validateBotDir()now checks that every directory listed inteamMembersexists as a sibling directory at battle-start time, throwingBattleExceptionwith the missing member name before any bot process is launched. - Added
suppressServerOutput()builder option to opt out of routing embedded server and booter stdout through JUL.
By default, all output from the embedded server and booter processes is logged at INFO level with[SERVER]and[BOOTER]prefixes. CallsuppressServerOutput()on the builder to silence this when you configure your own logging.
- Identity-based bot matching: bots are now matched by
π Bug Fixes
- Runner API:
- Fixed orphaned stdout reader thread in
ServerManager: if the embedded server process died unexpectedly andensureStarted()was called again, the previous reader thread was overwritten without being joined. The thread is now joined (with a 500 ms timeout) before a new one is started. - Embedded server and booter stdout pipes are now always drained regardless of the
captureServerOutputsetting, preventing OS pipe buffer fill-up when output capture is suppressed.
- Fixed orphaned stdout reader thread in
Robocode Tank Royale 0.38.0
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.38.0.msi |
| π macOS | robocode-tank-royale-gui-0.38.0.pkg |
| π§ Linux | robocode-tank-royale-gui-0.38.0.rpm (RPM) / robocode-tank-royale-gui-0.38.0.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.38.0.jar
Running: java -jar robocode-tankroyale-gui-0.38.0.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.38.0.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.38.0.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.38.0.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.38.0β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.38.0</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.38.0'Direct JAR: robocode-tankroyale-bot-api-0.38.0.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.38.0More info: robocode.dev/bot-api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.37.0
π¦ 0.37.0 - Battle Runner API β 04-Mar-2026
β¨ Features
- Battle Runner API (documentation):
- New
runnermodule providing a programmatic API for running battles without the GUI. - Supports both embedded server (auto-managed lifecycle) and external server connection modes.
- Synchronous (
runBattle()) and asynchronous (startBattleAsync()) battle execution. - Game type presets (Classic, Melee, 1v1, Custom) with full parameter overrides via
BattleSetup. - Battle recording to
.battle.gzreplay files compatible with the Recorder module. - Intent diagnostics for capturing raw bot-intent messages per bot per turn (opt-in).
- Battle control: pause, resume, single-step, and stop running battles.
- Real-time events: tick, round start/end, game start/end, abort, pause/resume.
- Structured
BattleResultswith per-bot rankings and detailed scores. - Resource management via
AutoCloseablefor server lifecycle, bot processes, and graceful shutdown. - Published to Maven Central as
dev.robocode.tankroyale:robocode-tankroyale-runner.
- New
π Bug Fixes
- GUI:
- #191: GUI freezes from time to time in 0.36.1
- Bot APIs (C#, Python):
- #192: Fixed
TimeLeft/time_leftreturning incorrect (often negative) values on Windows. The start timestamp
for the turn timeout was being captured on the bot thread at dispatch time, which is after OS scheduling has
already consumed part of the turn budget. The fix aligns C# and Python with Java: the timestamp is now taken on
the WebSocket thread when the tick is first received (_ticksStart/tick_start_nano_time), so all time spent
scheduling and dispatching correctly counts againstTurnTimeout. - C# only: added
timeBeginPeriod(1)(Windows Multimedia API) to set 1 ms timer resolution for the bot process,
matching the behavior of the JVM and CPython runtimes. This ensuresThread.Sleepdurations are accurate to
~1 ms instead of the default ~15.6 ms Windows timer granularity.
- #192: Fixed
Robocode Tank Royale 0.37.0
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.37.0.msi |
| π macOS | robocode-tank-royale-gui-0.37.0.pkg |
| π§ Linux | robocode-tank-royale-gui-0.37.0.rpm (RPM) / robocode-tank-royale-gui-0.37.0.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.37.0.jar
Running: java -jar robocode-tankroyale-gui-0.37.0.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.37.0.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.37.0.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.37.0.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.37.0β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.37.0</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.37.0'Direct JAR: robocode-tankroyale-bot-api-0.37.0.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.37.0More info: robocode.dev/bot-api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features
0.36.1
π¦ 0.36.1 - WonRoundEvent and Python Console Output - 24-Feb-2026
π Bug Fixes
-
Bot API (.NET):
- #188: Fixed thread-safety issue in
RecordingTextWriterwhere concurrentConsole.WriteLinecalls from event
handlers (e.g.,OnScannedBot) could cause race conditions, leading to performance degradation, radar lock loss,
and eventual event queue overflow ("Maximum event queue size has been reached: 256"). The fix adds proper locking
around all write and read operations, matching the thread-safety pattern used in the Java implementation. - Added thread-safety test to verify
RecordingTextWriterhandles concurrent writes correctly.
- #188: Fixed thread-safety issue in
-
Bot APIs (Java, C#, Python):
- #190: Fixed
WonRoundEventnot being triggered when a bot wins a round. TheonWonRound()handler is now invoked
even if the server doesn't send a separateWonRoundEvent, by checking the rank inRoundEndedEventand
publishingWonRoundEventwhen rank equals 1.
- #190: Fixed
-
Bot API (Python):
- Implemented missing stdout/stderr redirection to bot console. Python bots can now use
print()statements and see
output in the Bot Console, matching Java and C# functionality. This feature was missing since v0.19.0.
- Implemented missing stdout/stderr redirection to bot console. Python bots can now use
-
Bot API (All platforms):
- Fixed the one-by-one error in the event queue size check. The queue now correctly enforces a maximum of 256 events
instead of allowing 257 events before showing the error message. Changed the boundary check from
<= MAX_QUEUE_SIZEto< MAX_QUEUE_SIZEin Java, .NET, and Python implementations.
- Fixed the one-by-one error in the event queue size check. The queue now correctly enforces a maximum of 256 events
Robocode Tank Royale 0.36.1
π Quick Start
New to Robocode Tank Royale?
- Install Java 11+ β Download GUI β Get sample bots β Start battling!
π Complete documentation: robocode.dev | Advanced strategies: book.robocode.dev
π Installing Robocode
Requirements: Java 11+ (whichjdk.com) | Detailed setup: robocode.dev/installation
Choose Your Installation Method
You have two options to install and run the Robocode GUI:
- Native Installers (Recommended) β Installs as a native application with desktop shortcuts
- Portable JAR File β Run directly from the command line without installation
Both options require Java 11 or newer.
Option 1: Native Installers (Recommended)
Download for your platform:
| Platform | Installer |
|---|---|
| πͺ Windows | robocode-tank-royale-gui-0.36.1.msi |
| π macOS | robocode-tank-royale-gui-0.36.1.pkg |
| π§ Linux | robocode-tank-royale-gui-0.36.1.rpm (RPM) / robocode-tank-royale-gui-0.36.1.deb (DEB) |
β οΈ Note: Installers are unsigned (normal for open-source projects). Your OS may show security warnings - choose "Run anyway" or similar. Verify using SHA256SUMS if needed.
Option 2: Portable JAR File
Download: robocode-tankroyale-gui-0.36.1.jar
Running: java -jar robocode-tankroyale-gui-0.36.1.jar
π Tip: Create a dedicated folder for better organization. See GUI documentation for details.
π€ Sample Bots
Download pre-built bots to start battling immediately:
- Download the archive for your preferred language
- Extract to a directory (e.g.,
C:\Robocode\bots\python) - In GUI: Config β Bot Root Directories β Add the extracted directory
| Language | Download | Requirements |
|---|---|---|
| π Python | sample-bots-python-0.36.1.zip | Python 3.10 or newer |
| π· C# | sample-bots-csharp-0.36.1.zip | Microsoft .NET SDK 8 or newer |
| β Java | sample-bots-java-0.36.1.zip | Any Java SDK 11 or newer |
π¦ Bot API
Ready to develop your own bots? Install the API for your preferred language:
π Python
pip install robocode-tank-royale==0.36.1β Java
Maven:
<dependency>
<groupId>dev.robocode.tankroyale</groupId>
<artifactId>robocode-tankroyale-bot-api</artifactId>
<version>0.36.1</version>
</dependency>Gradle:
implementation 'dev.robocode.tankroyale:robocode-tankroyale-bot-api:0.36.1'Direct JAR: robocode-tankroyale-bot-api-0.36.1.jar
π· .NET (C#, F#, VB.NET)
dotnet add package Robocode.TankRoyale.BotApi --version 0.36.1More info: robocode.dev/bot-api | PyPI | Maven Central | NuGet
π Sound Effects
Enhance your Robocode experience with sound effects!
Download & Installation: Sounds Repository
Follow the repository instructions to install sounds in the correct location.
π Additional Resources
- Documentation: robocode.dev
- GitHub Repository: robocode-dev/tank-royale
- Issue Tracker: Report bugs or request features