A Short History of Robocode
Robocode began in the early 2000s as a side project by Mathew A. Nelson. The idea was simple: learn programming by coding a bot tank that fights in a 2D arena. The mix of learning and competition made it popular with students, hobbyists, and teachers.

Early 2000 Robocode
The Classic Robocode Era
The first public versions were released as a Java application. Bots extended base classes and reacted to events like onScannedRobot and onHitByBullet.
Highlights:
- A vibrant community formed around the game.
- Players created hundreds of bots, from simple examples to world-class competitive bots.
- The community started RoboWiki (classic Robocode only), collecting strategies, formulas, and tutorials.
- Albert Perez created the RoboRumble, a continuous distributed ranking system that transformed Robocode into a true competitive sport. Without this ranking system, the "evolutionary war" between strategies like GuessFactor Targeting and Wave Surfing would never have happened—developers wouldn't have had a way to prove which bot was actually better.
RoboWiki became the reference for advanced topics such as wave surfing, GuessFactor targeting, detailed battlefield physics, and much more.

Community Sharing Bots and Ideas via the RoboWiki
Handover and Community Maintenance
Robocode was open-sourced and community maintenance grew. Flemming N. Larsen became a key maintainer and continued to develop and support classic Robocode. The project evolved to newer Java versions while keeping its core API and spirit. Many courses and clubs adopted it for teaching.
The Need for a Modern Platform
As tools and languages evolved, the community wanted:
- Multi-language support (not just Java)
- Easier integration with modern editors and CI
- Headless servers and automated tournaments
These needs led to a modern platform: Robocode Tank Royale.
Robocode Tank Royale: The New Generation
Robocode Tank Royale, created by Flemming N. Larsen, keeps the core idea but updates the architecture.
Key features:
- Server-based engine; bots connect over a network protocol
- Support for multiple languages (Java, C#, Python, Kotlin, Scala, and others)
- Cleaner separation of engine and bots, making automation and deployment easier
- Open documentation and starter kits at robocode-dev.github.io/tank-royale