Skip to content

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
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
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

Based on RoboWiki content (CC BY-SA 3.0) for classic Robocode and the official Robocode Tank Royale documentation.