-
Notifications
You must be signed in to change notification settings - Fork 279
/
versions.md
4160 lines (3305 loc) · 222 KB
/
versions.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
## 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.
## Version 1.9.5.0 (26-Feb-2023) Updated script files
### 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](https://docs.oracle.com/javase/7/docs/technotes/guides/2d/flags.html) if you want to experiment with
these settings.
## 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! :)
## Version 1.9.4.8 (29-Nov-2022) Reworked Disabling Security Manager
### Bugfixes
* Rendering issues on Windows using accelerated hardware, by setting these 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 the 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 require Java 11 as a minimum).
## 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`.
## Version 1.9.4.6 (15-Jun-2022) The Java 18 support release
### 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! :)
## Version 1.9.4.5 (22-Mar-2022)
### Bugfix
* Fixed _java.io.IOException: Stream Closed_ when auto-recording is enabled.
* A mystic word `on` was written to the console.
## Version 1.9.4.4 (29-Dec-2021)
### Changes
* Chocolatey installer dependency on openjdk so that it could pass package validation.
## Version 1.9.4.3 (05-Sep-2021)
### Changes
* Chocolatey installer is now provided for Windows.
* https://community.chocolatey.org/packages/robocode
* Install by `choco install robocode`
* Roborumble could now override RUMBLE_USER, RUMBLE_PARTICIPANTSURL, RUMBLE_UPDATEBOTSURL, RUMBLE_RESULTSURL,
RUMBLE_RATINGSURL via environment variables. Fixed to not clash with system USER env variable.
* Updated ReadMe file.
* Updated link to Java API documentation.
### Bugfix
* [Bug-415]: Loading pre-loaded data 1.9.4.2
* Fixed robot naming to be compatible with existing robots
* Thanks go to Alex Schultz (Rednaxela) for fixing this issue. :)
* Installer (dos2unix): more reliable way to move files
* Thank you dshatov (GitHub) for this fix. :)
* The classpath in the compiler setting does not include the path to rt.jar anymore, which caused compiler errors.
## Version 1.9.4.2 (10-May-2021)
### Changes
* A robot index has been added to all robot in the format `name + (index)`. This is change was made to fix various
issues in e.g. team bots and make the internal logic simpler.
* Improved the API documentation for the TeamRobot and Droid team robots.
### Bugfix
* Fixed getTeammates() that returned the wrong names and isTeammate() that returned false for teammates.
## Version 1.9.4.1 (09-Apr-2021)
### Bugfix
* [Bug-414] Fixed bug in ramming: when robots collide, they should and do change position. But the bullets were still
hitting original place in the next turn, as if the robot was not moved by collision.
### Changes
* Robot painting to screen per default could be enabled by `-DPAINTING=true`
* Made installer compatible with headless systems. Made default classPath lib/* for startup scripts.
* Improve testability:
* Moved robocode.control.RobotTestBed.
* RoundStartedEvent.getRobotObjects() is available on Control API. Useful for white-box testing of robot state.
* Exceptions in the robot are now propagated to unit test. See test.robots.TestThrowing.
* Exceptions in the robot are now propagated to BattleErrorEvent of control API when `-DTESTING=true`
* Improved Robot and Bullet toString() so that it displays approximate cardinal direction, like N,NE,E,SE,S,SW,W,NW
* Added Utils.assertNotNull(), Utils.assertEquals(), Utils.assertTrue(), Utils.assertNear() for testing comfort.
* Bullet IDs are now more unique.
* Unit test is aborted on robot exception.
* Control API could now take screenshots.
* Unit test could enable taking screenshots when exception or asset occurs. See RobotTestBed.isEnableScreenshots()
* Robots could be statistically tested against multiple opponents. For example see
net.sf.robocode.test.robots.TestScore
* Roborumble could now override ~~USER, PARTICIPANTSURL, UPDATEBOTSURL, RESULTSURL, RATINGSURL~~ via environment
variables.
* Published Roborumble client as docker image to https://hub.docker.com/r/zamboch/roborumble with the above environment
variables available.
## Version 1.9.4.0 (15-Feb-2021)
### Changes
* Migrated from Maven to Gradle.
* Migrated from Eclipse to Idea.
* Published to Maven Central.
## Version 1.9.3.9 (20-Apr-2020)
### Changes
* Updated RoboRumble links to use HTTPS instead of HTTP
* Thank you Skilgannon for this fix, and especially to get the RoboWiki up and running again! :-)
* Updated all links to RoboWiki to use HTTPS.
## Version 1.9.3.8 (29-Mar-2020)
### Bugfixes
* [Bug-410]: Remove obsolete warnings regarding colors and turns.
* Thanks goes to Lufte for fixing this.
* [Bug-412]: Bug fix 388 breaks score display in robot buttons.
* Prevent robot console from trimming log.
* Thank you Xor for the last two fixes. :-)
## Version 1.9.3.7 (31-Aug-2019)
### Bugfixes
* [Bug-407]: RobocodeEngine: Can't find robocode.core-1.x.jar
* [Bug-409]: Robot repository is completely rebuilt whenever dev dir is changed via UI.
* Thanks goes to Xor for this fix. :-)
## Version 1.9.3.6 (08-May-2019)
### Bugfixes
* [Bug-404]: Confusion between development/non-development versions of bots
* Rollback of previous attempt to fix issues with the RobocodeEngine, which could not read robots in "developer
mode" (marked with an asterix character). Hence, the old bug [Bug-398] has been reintroduced.
* [Bug-406]: DNS interaction is not blocked by Robocode's security manager
* Fixed issue where compiled robots could not be found. Added -encoding UTF-8 to the compiler options, and corrected
-version option into -verbose.
* [Bug-408]: Parameter `-DNOSECURITY` (no security manager) cause RoboCode program startup access-error.
### Changes
* Fix by Xor, which makes Robocode faster at detecting robots in the robot folder, which is crucial for the RoboRumble,
when installing or updating a huge amount of robots.
## Version 1.9.3.5 (02-Mar-2019)
### Bugfixes
* [Bug-402]: roborumble.sh etc. has incorrect class path
* This was causing codesize utility not being able to work with roborumble. And unfortunately, this error was
silenced so the user wouldn't notice that at all.
* [Bug-403]: MouseEvent returning wrong position''
* [Bug-405]: Fix #405 unnecessary FileNotFound exception
* Rumble: skip bots that fails to download when calc code size
* Credits to Xor for all these fixes. :-)
### Changes
* Added support for Kotlin. Just put the kotlin-stdlib-1.xxx.jar into the /libs folder to allow robots coded in Kotlin.
## Version 1.9.3.4 (05-Jan-2019)
### Bugfixes
* [Bug-401]: RoboRumble client: Biased Melee prioritized pairings
* All credits go to Xor for this fix. :-)
* An error was thrown every time Robocode checked for a new version. The reason being that the Robocode web page has
been moved.
* Undo/Redo with the Robocode Editor got broken with Java 9+.
### Changes
* Upgraded the Codesize tool to version 1.2, which support newer versions of Java (9 experimental) and Java 8 lambdas.
* The Robocode site is now using HTTPS instead of HTTP, and have been moved permanently
to https://robocode.sourceforge.io (".io" instead of ".net")
* Changed the Maven build files to use the Maven Wrapper (mvnw).
## Version 1.9.3.3 (10-Sep-2018)
### Bug fixes
* Fixed issue with the RobocodeEngine, which could not read robots in "developer mode" (marked with a asterix '*'
character)
* [Bug-395]: Roborumble client duplicates battle results on network error.
* [Bug-397]: Robocode UI cannot remember battle settings upon restart.
* [Bug-399]: RANDOMSEED option does not support Java 8.
* Thanks goes to Xor for all 3 fixes above. :-)
* [Bug-400]: Problem to compile Robot.
* The compiler options have been cut down to include only the -verbose option per default.
## Version 1.9.3.2 (04-Apr-2018) The Java 10 support release
### Bug fixes
* Fixed problems with shell and macOS commands files, which contained ^M (Microsoft windows) characters.
* Fixed issue with sample.SittingDuck, which got a security violation due to new security restrictions introduced with
Java 10.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to newest version 3.14.0.v20180305-0940.
* The older version caused problems with compiling robots on Java 9 or newer.
## Version 1.9.3.1 (17-Mar-2018)
### Bug fixes
* [Bug-393]: More frequent roborumble server checks.
* The check for new robots was changed from 2 hours to 10 minutes.
* Thanks goes to Julian Kent (aka Skilgannon) for this fix.
* [Bug-394]: HiDPI scaling causes visual glitches.
* Fixed issues with creating and packaging robot teams.
## Version 1.9.3.0 (17-Oct-2017) The Java 9 support release
### Bug fixes
* [Bug-386]: Can't run Robocode 1.9.2.6 on macOS.
* Java 9 issue, which was fixed by bug fix for Bug-391. Thanks goes to MultiplyByZer0
* [Bug-387]: Not printing in console when a bot is force stopped.
* Thanks goes to MultiplyByZer0 and Julian Kent (aka Skilgannon) for the fix. :-)
* [Bug-388]: UI exception in team battles.
* [Bug-389]: Third-party team JARs broken with Java 9
* [Bug-390]: Bad CPU constant calculation on Java 9.
* [Bug-391]: Fix for "Illegal reflective access".
* [Bug-392]: Bullets of the same bot collide at low bullet powers and high gun-cooling rate.
## Version 1.9.2.6 (01-Jan-2017)
### Bug fixes
* [Bug-381]: Improve feedback after entering empty package name during robot creation.
* [Bug-382]: Unable to run robocode.bat -- AccessControlException.
* [Bug-383]: Java 8 lambda expressions cause ClassNotFoundException.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to version 4.6.1
## Version 1.9.2.5 (30-Dec-2015)
### Bug fixes
* [Bug-378]: robocode.robocodeGL.system.GLRenderer ClassNotFoundException.
* [Bug-380]: Yet another historical bot related bug.
* Robot Editor: Source files were set to modified (starred) as soon as they were loaded. The modification state
remained, even when no changes were made to the source file or when undoing all changes. Therefore the editor would
always bring up a dialog with a warning, that the source file needed to be saved before closing the editor.
### Change
* [Req-160]: Fixed width font in console. Some systems did not used monospaced font in console windows.
## Version 1.9.2.4 (20-Nov-2014)
### Bug fixes
* [Req-159]: Fix overkilled garbage collection on static fields.
* Robocode garbage collected practically any static field on a robot to prevent memory leaks (see [Bug-244]).
* [Bug-375]: Wrong width and height returned for .NET robots.
* The .NET API return 40 instead of 36 with the Width and Height properties.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to version 4.4.
* Upgraded jni4net to version 0.8.7.0.
### Other
* Got rid of various issues (e.g. license headers) with the source files of Robocode in order to create a Debian
distribution of Robocode.
* Thanks goes to Markus Koschany for all the help and support to make this possible.
## Version 1.9.2.3 (15-Sep-2014)
* [Bug-374]: Wrong size report for minirumble in v1.9.2.2.
## Version 1.9.2.2 (03-Sep-2014)
* [Bug-373]: Wrong robot size calculation in version 1.9.0 - 1.9.2.
## Version 1.9.2.1 (21-May-2014)
### Bug fixes
* [Bug-371]: High cpu usage on editor.
* [Bug-372]: Cannot load battle file when `-DNOSECURITY=true` is enabled - `java.lang.IllegalAccessError`.
## Version 1.9.2.0 (23-Apr-2014)
### New feature
* Initial positions and headings added to the Control API.
* A new constructor has been added to the `BattleSpecification` for the `RobocodeEngine` so that it is possible to
set the initial position and heading of each participant robot. This new constructor takes an additional parameter
named `initialSetups` that is an array of `RobotSetup` instances.
* The `RobotSetup` is a new class introduced with this version that contains the initial position and heading for an
individual robot.
### Bug fixes
* [Bug-370]: Robot Packager cannot find robot .properties file in development path.
* Fixed issue with the Robot Editor, where the caret position was not updated fast enough when typing very fast.
## Version 1.9.1.0 (22-Mar-2014)
### Bug fixes
* [Bug-366]: Receiving enemy's real name on HitByBulletEvent.
* The previous fix was not correct for the owner and victim for the HitByBulletEvent and HitBulletEvent.
* [Bug-368]: Issues with sentries
* All listed issues have been fixed.
* A bullet from a sentry robot will not be able to hit another bullet within the "safe zone" any more, but will
still be able to hit another bullet within the sentry border area.
* When sentry robots are present on the battlefield, the initial random positions will be located within the safe
zone. This avoids robots from being punished by sentry robots from the start of the battle, as the robot did not
enter the sentry border by itself.
* [Bug-369]: RoboRumble: NoClassDefFoundError for CodeSizeCalculator.
* The missing property `robocode.battle.sentryBorderSize` has now been added to the .battle file format.
* Fixed the twinduel.sh file which was using a invalid file name for the configuration file.
* Added desktop files for FreeBSD.
### New features
* Due to one of the ideas in [Bug-368], a new method `getNumSentries()` for Java and a `NumSentries` read-only
property for .NET was added to the `Robot` and `RobotStatus` classes, and to the `IBasicRobotPeer` interface as well.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to version 4.3.1.
## Version 1.9.0.0 (16-Feb-2014) The Border Sentry Robot Release
### Bug fixes
* [Bug-364]: Robot Packager does not include the robot data dir in the .jar file.
* The Robot packager has now been extended with an option to include data files too when packaging a robot.
* [Bug-366]: Receiving enemy's real name on HitByBulletEvent.
* Fixed various issues with the Robot Editor, e.g. letters written in the wrong error when typing text fast.
* Fixed issue when loading a robot jar file with no package (default package), which was found by Daniel Yeung, who also
had a fix for it. :-)
### New features
* *BorderSentry interface*: Added a new robot type (the BorderSentry) that allows you to implement border sentry robots,
which are robots that guards the walls of the battlefield against "wall-crawlers" and "corner" robots.
* The Border Sentry robot is dedicated to Liam Noonan from Limerick Institute of Technology and the Robocode Ireland
event in general. :-)
* The inspiration for this type of robot comes from the TV series
named [Robot Wars](http://www.ukgameshows.com/ukgs/Robot_Wars).
* Note that border sentry robots...
* have 400 additional energy points meaning that a border sentry robot starts with 500 energy points!
* only appear at the borders of the battlefield, when a new round is started defined by the "border sentry
size", which is a game rules that can be adjusted similar to other game rules. The default border sentry size
is 100 units.
* can only make damage to other robot types within the *sentry border*, but not to robots in the "safe zone",
which is the area inside the sentry border.
* can receive damage from other robots. But robots will not gain energy points from the border sentry robots (
due to Mathew Nelson's excellent point regarding using sentry robots as "Energy Batteries" ;-) ).
* does not receive scores in the Ranking Panel nor Battle Results, even though you can see its score, like
ramming damage, bullet damage etc. The goal for the border sentry robot is to be a referee, but not a player
that can win or loose the battle.
* A new method names `getSentryBorderSize()` has been added to the Robot classes that returns the size / attack
range from the edge of the borders, where BorderSentry robots are able to hit other robot types.
* A new method named `isSentryRobot()` has been added to the `ScannedRobotEvent` event class.
* When there is only one regular robot left on the battlefield with one or more border sentry robots, the round is
automatically ended.
* A new sample robot has been added named `samplesentry.BorderGuard`. Try it out against your robot(s) or
e.g. `sample.Corners` and `sample.Walls`.
* An additional option has been added to the View Options in the Preferences to enable and disable the visual
appearance of the sentry border, which is painted in transparent red (danger zone).
* [Req-156]: Codesize added to properties file.
* The Robot Packager now adds a new property named `robot.codesize` which will be set to the value calculated by the
built-in Codesize tool when compiling the robot and/or team. The Codesize value is the effective code size
measured in bytes which is used by e.g. the RoboRumble to categorize robots into MicroBot, MiniBot and MegaBot
etc.
* Improved the names of the menu items on the Robot menu.
## Version 1.8.3.0 (04-Oct-2013) The Editor Theme Release
### Bug fixes
* [Bug-363]: No Last Survivor Bonus being given.
* The `getWidth()` and `getHeight()` methods on the Robot class have always returned 40, even though a robot is 36x36
pixels in size.
* Hence, `getWidth()` and `getHeight()` have been changed to return the correct width and height, which is 36.
* Fixed Robot Editor issues:
* `NullPointerException` occurring with a new source file that was not saved before being compiled.
* Issue where the caret position was set to the end of a source file when reading it into the editor.
### Changes
* [Req-121]: Issues with editor font.
* A new Editor Theme Configurator has been added the allows changing the font, text colors and styles for the
Robocode Editor.
* Two built-in themes have been provided for Robocode:
* Robocode White Theme
* Robocode Black Theme
* When selecting a theme, Robocode will automatically use this theme the next time Robocode is started.
* When changing a theme, a new custom theme can be created and saved. Note that it is possible to overwrite existing
themes.
* Editor themes are stored within the /theme/editor directory as theme property files, which makes it possible to
modify these in a normal text editor, but also share the themes.
* The Editor Theme Configurator is available from the Robot Editor menu under View -> Change Editor Theme.
* The line numbers area in the Robocode Editor has been improved as well:
* The background and text colors for the line numbers can be changed.
* Line numbers are now right aligned + extra space has been added to the right.
* The Find & Replace dialog has got a better layout.
## Version 1.8.2.0 (22-Jun-2013)
### Bug fixes
* [Bug-357]: Tab characters are inserted in the last line of a robot source file when opening it.
* This bug was only partially fixed with version 1.8.1.0.
* [Bug-358]: Robot in default package cannot write to files. Should at least get a warning.
* [Bug-361]: Problem in the text editor related with the .java file modification.
* [Bug-362]: Rumble client does not remove participants in wrong codesize group.
* Thanks goes to Julian Kent ("Skilgannon") for providing a solution for this. :-)
### Changes
* Improved the UI regarding Battle Rules:
* All Battle Rules have been assembled into one single Rules tab.
* Number of Round has been moved from the New Battle dialog to the Rules tab.
* Improved the visualization of the battlefield size.
* Added input validation to text fields.
* [Req-64]: Change default battle settings like e.g. "Number of Rounds".
* When the battle rules are changed in the user interface, Robocode will remember these as the user's default
settings.
* A new Restore Defaults button has been added to get the game default settings back.
* Source code editor is now always maximized when opening and robot file or creating a new one.
## Version 1.8.1.0 (24-Mar-2013)
### Bug fixes
* [Bug-335]/[Bug-336]: Skipped turns ... issues.
* [Bug-349]: Instances of RobocodeEngine don't seem to be independent - memory leak and performance decrease.
* [Bug-350]: Bullet id from battle record XML file is sometimes -1 causing a NumberFormatException.
* [Bug-351]: Robot.onBattleEnded(BattleEndedEvent) provides wrong scores.
* [Bug-352]: Results from BattleCompletedEvent.getIndexedResults() are always sorted.
* [Bug-353]: RobocodeEngine.setVisible() can cause a NullPointerException.
* [Bug-354]: Replaying an XML record can cause an ArrayIndexOutOfBoundsException.
* [Bug-355]: Priority battles not accepted for mini/micro/nano rumbles.
* [Bug-356]: Update Roborumble URLs from Darkcanuck to LiteRumble.
* [Bug-357]: Tab characters are inserted in the last line of a robot source file when opening it.
## Version 1.8.0.0 (30-Jan-2013)
### Bug fix
* [Bug-346]: Cannot extract sources from robot packages.
* [Bug-348]: .NET: UnauthorizedAccessException in AppDomainShell.Dispose().
### Changes
* Robocode has been updated to Java 6, and hence this will be the new minimum requirement for running Robocode from this
version.
* The icon for Robocode was upgraded to a 256x256 pixel resolution.
* Added the new properties `-DlogMessagesEnabled=true|false` and `-DlogErrorsEnabled=true|false` for enabling and
disabling log messages and log errors.
* The robocode.control.RobocodeEngine has got two similar methods: `setLogMessagesEnabled(boolean)`
and `setLogErrorsEnabled(boolean)`
## Version 1.7.4.4 (21-Nov-2012)
### Bug fix
* [Bug-347]: /bin/sh^M bad interpreter.
* All .sh and .command files contained the Windows ^M characters so these files could not be executed.
## Version 1.7.4.3 (17-Nov-2012)
### Bug Fixes
* [Bug-344]: BattleAdaptor missing in `robocode.control.events`.
* [Bug-345]: Graphics still being rendered when minimized.
* [Bug-333]: .NET runs release dll not debug dll so can't debug.
* Implemented a work-around so that the local robot repository is rebuild when removing a development path.
### Changes
* Robocode sources are now put on [GitHub](https://github.com/robo-code/robocode).
* Upgraded the .NET plug-in to use Visual Studio Express 2010.
* The versions.txt has been changed to versions.md:
* The versions.txt was converted into [Markdown] syntax in order to make it easier to convert into e.g. HTML, and
because GitHub will automatically translate it into HTML when viewing this file in a browser.
* Thus, this file has been renamed from 'versions.txt' into 'versions.md'.
* The web page with the new versions.md can be
viewed [here](https://github.com/robo-code/robocode/blob/master/versions.md).
* In addition, links to all reported bugs and feature requests have been inserted into versions.md so it is easy to
browse to the reports and requests to find more details.
## Version 1.7.4.2 (16-Aug-2012)
### Bug Fixes
* [Bug-338]: "Accept-Encoding: gzip" not in Roborumble HTTP Headers.
* [Bug-339]: All Text Missing.
* Reverting fix for [Bug-332] ("Use OpenGL backend under linux"), which caused too much trouble.
* [Bug-340]: Robocode crash on window resize (linux-opengl).
* Reverting fix for [Bug-332] ("Use OpenGL backend under linux"), which caused too much trouble.
* [Bug-341]: InteractiveRobots gets error "After the event was added...".
* [Bug-342]: New bots not given priority.
### Changes
* The built-in [RoboRumble] client is now able to decompress "gzip" and "deflate" content with HTTP connections with
RoboRumble servers that supports it.
## Version 1.7.4.1 (02-Jul-2012)
### Bug Fixes
* [Bug-337]: Hangups with New Editor in 1.7.4.0.
* Notice, that the editor can still be quite slow with large source files. Work is still in progress to speed it up.
* Several other minor bug fixes with the new editor, like e.g. undoing and redoing tab indentation.
## Version 1.7.4.0 (07-Jun-2012)
### Bug Fixes
* [Bug-332]: Use OpenGL backend under linux.
* The `-Dsun.java2d.opengl=True` property has been set up per default in the "robocode.sh" file in order to enable
OpenGL hardware acceleration per default for Linux and Solaris.
* [Bug-334]: Snapshot API never shows bullets in "HIT_WALL" status.
* [Bug-328]: Issue with the robocode.dll + \# chars in the path for a dll.
* This applies to the .NET plug-in.
### New Features
* [Req-147]: The snapshot API is ambiguous for bullets shot by teams.
* Two new methods have been added:
* [IRobotSnapshot.getRobotIndex()] that returns a unique id between all robots participating in a battle.
* [IRobotSnapshot.getTeamIndex()] that returns a unique id between all participating robots or -1 if a robot
is not a member of a team.
* The existing [IRobotSnapshot.getContestantIndex()] will return the team id if it is not -1, otherwise the robot
id is returned.
### Changes
* The Robocode Editor (source code editor) has been completely replaced by a new and improved editor. Expect some bugs!
## Version 1.7.3.6 (29-Apr-2012)
### Bug Fixes
* [Bug-331]: RoboRumble client has infinite timeout.
* Default *connection timeout*, *read timeout* and *session timeout* have been set to 10 seconds.
### New Features
* A new config file has been added for [RoboRumble] in the roborumble directory in the robocode directory named "
roborumble.properties".
* With this config file it is possible to configure the *connection timeout*, *read timeout* and *session timeout*
used when downloading robots and uploading results.
* [Req-144]: Mac ... start with icon and name.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to version 3.7.2.
## Version 1.7.3.5 (11-Mar-2012)
### Bug Fixes
* [Bug-326]: Package of team fails to load in team battles.
* Fixed minor issue where the Robot Packager tells that a NanoBot can be 250 bytes and a MiniBot 750 bytes, when these
must be lesser than 250 and 750 bytes.
## Version 1.7.3.4 (04-Dec-2011)
### Bug Fixes
* [Bug-323]: Robocode can't find the ECJ (Eclipse Compiler for Java)
* [Bug-319]: Package name allows bad chars.
* This issue was not fixed entirely. Corrected text regarding use of lower-case letters in package name.
* Bug: Changes to the rendering options did not take effect immediately for the battle view.
### New Features
* [Req-134]: Calculate codesize after compile in editor.
### Changes
* Upgraded Eclipse Compiler for Java (ECJ) to version 3.7.1.
## Version 1.7.3.3 (05-Nov-2011)
### Bug Fixes
* [Bug-311]: `out.write(int)` uses up allocated printing quickly.
* [Bug-315]: Unable to change drawing color in .NET (C\#).
* [Bug-318]: Installer throws `NumberFormatException` on Linux 3.0.
* [Bug-319]: Package name allows bad chars.
* [Bug-320]: "About" window colors are awful.
### Changes
* The layout of the About Box has been completely redesigned.
* If running on Java 1.6 or newer, OS/system based font antialiasing will be enabled.
* Upgraded to Maven 2.2.1 used for building Robocode.
* Cleaned up the build, improved the speed, and got rid of issue with building and testing every twice.
* Upgraded Eclipse Compiler for Java (ECJ) to version 3.7.
* Upgraded jni4net (Java <-> .NET bridge) to version 0.8.6.0.
## Version 1.7.3.2 (23-Aug-2011)
### Bug Fixes
* [Bug-313]: Robocode .NET does not work on Java 7.
* [Bug-312]: Enabling Paint Freezes Robocode.
* Fixed problem with XML serialization of just killed robot.
* Fixed bug in temporary record cleanup.
### New Features
* Implemented deserialization of XML with short tags.
* The command line argument `-replay` now supports zipped XML.
### Changes
* Various optimizations to let [RoboRumble] start up and run faster.
* E.g. sound module and image loading is disabled when running the rumble.
* Imroved XML deserialization.
* [Patch-1]: Improved priority battle handling.
* Patch by Jerome Lavigne ("Darkcanuck") - Improved priority battle handling in [RoboRumble].
* This change will help improve the efficiency of the [RoboRumble] system and allow battles to be distributed more
evenly + fix some inconsistent console output.
* Improves [RoboRumble] client-side processing of priority battles received from the rumble server. Specifically:
1. Priority battles will be discarded for bots that the client knows are no longer in the participants list (the
client is aware of bot removals before the server is).
2. Duplicate priority battles received from the server will be discarded (the server does not maintain state of
which battles are sent to specific clients, so duplicates can be common).
* Upgraded to jni4net 0.8.5.1 (fixes [Bug-313] above).
## Version 1.7.3.1 (28-Jul-2011)
### Bug Fixes
* [Bug-302]: Hide enemy name implementation bug.
* [Bug-303]: `bullet.equals` semantic has been change in 1.7.3.0 version.
* [Bug-304]: `setColor(null)` causes NPE.
* [Bug-305]: TeamRumble priority battles bug.
* [Bug-306]: Rumble sh scripts for launching do not handle spaces in path.
* [Bug-307]: Console output cannot handle non-ascii names.
* [Bug-308]: `ConcurrentModificationException` in `URLJarCollector`.
* [Bug-309]: robot in development generates * into filename.
* [Bug-310]: Interface Robot skips turns at end of round.
* Bug: `BulletHitEvent.getBullet().getVictim()` always returned null.
### New Features
* [Req-135]: Twin Duel configuration files.
* Twin Duel configuration files for the [RoboRumble] client are now included.
### Changes
* The Robot Editor is now saving and loading source files in UTF-8 (Unicode).
* Upgraded to use jni4net v0.8.4.
## Version 1.7.3.0 (20-May-2011)
### Bug Fixes
* [Bug-301]: `getTurnRateRadians` incorrect for negative velocity.
* Fixed issues with unit-testing and building Robocode on Linux.
## Version 1.7.3.0 Beta (26-Mar-2011)
### Bug Fixes
* [Bug-222]: Some sounds not working.
* The gunshot sound was not working.
* [Bug-297]: x,y coords between `BulletHitEvent` & `HitByBulletEvent` differ.
* [Bug-299]: Custom events no longer firing after clearing event queue.
* Fixed typo in the documentation with valid range of values for the battlefield width and height.
* Thanks goes to Tamás Balog for pointing this out.
### New Features
* Added "Enable auto recording" option to the Common Options, which automatically generates a zipped XML record for
every battle.
* Works only when "Enable replay recording" is enabled (is automatically set when enabling auto recording).
* [Req-124]: Ability to save the properties file for robots in dev. path.
* [Req-129]: `Rules.getBulletSpeed`.
* It is about keeping the bullet power within 0.1 - 3.0, even when input is lesser or greater than this valid range.
* [Req-128]: In battle name hiding.
* A general solution has been provided. A new game rule, "hide enemy names", can be enabled or disabled.
### Changes
* Upgraded to use jni4net v0.8.3.
## Version 1.7.2.2 (04-Nov-2010)
### Bug Fixes
* Fixed "3 * PI / 4 means West" in the Robot API, which should be "3 * PI / 2 means West".
* Thanks goes to Gottl Johannes for pointing this out.
## Version 1.7.2.2 Beta (02-Oct-2010)
### Bug Fixes
* [Bug-290]: Development Options remove wrong item.
* [Bug-291]: JavaDoc missing `_Robot` and similar
* [Bug-292]: Robot PrintStream doesn't handle write in a portable fashion.
* [Bug-293]: Wrong headings with the JuniorRobot.
* Thanks goes to Mr. Kschan for finding and providing a fix for this bug. :-)
### New sample robots
* Tuan Anh Nguyen provided a modified version of the interactive sample robot named `Interactive_v2`, which use absolute
movement (up, left, down, right) on the screen that can be easier to control than the original `Interactive` sample
robot.
* Both Interactive robots now use both the arrow keys and the W, A, S, D key for moving the robot.
* Sample robots have been written for the \#F language which are put in the "/samples/SampleFs" directory.
* These \#F sample robots are available with the .NET plug-in and comes along with Visual Studio project files.
### New Features
* Implemented Robocode .NET Control API plug-in (robocode.control.dll) with documentation.
* [Req-115]: Installed package should contain readme file.
* Added ReadMe.txt (using Markdown syntax) and ReadMe.html.
* The ReadMe is available from the Help menu.
* [Req-118]: Enable/disable development paths.
* Check boxes for each of the entries in has been added to the Preferences -> Development Options.
* [Req-119]: Provide JuniorRobot template for inexperienced users
### Changes
* Robocode has been upgraded to use jni4net v0.8 with CLR 4.0 support.
* It is not necessary to specify `-Dsun.io.useCanonCaches=false` anymore with the startup scripts for Robocode
and [RoboRumble] as this property is now automatically set internally when running Robocode under Windows.
* Hence, this property has been removed from all .bat, .sh, and .command files for Robocode.
* Robocode will not notify about Beta versions anymore per default.
* However, a new option in the Common Options (under Preferences) makes it possible to enable/disable notifications
about new Beta versions.
* The tabs for the "Common" and "Development Options" in the Preferences window are now the first tabs.
## Version 1.7.2.1 (05-Aug-2010)
### Bug Fixes
* [Bug-283]: Possible for robot to kill other robot threads.
* [Bug-287]: Zipped robots data files are not extracted.
* [Bug-284]: Robot Packager doesn't package source file in Eclipse proj.
* [Bug-215]: Missed onRobotDeath events.
* Thanks goes to ForNeVeR for finding and solving this bug.
* [Bug-282]: Cannot see robot with no package in New Battle dialog.
* [Bug-285]: Robot Packaging Wizard doesn't save value for Next & Back.
* [Bug-286]: `ClassNotFoundException at RobotClassLoader.java:271`.
* [Bug-288]: "skipped" turns at start with `-Ddebug=true`.
* [Bug-289]: Exclude filters not working.
* Bug: Sometimes the compiler window was hanging for several seconds, even though the compiler had finished compiling.
### Changes
* The Robot Packing Wizard will now only allow word characters (letters, digits, dots, *but not spaces*) with the
version field.
* Added `robocode.annotation.SafeStatic`, which can be used to suppress warnings in the robot console for a robot that
uses a static Robot reference on a field.
* Note that this means that your robot will need to clean the static field, when a new round is started.
* This annotation was suggested by Nat Pavasant:
@SafeStatic
private static AdvancedRobot robot;
* Added syntax highlighting on Java annotations for the Robot Editor.
## Version 1.7.2.1 Beta (19-Jun-2010)
### Bug Fixes
* [Bug-231]: Lockup on start if too many bots in robots dir (cont'd).
* Additional fixes were made.
* Fixed some issues with the robot repository when file URLs contains spaces, where robots were sometimes disappearing
from the repository.
### Changes
* [Req-99]: Move away from Jikes towards ECJ.
* Jikes 1.22 has been replaced with the Eclipse Compiler for Java (ECJ) 3.5.2.
## Version 1.7.2.0 (28-May-2010) The ".NET robots are now supported" release
### Bug Fixes
* Bug: Robots were disabled when skipping 30 skipping non-consecutive turns (or 120 turns when performing I/O
operations).
* Now, Robocode is only disabling robots when the robot skips 30 consecutive turns, which is the original behavior,
and which has been broken since version 1.6.1.4.
* [Bug-275]: Duplicate version numbers prevents uploading.
* [Bug-276]: `tzu.TheArtOfWar 1.2` gets `NullPointerExceptions`.
* [Bug-278]: Attempting to install robocode over an existing install NPEs.
* [Bug-281]: The robocode.command is missing the execute permissions bit.
* [Bug-277]: Problems with `Graphics2D.fill/draw(Shape)`.
* [Bug-280]: NPE when uploading results.
* [Bug-274]: "Ignoring" messages in rumble are duplicated.
* [Bug-269]: Minor visual bug - Currently selected robot gets covered.
* Bug: A security exception was thrown with development robots trying to access their data directory.
### Changes
* Robocode will now only install batch files relevant to the hosting system, e.g., .bat files are not installed under
Unix/Linux/macOS X, and .sh files are not installed under Windows.
* Furthermore, .command files are only installed under macOS X, and has now the execution permission bit set (due
to [Bug-281]).
* Robocode will now write out a warning in the robot console when a robot is detected that uses static references to a
robot, i.e. static fields that are declared as e.g. a `Robot`, `AdvancedRobot`, `TeamRobot` etc. (typically references
to the robot itself).
* A static reference to a robot can cause unwanted behavior with the robot accessing these. Hence, it is strongly
recommended that static robot references in a robot class or within its helper classes are changed into non-static
references and that the robot is recompiled afterwards.
* In every round, Robocode is creating new instances of the individual robot, meaning that static references to
former `Robot` objects points to "dead" `Robot` objects that are not used anymore in the game, and which cannot be
garbage collected during the battle when there is static references to these.
## Version 1.7.2.0 Beta 3 (29-Apr-2010) The ".NET robots are now supported" release
Thanks goes to Alex Schultz for keep finding bugs, but also helping out solving these. :-)
### Bug Fixes
* [Bug-271]: Battle engine consumes more CPU power over time.
* [Bug-267]: Strange issue first time running roborumble in 1.7.2.0 Beta2.
* [Bug-272]: `isTeammate()` sometimes returns false with teammates.
* [Bug-263]: Cannot extract downloaded robot for editing in Robot Editor.
* [Bug-270]: Strange thread exceptions with kid.DeltaSquad in 1.7.
* [Bug-228]: `Krabb.sliNk.GarmTeam 0.9v` locks up in new beta.
* [Bug-265]: Occasionally losing the bit of text in the robot console.
* [Bug-255]: `java.lang.Error: Interrupted attempt to aquire read lock`.
* Bug: Teams with versions could not be found in a development path.
* Bug: Files in `/robots/.data` or `/robots/.robotcache` directory were put into an underscore sub-directory.
* Bug: The "Kill Robot" button in the robot console windows was often disabled.
### Changes
* The robot console now uses a rolling buffer so when the number of lines in the robot console exceeds the max number of
lines (500), the oldest lines are removed, and `^^^ TEXT TRUNCATED ^^^` is written in the top.
* Previously half of the text was truncated when the max number of lines was reached.
## Version 1.7.2.0 Beta 2 (14-Mar-2010) The ".NET robots are now supported" release
### Bug Fixes
* [Bug-254]: Roborumble doesn't upload with `EXECUTE=NOT`.
* [Bug-257]: Team RoboRumble uploading is broken.
* [Bug-262]: TeamRumble: Cannot find robot in nested .jar files.
* [Bug-244]: Robot static data isn't being GCed after battle.
* Additional fixes were made to solve this issue.
* [Bug-258]: `isTeammate()` called on null gives `NullPointerException`.
* [Bug-260]: `ArrayIndexOutOfBoundsException` when starting team battle.
* [Bug-250]: Installer installs `AutoExtract$1.class`.
* [Bug-252]: `yk.JahRoslav 1.1` throws `WinException`.
* [Bug-259]: `jlm.javaDisturbance` loses substantial score in 1.7.2 Beta.
* [Bug-261]: (.NET) condition tested on concurrently modified collection.
### License Change
* We have changed license from Common Public License (CPL) v1.0 into Eclipse Puplic License (EPL) v1.0.
## Version 1.7.2.0 Beta (15-Feb-2010) The ".NET robots are now supported" release
### Bug Fixes
* [Bug-244]: Robot static data isn't being GCed after battle.
* [Bug-245]: Removing directories from "development options" doesn't work.
* [Bug-247]: Version ordering is somewhat strange with letters.
* [Bug-243]: Robot console text sometimes disappears.
* [Bug-240]: `morbid.MorbidPriest_1.0` fails to load.
* Bug in `RobotClassLoader` causing `ClassNotFoundException` for some robots during robot class load.
* Fixed a `NullPointerException` occuring when Robocode is (re)loading the robot repository after a developer path has
been removed.
### New Features
* .NET Robocode plug-in.
* It is now possible to code robots in .NET and let them engage in Robocode battles. :-)
*
[Req-101]: `onRoundEnded()`.
* It is now possible for robots to get notified when a round has ended.
* The `onRoundEnded()` event handler receives a new `RoundEndedEvent` that contains information about the number of
turns in the round and total turns in the whole battle when the event occurred.
* The `robocode.control.RoundEndedEvent` in the Control API has been extended with a new method
named `getTotalTurns()` similar to the new `robocode.RoundEndedEvent` for the Robot API.
* [Req-114]: RateControlRobot vs. TeamRobot.
* The `RateControlRobot` is now a `TeamRobot` meaning that it can participate in team battles.
* [Req-113]: Skipped turn events.
* Added `getSkippedTurn()` method on the `SkippedTurnEvent` class, which returns the turn that was skipped.
* The `SkippedTurnEvent.getTime()` returns the time when the `SkippedTurnEvent` was processed by the robot, which is
always later when the robot is skipping turns.
* The message `SYSTEM: you skipped turn` has been improved, so it will tell which turn that was skipped
like `SYSTEM: john.Doh skipped turn 43`.
* [Req-80]: Screenshot of battleview.
* Press Ctrl+T on Windows and Linux, and Command+T for macOS in order to take a screenshot of the battle view.
* The screenshot will be saved in the Robocode folder named "screenshots", and the filename will be a timestamp for
when the screenshot was taken.
* [Req-89]: Launch Robocode from .br (battle record) files.
* Robocode is now able to launch from from .battle (battle specification) and .br (battle record) files in Windows.
* [Req-86]: Rankings should be visible when Robocode is minimized.
* A new View Option has been implemented to preventing speedup when minimized.
* This new View Option can now be set in the Preferences by putting a check mark into "Prevent speedup when
minimized".
* [Req-93]: Rename `/robots/.robotcache` to `/robots/.data`.
### Changes
* Browser support has been improved for macOS, Unix and Linux, which in most cases did not work properly.
* In previous versions of Robocode, the browser.sh was used to start up the user's preferred browser. The browser.sh
file is not being used anymore. Hence, this file can safely be removed from your Robocode installation dir.
* Now, Robocode will start up a browser under macOS, Unix and Linux with no use of scripts.
* The Development Options dialog in the Preferences has been improved:
* Changed from using single interval selection to multi selection interval.
* Adding an existing path is ignored.
* The list of path is automatically sorted.
## Version 1.7.1.6 (06-Jan-2010)
### Bug Fixes
* [Bug-237]: OS X 10.6: Cannot run Robocode from robocode.sh.
* It must be run from the new robocode.command file instead.
* [Bug-238]: OS X 10.6: The editor cannot see the JD
* It must be run from the new robocode.command file instead.
* The `onDeathEvent(DeathEvent)` method was called too late, when a new round was about to start. Not when the robot has
died.
* [Bug-231]: Lockup on start if too many bots in robots dir (cont'd)
* Additional fix was made to locate multiple robots under the same package.
* Changed the robot painting so that everything that goes into the painting buffer is always painted, and remaining
painting operations exceeding the buffer capacity are always dropped.
* Previously, only the last painting operations exceeding the painting buffer were executed.
### New Features