Build the best - destroy the rest!

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.

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

Wednesday, 9 July 2008

Robocode 1.6.1 Beta 2

Lots of bugfixes and changes were made for the Robocode 1.6.1 Beta 2 compared to the first beta of the coming version 1.6.1. Some of the bugfixes were non-trivial, and hence we have made this new Beta 2 release.

Bugfixes



  • [2009283] Error in bullet damage calculation: The bullets scoring was incorrect compared to version 1.6.0.1. It was too high.

  • The Battle Results showed scores that was doubled (in the 1.6.1 Beta) compared to the real results.

  • Fixed issue with robot paintings, which mirrored the paintings.

  • Fixed issue with painting with the alpha channel (translucent color).

  • The mouse y coordinate of the mouse events was not scaled correctly.

  • When starting up a new battle, the battle would sometimes appear to be paused, even though the user did not pause the game.

  • [2009432] Leaking System.out: outputting to System.out from the constructor of a robot would go to the actual console instead of being properly redirected.



Changes



  • The new TPS slider was readjusted, so the are more slower speeds, and less higher speeds.

  • The menu item for the Ranking Panel is now hidden when replaying a battle, and the panel is now being hidden, if it is visible, while the battle is being replayed. The reason for hiding the Ranking Panel is that the replay feature does not support displaying the current rankings during the replay, i.e. the current scores are not recorded.



Download: here

Saturday, 28 June 2008

Robocode 1.6.1 Beta

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

Robot visible changes


  • We introduced new feature -DRANDOMSEED, which must be set to a specific random seed value. When this option is set, the random number generator used in Robocode becomes deterministic. So your robots will appear in exactly the same positions, when you rerun battles. This is very useful when testing and debugging your robot, because you will be able to repeat problematic situations again and again.

  • The new random number generator for the -DRANDOMSEED also overrides method e.g. Math.random(), so it will make robots based on this also deterministic. We are also looking for smart trick to replace instances of Random class used by robots in the future, but we didn't figured it out yet. Note that this random generator is only deterministic when the -DRANDOMSEED has been set. Otherwise we use same Java generator as before, making game pseudo-random.

  • We introduced new experimental feature -DPARALLEL (set to true or false). It allows robots run in parallel intended to take advantage of more CPU's available in the system. (Default is that for each turn robots are resumed sequentially). It may speedup battles with multiple CPU consuming robots. Time measuring is not per robot, so it cannot be used in contest, but might be nice for training. Please let us know if you like it or not.

  • We introduced new feature 1878233: onBattleEnded event. It is useful for learning robots, because event will always be sent at the end of each battle no matter if you won, lost or the battle was aborted. When the onBattleEnded event occur you could save your settings to disk. Also the battle results are dispatched to you.

  • Robot has new method getGraphics(). It allows you to draw your custom drawings to the battle view any time, not only during onPaint() event. Drawing will appear on end of turn.

  • Interactive events like onMouse*(), onKey*() and also onPaint() are now dispatched thru standard robot's event queue, so they will be called on robot's thread. So your robot will pay a bit of CPU time when using these.

  • Messages from robots to console are now dispatched on end of each turn.

  • AdvancedRobot and IAdvancedRobotPeer has got the new method getStatusEvents(), so a robot is now able to handle status events in the middle of an event handler.

  • Feature 1954853 : Name of robot's package was extended from 16 to 32 characters. The Robocode Repository is able to handle this (verified with Dan Lynn).


User interface changes


  • Robocode user interface was improved a bit. Also some dialogs are modal now.

  • The TPS slider has been redesigned to be more exponential, so it covers battle in slow speed (1-30 TPS), higher speed (30 - 120 TPS), and fast speed (120 - 1000 TPS). Move to zero will now pause the game.

  • New battle dialog and results dialog can be closed by pressing the Esc key.

  • The title on the Robocode window is now showing the current turn in a battle, and is updated every half second. In addition, the layout of the information shown in the title has been improved a bit.

  • The system log output has now been split, so that logged errors are sent to System.err and logged messages are sent to System.out. This makes it possible to filter out messages from errors when reading out the logs from Robocode. The system log now also includes a full stack trace when errors are logged, making it easier to determine where an error has occurred.

  • Battle view was redesigned and now it is redrawn at max 50 FPS, which saves CPU cycles, and thus allows the TPS (turns per second) to be even higher/faster.


Bug fixes


  • The field 'others' on the JuniorRobot was not updated properly when other robots dies.

  • Fixed issue with duplicate team name. The 'short name' in RobotPeer was same as 'name' for duplicate robots. Now, duplicate team named are dedupped.

  • The New Battle Dialog was resized after the robot selection.

  • After the intro battle, the Restart button was disabled.

  • InterruptedException are now being handled properly by interrupting the current thread, so it will keep its interrupted state after the InterruptedException has been caught.


Implementation details

What happened inside? Well, we were able to decouple UI and battle engine core. Till this version, the core of Robocode was tightly coupled to various components. For example, the battle thread was directly calling the BattleView to repaint each frame. We had the same issues with sounds, battle results dialog, window title and more.

On the other side, i.e. in UI, there were dependencies on the Battle class, which is the real core. The UI thread from the RobocodeFrame was calling it directly in order to stop or pause the battle. Also, the BattleView was making calls directly to the Battle to paint the battle field. Even worse, it was touching the RobotPeers (handles all logic of the individual robot) heavily causing a synchronization nightmare.

What we did? We cleaned up the mess. ;-) In the first step we introduced set of battle events, which are fired from the battle. These events are fired on the start and end of each battle, round and turn. They carry along a package of information, which is interesting for the specific type of battle event. For example, TurnEndedEvent contains all information about single turn, including current info about robots and score, and BattleCompletedEvent contains the final score, etc. The battle events are fired from the battle to a battle event dispatcher, which then dispatches these events to all registered battle listeners. Notice that the battle does not have to know know or deal with implementations of battle listeners, making the design cleaner. We implemented IBattleListener interface on all coupled UI components. And moved actions from core Battle to battle listener handlers. We also refactored components, so they now use data delivered by battle events, rather than calling the battle back to get this data.

Some of the battle listeners are just storing the event and processing it on the ATW/Swing thread. In case of the BattleView it helps us to speedup the battle, because painting is done asynchronously to the battle turns.

Next we also refactored various UI controls, so that they use the new IBattleManager interface to control the battle or robots, rather that calling these directly.

The implementation of most commands is sent to command queue on the battle and then processed on the battle thread, rather than directly on the ATW/Swing thread. This helps us to keep UI responsive while battle is being stopped and afterwards cleaned up. It also helps to gain synchronization purity.


Robocode 1.6.1

Both of the interfaces IBattleManager and IBattleListener are considered internal. They are not visible to robots (undoubtedly), but shouldn't be used by users of the RobocodeEngine as well. We plan to to make it more accessible as soon as these interfaces are stabilized.


JUnit tests

We have brand new JUnit test infrastructure based on -DRANDOMSEED feature and battle events. The current number of test is actually small, but we will continue to add more and more tests as we get along.
If you are interested to help us with creating unit tests, please drop us an email on robocode-devel group.
We will be able to provide you with test cases, which needs to be implemented. But we welcome your own test cases as well.



Update 3.7.2008: We are looking to hear your opinions about this release, bug reports, ideas for next releases. Please don't be shy and talk to us. Thanks!

For curious: I put together plan for next version 1.6.2. Comments welcome.

Tuesday, 3 June 2008

Robocode 1.6.0.1 fixes problem with debugging in Eclipse

Bugfixes:

- Fixed debug problem with Eclipse. It was not possible anymore to debug robots from Eclipse as TimeoutExceptions occurred when trying to resume from a breakpoint. Now, Robocode must be started by adding the option -Ddebug=true to the VM arguments when debugging Robocode from Eclipse (or any other IDE). The documentation (Wiki) about how to debug robots using Eclipse using the -Ddebug=true option will be updated.
- Fixed missing internal robot proxy layer introduced in Robocode 1.6.0.

Download: here Robocode 1.6.0.

Thursday, 1 May 2008

Robocode 1.6.0 (final) has been released

The final Robocode 1.6.0 has been released.

Download: here

Friday, 18 April 2008

Robocode 1.6.0 Beta 2 has been released

A new Beta 2 version of Robocode 1.6.0 has been released.

The reason for releasing this new Beta is that an additonal robot interface that needs to be tested before the final release of Robocode 1.6.0

The Beta 2 contains the additional robocode.robotinterface.IPaintRobot for robots that needs to receive paint events, meaning that it is now optional if a robot should deal with onPaint() notifications.

In addition, the Beta 2 release also contains the new sample.PaintingRobot for demonstrating the onPaint() method.

Download: here

Sunday, 6 April 2008

Discussion group for Robocode engine developers

Hi,

because lot of great ideas are flying in emails among us Robocode developers, contributors, developers of extensions and veteran Robocoders, I created new discussion group robocode-developers@googlegroups.com to improve spreading of information. Please, if you feel that you belong to some of groups above or belong there potentially, join us.
This group is NOT for support of Robocode users, if you need help with writing your robot, please use Robocode@yahoogroups.com

Whole discussion should have circa following rules:
1) Ideas are welcome.
2) We are looking for contributions not for demands. All of us work in our free time, so if you have an idea, but you do not will to work hard on it, it is just wish. Your idea could be used by some of us or not. We may ask you to fill such idea as a feature request. We welcome feature requests.
3) Discussion should be constructive. We are trying to improve our great toy for everyone. So we should give each other as much freedom to implement our own ideas as possible.
4) For sure, we will have different opinions. In case that we will be unable to find common ground or conclusion, Flemming will decide which direction to go.
5) Flame war or holy wars about operating systems, platforms, languages, etc. are silly, please go private to discuss them.

Thanks,
Pavel Å avara

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

Saturday, 16 February 2008

Robocode 1.5.4 - fixes the CPU calculation

Bugfix:

- The CPU constant was way too little compared to version 1.4.9. This is a critical bug when Robocode is used for competitions. Now the CPU calculation has been improved, where a heavy math benchmark has been adopted from Robert D. Maupin (AKA Chase-san).

- The method for determining if a robot has exceeded it's CPU time limit has been improved to use nano second precision, to get rid of an issue with millisecond granularity. This method was created by Julian Kent (AKA Skilgannon).

Download: here

Monday, 4 February 2008

Developers Guide for building Robocode has been updated

The Developers Guide for building the Robocode game has now been updated to reflect the change from using CVS to using SVN. In addition, more hints has been added to ease building Robocode from the Eclipse IDE.

You can read the Developer Guide here

Wednesday, 30 January 2008

Robocode 1.5.3 released

Bugfixes:

- Some of the mnemonics on the menus on the Help menu did not work correctly.

- NullPointerException occurred when clicking a robot button on the right side of the battle view, when no battle was running.

Changes:

- All functions key shortcuts have been replaced to comply with OSes where the function keys (F1 - F12) are not available or have a specific purpose, and thus should not be overridden.
-- The F5 shortcut key for refreshing the list of available robots in the New Battle, Robot Packager, Robot Extractor, and Team Creator window has been changed to 'modifier key' + R, i.e. Ctrl+R on Windows and Linux, and Command+R for Mac OS.
-- The F6 shortcut key for 'Compile' has been changed to 'modifier key' + B, i.e. Ctrl+B on Windows and Linux, and Command+B for Mac OS.
-- The F3 shortcut key for 'Find Next' has been changed to 'modifier key' + G, i.e. Ctrl+G on Windows and Linux, and Command+G for Mac OS.

- When a robot or team is being packaged an UUID is now put in the .properties and/or .team files in the newly generated robot or team archive file (.jar file).
-- The UUID is a unique identifier for the robot or team, which is generated every time a robot or team package is being created or overwritten.
-- This feature has been made in advantage to support coming features provided in Robocode Repository, which is currently being updated.

Download: here

Tuesday, 8 January 2008

Robocode 1.5.2 released

On some systems Robocode would not start up when tryng to run robocode.bat or robocode.sh. This version contains a bugfix for this issue.

Download here