Robocode Tank Royale - Python Bot API
Build the best - destroy the rest!
The Python Bot API for Robocode Tank Royale - the next evolution of the classic Robocode programming game where you code virtual tanks to battle against each other in a virtual arena.
About Robocode Tank Royale
Robocode is a programming game where the goal is to code a bot in the form of a virtual tank to compete against other bots in a virtual battle arena. The player is the programmer of a bot, who will have no direct influence on the game. Instead, you must write a program with the logic for the brain of the bot containing instructions about how it should behave during battles.
Tank Royale is the next generation of Robocode that supports:
- Network-based battles via WebSocket connections
- Multiple programming languages and platforms
- Real-time battles with multiple bots
Installation
Create a virtual environment, activate it, and install the Python Bot API using python -m pip:
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate
# Windows PowerShell: use `py -3 -m venv .venv` and
# `.\.venv\Scripts\Activate.ps1` instead.
python -m pip install --upgrade pip
python -m pip install robocode-tank-royale
Requirements
- Python 3.10 or higher
- WebSocket support (automatically handled by dependencies)
Quick Start
Check out the complete MyFirstBot example on GitHub:
Or start with this minimal example you can run right away:
from robocode_tank_royale.bot_api.bot import Bot
from robocode_tank_royale.bot_api.events import ScannedBotEvent, HitByBulletEvent
class MyFirstBot(Bot):
def run(self) -> None:
while self.running:
self.forward(100)
self.turn_gun_left(360)
self.back(100)
self.turn_gun_left(360)
def on_scanned_bot(self, e: ScannedBotEvent) -> None:
del e
self.fire(1)
def on_hit_by_bullet(self, e: HitByBulletEvent) -> None:
bearing = self.calc_bearing(e.bullet.direction)
self.turn_right(90 - bearing)
def main() -> None:
bot = MyFirstBot()
bot.start()
if __name__ == "__main__":
main()
How to run:
- Install and start the Robocode Tank Royale GUI from the releases page (it starts the game server).
- Save the code above as MyFirstBot.py and run:
python MyFirstBot.py - In the GUI, add your bot process and start a battle.
Configuration
By default, the bot looks for a <ClassName>.json file with bot information. If not found, it falls back to environment
variables.
- SERVER_URL: WebSocket URL of the server (default: ws://localhost:7654 if not set)
- SERVER_SECRET: Optional. Only set this if the server requires a secret; otherwise leave it unset.
- Required when no config file is used: BOT_NAME, BOT_VERSION, BOT_AUTHORS
- Optional: BOT_DESCRIPTION, BOT_HOMEPAGE, BOT_COUNTRY_CODES, BOT_GAME_TYPES, BOT_PLATFORM, BOT_PROG_LANG, BOT_INITIAL_POS
Features
The Python Bot API provides:
- Full Bot Control: Move your tank, rotate gun and radar, fire bullets
- Event Handling: Respond to hits, bot scanned, bullet impacts, and more
- Battle Information: Access to battle state, opponent positions, and game rules
- Debugging Support: Built-in debugging and logging capabilities
- Modern Python: Type hints and modern Python features supported
Getting Started
-
Install the package using the virtual-environment commands in Installation:
python -m pip install robocode-tank-royale -
Download Robocode Tank Royale: Get the game GUI and server from the official releases
-
Create your bot: Download and study MyFirstBot.py or check the documentation
-
Run battles: Start the GUI, add your bot, and watch the battles unfold!
Documentation & Resources
- 📖 Official Documentation: robocode-dev.github.io/tank-royale
- 🚀 Getting Started: Tutorial
- 🤖 My First Bot: Create Your First Bot
- 📚 API Reference: Python API Documentation
- 🤖 Sample Bots: Python Examples
- 💾 Source Code: GitHub Repository
Supported Platforms
Robocode Tank Royale runs on:
- Windows
- macOS
- Linux
The Python Bot API works with Python 3.10+ on all supported platforms.
Community & Support
- GitHub Issues: Report bugs and request features
- Discussions: Community discussions and help
- Contributing: Check out our Contributing Guide
Development Status
🚧 Work in Progress: The Python Bot API is currently under active development. Features and APIs may change before the stable release.
License
Licensed under the Apache License 2.0
Copyright
Copyright © 2022 Flemming N. Larsen
Ready to build the best tank and destroy the rest? Start coding your bot today! 🚀🎯
Metadata
Release files for robocode-tank-royale 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| robocode_tank_royale-1.4.0-py3-none-any.whl | Python 3 | none | any | Details for robocode_tank_royale-1.4.0-py3-none-any.whl |
Release files / robocode_tank_royale-1.4.0-py3-none-any.whl
| Download URL | robocode_tank_royale-1.4.0-py3-none-any.whl |
|---|---|
| Size | 148.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9048fadde774572fc40c8ffbc34dcfd6badbce23914ddbe5eec8a1110dc2d9b0
|
|
BLAKE2b-256 checksum How to use checksums |
a392446b53c194689a855dbac7a914ce97f6288cde1549ef19530f8d14969461
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Security for robocode-tank-royale 1.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.