Build the best - destroy the rest!

Monday, 26 January 2009

Robocode 1.7 Beta 2

This version contains bugfixes for bugs found in the previous 1.7 Beta.

Bugfixes


  • Bugfix [2527112] Ubuntu throws NullPointerException in main when trying to startup Robocode.

  • Bugfix [2528467] Installation fail on windows if directory contain space(s).


Changes


  • Improved the version checking for new Robocode versions available for download.



Download 1.7 Beta from here

Tuesday, 20 January 2009

Robocode 1.7 Beta - modularization

This version represents a completely new infrastructure of Robocode making it easier to extend and maintain for the future, while staying 100% backward compatible. The goal of this release has been to introduce the new platform for Robocode and getting it tested carefully by the community before we add features to it for version 1.7.1 and newer.

By omitting new features, we hope that we'll be faster in locating and fixing any issues introduced with this version compared to the previous version 1.6.2. When such issues have been eliminated, we will concentrate on the new features, which includes support for more programming languages and also some of the pending feature requests reported on the SourceForge site for Robocode

Bugfixes


  • Bug [2497164] Spammy output on robot console windows.


Internal changes


  • Robocode was modularized using the dependency injection framework PicoContainer. This work includes introduction of many interfaces to existing components.

  • Introduced Maven2 as build setup where the whole directory layout is based on the standard Maven structure.

  • Rewritten the RobotClassLoader so it is able to load .jar file in the future.

  • Rewritten security layer to use AccessController and CodeSource for detection of trusted code.

  • Redesigned RobocodeProperties to SettingsManager and introduced ISettingsListener.

  • Implemented RbSerializer to be able to implement IPC (Inter-Process Communication) in future. This should make it possible to extend Robocode for more platforms like e.g. Microsoft .NET.

  • Redesigned RepositoryManager and nearby to hide implementation details.

  • Moved all implementation of Robocode to the package 'net.sf.robocode'. The old package 'robocode' is now used only for API to outer world in order to keep backwards compability.


Download 1.7 Beta from here

Monday, 5 January 2009

Robocode 1.6.2

This is the final release of Robocode 1.6.2, which contains 3 bugfixes compared to the recent Beta 4 version.

Bugfixes


  • Bug [2467536] Robot name was missing when replaying XML record.

  • Bug [2465580] Junior Robot turnAheadRight() bug. When a JuniorRobot was calling turnAheadRight(), turnAheadLeft(), turnBackRight(), or turnBackLeft() - the following exception occurred causing the robot to be terminated: java.lang.ClassCastException: robocode.peer.proxies.StandardRobotProxy

  • Bug [2449081] Exception when changing between Robot to AdvancedRobot. When a robot was changed from a Robot into an AdvancedRobot and recompiled, the game would cast a ClassCastException if a battle was started or restarted including that particular robot. However, this bug did not occur with new battles where the list of robots was refreshed (by pressing Ctrl+R).



Download 1.6.2 (final) from here

Tuesday, 23 December 2008

Robocode 1.6.2 Beta 4

With this release 5 more bugs have been fixed compared to the 1.6.2 Beta 3.

Bugfixes


  • Fixed the Open Battle dialog, where the robots were not being loaded, but which instead behaved the same way as the New Battle dialog.

  • Fixed NullPointerException with the new Record and Playback (Replay) feature, when trying to play a recorded battle.

  • Fixed serialization problems with scan arcs (Arc2D), when robot paintings with scan arcs are being recorded.

  • Fixed problem with reloading robot repository on each next battle dialog. Now the user must press Ctrl+R in order to refresh the robot repository as this is not done automatically anymore.

  • Fixed two ArrayIndexOutOfBoundsExceptions occurring when opening a new battle with fewer robots, when a battle with more robots are ongoing.



Download 1.6.2 Beta 4 from here

Thursday, 18 December 2008

Robocode 1.6.2 Beta 3 - more bugfixes

With this release 5 bugs have been fixed compared to the 1.6.2 Beta 2. In addition, new battle events and battle snapshots in the Control API have been published, i.e. in the robocode.control package, and we added missing javadocs (HTML documentation) to public Robocode API classes.

Changes


  • Published new battle events and battle snapshots in the Control API, i.e. in the robocode.control package.

  • Added missing javadocs (HTML documentation) to public Robocode API classes.



Bugfixes


  • The current scoring (not the total scoring) was calculated wrong from version 1.6.1. The current Ramming Kill Bonus was set to current bullet kill bonus, which gave wrong ranking in the Ranking Panel.

  • Bug [2410856]: wrong bullet power could be reported back from Bullet.getPower(), which could be > Rules.MAX_BULLET_POWER or < Rules.MIN_BULLET_POWER.

  • Bug [2405844]: gunHeat could be negative, which should never occur.

  • Bug [2412707]: Replay exception, where an ArrayIndexOutOfBoundsException occurred in some situations.

  • Fixed problem with RobocodeEngine.setVisible(true), where the RobocodeEngine would hang forever.



Download 1.6.2 Beta 3 from here

Sunday, 7 December 2008

Robocode 1.6.2 Beta 2

The Beta 2 release is mostly about cleanup of code and improved documentation. But there are some fixes and changes as well.

  • Removed _AdvancedRadiansRobot,_AdvancedRobot, and _Robot! Change renders some robots unusable, but I don't see why people inherited from that classes. We clearly indicated that they are internal and may be removed. Please discus, if you have good reason why you inherited from them in the past.

  • Improved compatibility with RobocodeJGAP

  • Development robot version names into repository

  • Fixed problem with Bullet identity

  • Fixed battle cleanup concurrency issue

  • Fixed problem with robots without package

  • Fixed AWT AppContext cleanup

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.