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.



robocode1.6.2

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 1.6.1.4 - new maintenance release

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

Bugfixes



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



Changes



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


Download 1.6.1.4 from here

Friday, 24 October 2008

Robocode 1.6.1.3 - maintenance release

This maintenance release fixes 5 bugs and contains 2 minor changes.

Bugfixes:



  • [2157167] Blank console window when compiling. This bug was introduced in 1.6.1.2. When trying to compile a robot which gave a compiler error, the output console window for the compiler could be blank on Windows system, and even hang. Now the compiler error is output correctly as in previous versions.
  • [2070840] Roborumble "ITERATE" broken: When running RoboRumble with ITERATE=YES, DOWNLOAD=YES, and RUNONLY=SERVER, the ratings were only read once, not per iteration. This bugfix removes a very old bug and the need of using a batch file as workaround in order to do the loop with updated ratings.
  • [2121034] The -DROBOTPATH= option did not work: Now it works.
  • [2134416] Broken .sh files: An misplaced colon character was included in the teamrumble.sh file.
  • Fixed issue with first time access to a robot's data directory after startup, where the robot was not allowed to write to it's file.


Changes:



  • The list of available robots in the 'New Battle' dialog is now automatically refreshed before it is being shown, when a new robot has been compiled or a robot has been removed.
  • The 'Save' and 'Save As' in the File menu of the Robot Editor is now enabled and disabled depending if there is anything to save or not.


Download 1.6.1.3 from here

Friday, 12 September 2008

Robocode 1.6.1.2 - more bugfixes for 1.6.1

This maintenance release fixes some critical bugs for the rankings of RoboRumble@Home.

Bugfixes for RoboRumble:



  • Sometimes results were given to the wrong robots, which gives a problem with the robot rankings in the RoboRumble, TeamRumble and MeleeRumble. Thanks goes to Joachim Hofer AKA Qohnil for fixing this issue! :-)
  • Robots that read their data file got the following error message: 'Preventing unknown thread from access: (java.io.FilePermission...'.



Other bugfixes:



  • ArrayOutOfBoundsException could occur when accessing the Graphics2D object returned by the getGraphics() method on the Robot.
  • The draw(Shape) method on the Graphics2D object returned by the getGraphics() method could not draw lines.
  • The onMousePressed() event was called twice instead of only one time per mouse press.


Download 1.6.1.2 from here

Thursday, 28 August 2008

Robocode 1.6.1.1 - bugfixes for 1.6.1

Lot's of bugfixes have been made for Robocode 1.6.1 and therefore this maintenance release has been released with the current fixes.

Bugfixes



  • Issues with the scoring. Sometimes the robots were ranked incorrectly compared to their total scores given in the battle results.
  • When disabling the security (-DNOSECURITY=true) it would not be possible to run any battles as the following error would occur: 'RobocodeFileOutputStream.threadManager cannot be null!'
  • [2066996] -battle broken: When using a battle file, the battles were not displayed one the GUI.
  • [2064834] Robot problem after Options -> Clean robot cache: Robots that tried to access their data file, like e.g. sample.SittingDuck got a java.security.AccessControlException.
  • Sometimes the compiler window would hang when trying to compile, but only when the compiler gave compilation errors.
  • IllegalArgumentException occurred when calling setStroke() or setComposite() on the Graphics2D object returned by the new getGraphics() method on the Robot.


Change



  • The intro battle will only be shown if a battle file has not been specified using the -battle command-line argument and Robocode is being run for the first time since installation. Previously, the intro battle was always shown even though a battle file had been specified.


Download 1.6.1.1 from here

Sunday, 17 August 2008

Robocode 1.6.1 (final) has been released

The final version of Robocode 1.6.1 has finally been released after the beta versions that contained lots of changes and bugfixes.

Changes since Beta 3



  • The new options -DPARALLEL and -DRANDOMSEED introduced in Robocode 1.6.1 will have no effect when running RoboRumble, MeleeRumble, and TeamRumble.


Previous Beta versions


In order to get the full information about all changes and bugfixes since Robocode 1.6.0, please read the information provided for the 3 previous Beta versions:


Download 1.6.1 (final) from here

Tuesday, 12 August 2008

Robocode 1.6.1 Beta 3

More bugfixes were made to Robocode 1.6.1 (Beta 3) compared to the previous Beta 2.

Bugfixes



  • [2042289] Frequent errors stopping bots: This error was introduced in one of the 1.6.1 Beta versions, where some robots got this error message: "Waiting for robot XXX to stop. Robot XXX is not stopping. Forcing a stop.".
  • [2022774] Various usability issues: Preferences: If TPS was changed from the Preferences during a battle, the error "SYSTEM: pause game bug!" occurred.
  • [2024568] Sometimes the compiler window hangs: This bug occurred on some systems when compiling a robot - especially when a compiler error was returned by the compiler.
  • [2034395] Battles don't open again with selected robots: When opening and starting a battle from a .battle file with selected robots (in the .battle file) the New Battle dialog was showing the robots of the previous battle instead of the selected robots from the .battle file.


Changes


[2022774] Various usability issues:



  • Added "Enable all" and "Disable all" button in the View Options of the Preferences.
  • When the TPS slider is set to 0, the game is paused, and the Pause/Resume button set to paused mode. Now, if the Pause/Resume button is pressed, the game will resume at 1 TPS, and the TPS slider will now move to 1. Previously it will set to 0.
  • Improved some menus a bit with better names, and did some rearrangements of the order of the menu items here and there.
  • In the New Battle window, the focus is now kept in the list of available robots when one of the two 'Add' buttons has been pressed. Previously the focus was lost, and you had to reselect robots in the list of available robots in order to add more robots. It is now possible to add multiple robots using only the arrow keys with e.g. the Alt+A in order to add more robots to the battle.


Download: here