Difference between pages "LiteRumble" and "Thread:User talk:Xor/Robocode OpenGL/RobocodeGL Preview 4/reply (2)"

From Robowiki
(Difference between pages)
Jump to navigation Jump to search
m (fixes)
 
(Restored edits authored by Beaming dated 2020-01-02T18:04:08+00:00)
 
Line 1: Line 1:
The LiteRumble is a lightweight, easily deployable roborumble system which is designed to run on the free tier of the Google App Engine.  
+
I was able to recreate the battle field freeze after window resize to leading to the zero pixel tall battle field. It happens on hi-DPI and normal-DPI linux computers with jdk-11 (did not check jdk-8).
The competitions will fill out automagically as they are given battles - no hardcoded rumble names or configurations. Because of this and the ease in deploying it should be perfect for in-class or in-office competitions. One of my goals for this was to be able to have a rumble setup which would never need any maintenance.
+
The console log is below.
  
It is designed to serve vanilla HTML/CSS (w3c validated) - no JavaScript or anything fancy. All sorting of columns is done server side through linked GET arguments - so click on column headers to sort by that column!
+
<pre>
 
+
Loaded net.sf.robocode.api
Here's the link for my 'official' hosted version: [http://literumble.appspot.com LiteRumble.appspot.com] - feel free to create new rumble categories on it as you want! Also, let me know on the comments page if you do, I'm interested to see what is happening.
+
Loaded net.sf.robocode.core
 
+
Loading plugins from /home/evmik/robocode/libs
I've released the code under <i>[http://creativecommons.org/licenses/by-nc-sa/3.0/ Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License]</i>. It is hosted on [https://bitbucket.org/jkflying/literumble/src BitBucket]. If you want to run your own just change the name to whatever you want yours to be called in <code>app.yaml</code>, create the newly named app on the app engine and deploy! All you need to do then is point your upload client at it, run the client and the rumbles should appear with whatever wild, fancy configurations you want automagically appearing. If you want specific rumbles not to get priority battles (ie. mini, micro and nano) you can set that manually using the Datastore Viewer in the App Engine admin console.
+
Loaded net.sf.robocode.repository
 
+
Loaded net.sf.robocode.sound
Some of the scoring I've done differently to Darkcanuck - I have Win% instead of PL (so it doesn't fluctuate with number of bots), and in Melee my survival is not as a bot-specific %, but rather as an 'out of total rounds' % (the 1v1 won't be affected).  
+
Loaded net.sf.robocode.host
 
+
Loaded net.sf.robocode.battle
The scores
+
Loaded net.sf.robocode.ui.editor
* ANPP (Average Normalised Percentage Pairs)
+
Loaded net.sf.robocode.ui
* Vote (percentage you are best against)
+
Loaded net.sf.robocode.gl2
* NPP (Normalised Percentage Pairs)
+
before Parse
* KNNPBI (K-Nearest-Neighbours Problem Bot Index)  
+
after Parse
are all calculated as a batch run twice a day, so you won't see the latest results from them immediately.
+
Reading robot database
 
+
force update takes 0.082375326s
Due to the restricted writes on the free tier of the App Engine I haven't got any per-client data correction - in fact, it may just occasionally lose 1 or 2 uploaded battles due to my memcached delayed writes. I initially put this in, but had to take it out again as it was taking too many writes to work decently. If I have to put this in again it will be based on keeping separate scores for each uploader, and then blacklisting uploaders if I find they have bad results and making a new master scoreset from the valid uploaders. The uploaders would be merged into the master every now and again and their history dropped - perhaps in two stages to allow for us to spot errors.
+
WARNING: An illegal reflective access operation has occurred
 
+
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary$3 (file:/home/evmik/robocode/./libs/gluegen-rt-2.3.2.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
Take a look around and tell me what you think. Submit battles if you have spare cycles, it should handle it OK as long as you don't use more than a couple clients per person =) If it does run out of writes the quota will reset once every 24 hours. I have it designed to just write the changes to memcache once the write quota is reached, and when the quota is reset it will dump all of the changes the first chance it gets. So if you see "Quota Reached" messages in your client, don't worry, it is handling it all gracefully behind the scenes.
+
WARNING: Please consider reporting this to the maintainers of com.jogamp.common.os.NativeLibrary$3
 
+
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
And most of all, have fun and happy Robocoding!
+
WARNING: All illegal access operations will be denied in a future release
 +
Creating window.properties file
 +
update takes 0.030204256s
 +
Preparing battle...
 +
----------------------
 +
Round 1 initializing..
 +
Let the games begin!
 +
..
 +
force update takes 0.038383916s
 +
com.jogamp.opengl.util.AnimatorBase$UncaughtAnimatorException: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:92)
 +
at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
 +
at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:204)
 +
at java.base/java.lang.Thread.run(Thread.java:834)
 +
Caused by: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
 +
at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
 +
at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:201)
 +
at com.jogamp.opengl.Threading.invokeOnOpenGLThread(Threading.java:202)
 +
at com.jogamp.opengl.Threading.invoke(Threading.java:221)
 +
at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
 +
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
 +
... 3 more
 +
Caused by: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
 +
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
 +
at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
 +
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
 +
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
 +
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 +
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 +
Caused by: java.lang.IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0
 +
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
 +
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
 +
at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
 +
at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
 +
at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
 +
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
 +
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
 +
at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
 +
... 15 more
 +
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
 +
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
 +
at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
 +
at com.jogamp.opengl.Threading.invoke(Threading.java:223)
 +
at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
 +
at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
 +
at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
 +
at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
 +
at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
 +
at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
 +
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
 +
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
 +
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
 +
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 +
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 +
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
 +
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
 +
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
 +
at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
 +
at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
 +
at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
 +
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
 +
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
 +
at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
 +
... 28 more
 +
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
 +
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
 +
at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
 +
at com.jogamp.opengl.Threading.invoke(Threading.java:223)
 +
at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
 +
at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
 +
at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
 +
at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
 +
at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
 +
at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
 +
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
 +
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
 +
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
 +
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 +
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 +
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
 +
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
 +
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
 +
at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
 +
at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
 +
at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
 +
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
 +
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
 +
at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
 +
... 28 more
 +
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
 +
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
 +
at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
 +
at com.jogamp.opengl.Threading.invoke(Threading.java:223)
 +
at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
 +
at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
 +
at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
 +
at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
 +
at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
 +
at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
 +
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
 +
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
 +
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
 +
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 +
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 +
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
 +
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
 +
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
 +
at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
 +
at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
 +
at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
 +
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
 +
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
 +
at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
 +
... 28 more
 +
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
 +
at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
 +
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
 +
at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
 +
at com.jogamp.opengl.Threading.invoke(Threading.java:223)
 +
at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
 +
at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
 +
at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
 +
at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
 +
at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
 +
at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
 +
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
 +
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
 +
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
 +
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
 +
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
 +
at java.base/java.security.AccessController.doPrivileged(Native Method)
 +
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
 +
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
 +
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
 +
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 +
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
 +
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
 +
at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
 +
at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
 +
at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
 +
at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
 +
at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
 +
at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
 +
at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
 +
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
 +
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
 +
at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
 +
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
 +
... 28 more
 +
X11Util.Display: Shutdown (JVM shutdown: true, open (no close attempt): 1/1, reusable (open, marked uncloseable): 0, pending (open in creation order): 1)
 +
X11Util: Open X11 Display Connections: 1
 +
X11Util: Open[0]: NamedX11Display[:0, 0x7f39984078c0, refCount 1, unCloseable false]
 +
</pre>

Latest revision as of 03:11, 25 April 2020

I was able to recreate the battle field freeze after window resize to leading to the zero pixel tall battle field. It happens on hi-DPI and normal-DPI linux computers with jdk-11 (did not check jdk-8). The console log is below.

Loaded net.sf.robocode.api
Loaded net.sf.robocode.core
Loading plugins from /home/evmik/robocode/libs
Loaded net.sf.robocode.repository
Loaded net.sf.robocode.sound
Loaded net.sf.robocode.host
Loaded net.sf.robocode.battle
Loaded net.sf.robocode.ui.editor
Loaded net.sf.robocode.ui
Loaded net.sf.robocode.gl2
before Parse
after Parse
Reading robot database
force update takes 0.082375326s
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary$3 (file:/home/evmik/robocode/./libs/gluegen-rt-2.3.2.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.jogamp.common.os.NativeLibrary$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Creating window.properties file
update takes 0.030204256s
Preparing battle...
----------------------
Round 1 initializing..
Let the games begin!
..
force update takes 0.038383916s
com.jogamp.opengl.util.AnimatorBase$UncaughtAnimatorException: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:92)
	at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
	at com.jogamp.opengl.util.Animator$MainLoop.run(Animator.java:204)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
	at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
	at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:201)
	at com.jogamp.opengl.Threading.invokeOnOpenGLThread(Threading.java:202)
	at com.jogamp.opengl.Threading.invoke(Threading.java:221)
	at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
	at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
	... 3 more
Caused by: com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:303)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Width (-13) and height (-10) cannot be <= 0
	at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
	at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
	at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
	at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
	at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	... 15 more
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
	at com.jogamp.opengl.Threading.invoke(Threading.java:223)
	at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
	at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
	at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
	at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
	at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
	at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
	at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
	at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
	at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
	at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
	at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	... 28 more
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
	at com.jogamp.opengl.Threading.invoke(Threading.java:223)
	at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
	at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
	at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
	at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
	at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
	at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
	at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
	at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
	at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
	at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
	at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	... 28 more
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
	at com.jogamp.opengl.Threading.invoke(Threading.java:223)
	at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
	at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
	at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
	at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
	at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
	at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
	at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
	at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
	at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
	at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
	at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	... 28 more
com.jogamp.opengl.GLException: Caught IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0 on thread AWT-EventQueue-0
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.opengl.awt.GLCanvas$12.run(GLCanvas.java:1438)
	at com.jogamp.opengl.Threading.invoke(Threading.java:223)
	at com.jogamp.opengl.awt.GLCanvas.display(GLCanvas.java:505)
	at com.jogamp.opengl.awt.GLCanvas.paint(GLCanvas.java:559)
	at java.desktop/sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
	at java.desktop/sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:66)
	at java.desktop/sun.awt.RepaintArea.paint(RepaintArea.java:240)
	at java.desktop/sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:555)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5069)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Width (-20) and height (-15) cannot be <= 0
	at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1016)
	at java.desktop/java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
	at net.sf.robocode.ui.battleview.BattleView.createGroundImage(BattleView.java:252)
	at net.sf.robocode.ui.battleview.BattleView.initialize(BattleView.java:221)
	at net.sf.robocode.ui.battleview.BattleView.access$1300(BattleView.java:71)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.update(BattleView.java:857)
	at net.sf.robocode.ui.battleview.BattleView$MyPanel.paint(BattleView.java:847)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.paintGL(GLG2DSimpleEventListener.java:124)
	at org.jogamp.glg2d.GLG2DSimpleEventListener.display(GLG2DSimpleEventListener.java:67)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at com.jogamp.opengl.awt.GLCanvas$11.run(GLCanvas.java:1424)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	... 28 more
X11Util.Display: Shutdown (JVM shutdown: true, open (no close attempt): 1/1, reusable (open, marked uncloseable): 0, pending (open in creation order): 1)
X11Util: Open X11 Display Connections: 1
X11Util: Open[0]: NamedX11Display[:0, 0x7f39984078c0, refCount 1, unCloseable false]