Build the best - destroy the rest!

Friday, 28 May 2010

Robocode (final)

The final version of Robocode version has finally been released. As usual, lots of bugs have been found and fixed.

If you are new to Robocode then please note that this version is the first version of Robocode that supports robots written for .NET. With the .NET plugin for Robocode, Java and .NET robots can participate in the same battles in the same time.

You can read our two first articles on the RoboWiki about
how to create and how to debug a .NET robot with Visual Studio.

If you want to know the differences between the Robot API for Java and the new one for .NET, you should read this article.

You can read about the bugfixes and changes with the previous beta versions here:

In the following, the new bugfixes and changes made since the Beta 3 version are listed.


  • Bug: Robots were disabled when skipping 30 skipping non-consecutive turns (or 120 turns when performing I/O operations). Now, Robocode is only disabling robots when the robot skips 30 consecutive turns, which is the original behavior, and which has been broken since version

  • Bug [2994724] - Duplicate version numbers prevents uploading.

  • Bug [2994732] - tzu.TheArtOfWar 1.2 gets NullPointerExceptions.

  • Bug [3003721] - Attempting to install Robocode over an existing install NPEs.

  • Bug [3005547] - The robocode.command is missing the execute permissions bit.

  • Bug [2999719] - Problems with Graphics2D.fill/draw(Shape).

  • Bug [3005111] - NPE when uploading results.

  • Bug [2994560] - "Ignoring" messages in rumble is duplicated.

  • Bug [2975871] - Minor visual bug - Currently selected robot gets covered.

  • Bug: A security exception was thrown with development robots trying to access their data directory.


  • Robocode will now only install batch files relevant to the hosting system, e.g., .bat files are not installed under Unix/Linux/Mac OS X, and .sh files are not installed under Windows. Furthermore, .command files are only installed under Mac OS X, and has now the execution permission bit set (due to bug [3005547]).

  • Robocode will now write out a warning in the robot console when a robot is detected that uses static references to a robot, i.e. static fields that are declared as e.g. a Robot, AdvancedRobot, TeamRobot etc. (typically references to the robot itself). A static reference to a robot can cause unwanted behavior with the robot accessing these. Hence, it is strongly recommended that static robot references in a robot class or within its helper classes are changed into non-static references and that the robot is recompiled afterwards. In every round, Robocode is creating new instances of the individual robot, meaning that static references to former Robot objects points to "dead" objects that are not used anymore in the game, and which cannot be garbage collected during the battle when there is static references to these.

Download Robocode (final) from here
Download Robocode .NET plugin from here
Download Robot testing framework from here