Build the best - destroy the rest!

Sunday, 23 November 2008

Robocode 1.6.2 Beta is out

We are proud to present new version of Robocode for community testing.

User visible changes

  • We now support excellent record/replay functionality, including export/import to XML. Record also contains paintings of robots, so you can replay them. Because recording is resource consuming, it is switched off by default, go to preferences dialog to turn it on.

  • In UI we have new button for main battle log, where you can watch systems messages (if you don't like to look at system console). The dialog also contains tab with XML representation of last battle frame, which might help with debugging your robot.

  • Robot dialog was enhanced by new tab page with dump of current robot properties. Hope you will love it, because you can add your own properties from your robot by calling setDebugProperty() method of your robot. See sample.PaintingRobot for example usage.

  • Robot dialog could hint which robot is trying to paint something, paint button becomes green.

  • Robot button was given life-bar + score-bar, so that you can easily see who is winning. You see small red bar on Corners sample button ? That's energy below 25 points. Blue bar is score.


Robot visible changes

  • New method setDebugProperty()

  • Classes of event arguments are more strict now. They are final, so you can't inherit from them, they also hide methods setPriority() and setTime() for security reasons.

  • Team messages are deserialized on receiver robot thread.

  • Robots which are wrong behaving are removed from repository and are not given other chance to run. This is for skipped turns, for unstoppable robots and for robots with class loading troubles.

  • During painting robots can paint only such things which are Java Serializable.

Bug fixes & Feature requests

  • [2214620] Robots are given unlimited time when recording, painting or debugging with -Ddebug=true

  • [2117285] we now upload version of client and game mode with results from roborumble

  • [2208374][2026098][1829282][1609494][1577588] are mostly described above

Implementation details

Communication from user robot to battle is 90% redesigned!

We use serializable messages instead of sharing and locking robot state and intentions.
We spend months to do it correct way. The presented solution was preceded by three unsuccessful trials. As reward we have cleaner architecture, less synchronization overhead, better security, better speed, code is much more readable I hope.
We have now potential to run robots in sandbox and let them communicate using IPC or over network in future versions.

The code is still in branch. We plan to merge it to trunk when we reach full release. We need YOUR feedback and testing support.

Sunday, 16 November 2008

Robocode - new maintenance release

This maintenance release contains 1 new feature, 4 bug fixes, and 1 change.


  • Loosing robots were not receiving onBattleEnded(BattleEndedEvent) events.
  • A new security issue fix for robots that were able to execute malicious code thru the Event Dispatch Thread (EDT).
  • [2210749] drawArc() does not work as expected: This bug has been fixed. In addition, both drawArc() and fillArc() are now using the Robocode coordinate and angle system.
  • [2157167] Blank console window when compiling. Some systems still had this issue, so a new fix has been applied.

New feature

  • The results and current rankings (during a battle) is now showing the score as percentage(s) in parenthesis right beside the score points like e.g. '7875 (12%)' for the total score in the results and '21 / 2900 (7 / 14%)' with the current rankings.
    • Thanks goes to Endre Palatinus, Eniko Nagy, Attila Csizofszki and Laszlo Vigh for this patch/contribution!


  • The option EXPERIMENTAL (true/false) allowing access to the robot interface peer is now working for the RobocodeEngine class also.

Download from here