Build the best - destroy the rest!

Sunday 30 March 2008

Robocode 1.6 explained

To those of you that wants to learn more about what is really new in Robocode 1.6, and what is in the pipeline for Robocode, you should read Pavel Savaras' article "Robocode 1.6 explained".

Pavel Savara has joined in with the development of Robocode with the goal of creating a .Net version of Robocode. Actually, in the future it should be possible to run battles between Java and .Net robots simultaneously!

Please welcome Pavel as new developer to Robocode. He has really done a tremendous job with the new robot interfaces in Robocode 1.6, and also fixing all obstacles in Robocode to allow a .Net implementation on top of Robocode!

Did you try the Robocode 1.6 Beta? If not, don't hesitate with testing all your existing robots on this new version all supply us with feedback about issues while Robocode 1.6 is still in Beta (download).

Friday 28 March 2008

Robocode 1.6 Beta - Introduction of new robot interfaces

Bugfixes:

- The CPU constant was not calculated the first time Robocode was started up.
- Removed ^M characters from the buildJikes.sh file so that the Jikes compiler can be built under Unix, Linux and Mac OS X.

Major changes:

- A new package named robocode.robotinterfaces has been introduced, which contains pure Java robot interfaces for basic, advanced, interactive, junior and team robots. See the Javadocs (HTML) documentation for more details about these new interfaces.
- The main purpose robot interfaces is to make it possible for developers to create robots with other programming languages that requires interfaces instead of classes. However, the provided robot interfaces obeys the rules within Robocode. But it is possible to create new robot types with other methods names etc. from the robot interfaces, and it is also possible to create ordinary robots based directly on the robot interfaces.
- See the new 'sampleex' directory for some examples of how to use these new interfaces in Java.
- The introduction of the new robot interfaces required a great deal of changes and cleanup of the internal structures of Robocode, but for the better.
- A new command line option has been made for Robocode named EXPERIMENTAL, which must be set to true in order to allow the robots to access the internal robot peer with the robot interfaces for performing robot operations. If this flag is not set, you'll get a SecurityException in your robot if it is inherited from a robot interface. This option must be set in the robocode.bat/robocode.sh like -DEXPERIMENTAL=true
- Note that this experimental option might be removed in the future so that robots are always allowed to access the robot peer from the new robot interfaces.
- Most work with the robot interfaces were performed by Pavel Savara that has joined the development of Robocode, and which has done a tremendous job with the new robot interfaces.

Minor changes:
- Fixed a security issue, where robot was able to access the internals of the Robocode game thru the AWT Event Queue.
    - Robots that try to access the AWT Event Queue will be disabled
- Added a "Make all bullets white" option to the Rendering Options.
    - When this option is enabled, all bullets on the battle field will be painted in white. Use this options when you need to see all bullets on the battle field, i.e. when bullet colors are almost invisible.
- Lots of the Javadoc (HTML) documentation for the Robocode APIs were updated.

Download: here