Build the best - destroy the rest!

Tuesday 24 October 2023

Robocode 1.9.5.2

Version 1.9.5.2 (24-Oct-2023)

Bugfix:

  • Fixed Throwable: java.lang.LinkageError: loader constraint violation: when resolving method issue in the RobotClassLoader.
Download Robocode 1.9.5.2 from here

Sunday 30 July 2023

Robocode 1.9.5.1

Version 1.9.5.1 (30-Jul-2023)

Bugfix:

  • Fixed ClassCastException with URLClassLoader when accessing ClassLoader.getSystemClassLoader() on Java version newer than Java 8 and running with -DNOSECURITY=true.

Improvements

  • Updated all .bat, .sh, and .command files so the _JAVA_OPTIONS is now set automatically regardless of the Java version.
  • Updated dependencies.
Download Robocode 1.9.5.1 from here

Sunday 26 February 2023

Robocode 1.9.5.0

Version 1.9.5.0

Please note that you should be aware of which version of Java you are using for running Robocode. Otherwise, Robocode might not start. You can check this by running this command in a terminal: java -version. If you are running on a Java version older than version 12, you need to uncomment or remove this line in the robocode.bat or robocode.sh file:

_JAVA_OPTIONS="-Djava.security.manager=allow"

If you are running on Java 12 or newer, then the above line is required, and should not be removed!

Bugfix:

  • Bug-418: Excluded bots are removed from LiteRumble. Thanks to Xor for this fix! :)

Improvements

  • Updated all .bat, .sh, .command files with detailed information about various settings. Now you only need to comment out the line containing _JAVA_OPTIONS="-Djava.security.manager=allow" if you run on Robocode on a Java version older than version 12, and you can disable Direct3D on Windows, and also set the rasterizer used in Direct3D. Have a look at robocode.bat and robocode.sh if you want to see the details.
  • Robocode does not touch any sun.java2d programmatically anymore as these give different results on different hardware (obviously). So the user needs to set these explicitly as options when starting up Robocode. Go to this page if you want to experiment with
    these settings.
Download Robocode 1.9.5.0 from here

Saturday 28 January 2023

Robocode 1.9.4.9

Version 1.9.4.9 (28-Jan-2023) Fixed "no security" and HiDPI

Bugfixes

  • NOSECURITY=true could cause a ClassNotFoundException for the robots.
  • Rendering issue on Windows when setting sun.java2d.ddoffscreen=false. Hence, this setting has been removed.
  • If the NOSECURITY or EXPERIMENTAL property has been set to true, a warning is now printed out to standard out.
  • Re-fix Bug-394 by actually supporting HiDPI. Thanks to Xor for this fix! :)
Download Robocode 1.9.4.9 from here

Tuesday 29 November 2022

Robocode 1.9.4.8

Version 1.9.4.8 (29-Nov-2022) Reworked Disabling Security Manager

Bugfixes

  • Rendering issues on Windows using accelerated hardware, by setting this Java properties:
    • sun.java2d.d3d=false (turn off use of Direct3D)
    • sun.java2d.ddoffscreen=false (turn of Direct Draw off-screen)
    • sun.java2d.noddraw=true (no use of Direct Draw)
    • sun.java2d.opengl=True
  • Adding -source 1.5 to the ECJ compiler options to prevent "...only available if source level is 1.5 or greater" error when compiling with ECJ.

Improvements

  • Security Manager: When setting the NOSECURITY=true (e.g. via the -DNOSECURITY=true property in the java command-line), then internal security manager of Robocode is now totally disabled, and falling back on the default security manager used in Java.
    • This fixes issues with the class loader not being able to find classes resulting in ClassNotFoundExceptions, and other issues as well.
  • Updated built-in Eclipse Compiler for Java (ECJ) to version 3.26 (June 2021), which is the last version of ECJ capable to run on Java 8 (newer ECJ versions requires Java 11 as minimum).
Download Robocode 1.9.4.8 from here

Saturday 6 August 2022

Robocode 1.9.4.7

Version 1.9.4.7 (05-Aug-2022) System.getenv support

Changes

  • #35 System.getenv is now allowed and can now be called without throwing a security exception. Hence, the robot will not be banned from battles when using System.getenv.
Download Robocode 1.9.4.7 from here

Wednesday 15 June 2022

Robocode 1.9.4.6

Version 1.9.4.6 (15-Jun-2022) The Java 18 support release

Newer versions of Java is making things harder for the codebase of Robocode.

With Java 18 (JEP 411), the Security Manager is disabled by default, but can be allowed by the user from the command line. Hence, with this version of Robocode, the -Djava.security.manager=allow system property has been added to the script for making it possible to run Robocode on Java 18. Note that this is just a work-around, as the Security Manager will be permanently removed from Java at some point in the future when newer major versions of Java are released.

This is a big concern for Robocode, which uses the Security Manager to control access to various resources between robots running on the same JVM. And currently, no good substitute exists for replacing the Security Manager (or find a good way to remove it) from Robocode without breaking things.

Bugfix

  • Java 18 fix: Robocode could not run on the newest Java 18 due to the terminally deprecated Security Manager.
    • The Security Manager is now explicitly being allowed to run with the .bat, .sh, and .command files by adding setting this system property: -Djava.security.manager=allow.
  • Give bots without rank highest priority in the LiteRumble (RoboRumble). Thank you Xor for this fix! :)
Download Robocode 1.9.4.6 from here