Re: How to Use BattleRunner
Patrick Cupka <[email protected]> Wed, 22 Mar 2017 20:41:18 -0400
| Newsgroups | gmane.comp.java.robocode |
|---|---|
| Message-ID | <CAA-77kfGZHDsbVrWNJnBWZSvJvQ8xDaHs2Ls3AVAs4cys4jC5w@mail.gmail.com> |
Hey! A few thoughts / suggestions: - Passing "-jar robocode.jar" basically means robocode.jar is the program you want to execute. In this case, you want to execute BattleRunner and link in robocode.jar (your code references Robocode's). So you want robocode.jar on your "classpath", with a param like: "-cp path/to/robocode.jar". And probably execute it from the dir with BattleRunner in it. - One issue you'll face is that you can't simply run multiple Robocode engines in different threads. You need a separate process and install directory for each Robocode that's running. I wrote a battle running tool called RoboRunner which handles that pretty well: http://robowiki.net/?RoboRunner .. If you're running battles overnight, you'll definitely want multi-threading. It's possible you have some need to interface with the Robocode Control API directly, but I'd consider instead trying to interface with RoboRunner to run your battles. But if nothing else, it's good reference code for how to use the Control API. - A tip from someone else who's played with GA and Robocode: one hurdle with genetic algorithms in Robocode is that each piece of code you want to test has to be packaged into a .jar for Robocode to run battles with it. Alternatively, you could evolve the contents of a data file that your bot reads in and have that dictate the behavior. This will be an issue whether you use RoboRunner or the Control API. It's one reason all my Robocode GA experiments ended up being run fully outside of Robocode, against data sets collected with Robocode. And I actually wrote a game called BerryBots with a different style of automation API and made sure it's a bit friendlier to things like GA. Hope that helps! Let us know how it goes. Good luck, On Wed, Mar 22, 2017 at 10:22 AM, Jonathan Addison < [email protected]> wrote: > Hello, I'm trying to write a genetic program for robocode. I want the > battles to be automated, so that I can run the program at night. However, I > can't seem to work out how to do it. I've Ctrl-C the source code from > http://robocode.sourceforge.net/docs/robocode/robocode/control/package- > summary.html (I believe this is for robocode 1.9.2.0) and I'm definitely > using 1.9.2.4 . It compiles, but I get a runtime error. > > I enter java BattleRunner on the command line (I use Windows 10) > I've tried java -jar robocode.jar BattleRunner and that doesn't change > anything. > and get this Error: A JNI error has occurred, please check your > installation and try again > Exception in thread "main" java.lang.NoClassDefFoundError: > robocode/control/events/IBattleListener > at java.lang.Class.getDeclaredMethods0(Native Method) > at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) > at java.lang.Class.privateGetMethodRecursive(Class.java:3048) > at java.lang.Class.getMethod0(Class.java:3018) > at java.lang.Class.getMethod(Class.java:1784) > at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) > at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) > Caused by: java.lang.ClassNotFoundException: robocode.control.events. > IBattleListener > at java.net.URLClassLoader.findClass(URLClassLoader.java:381) > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > ... 7 more > > My robocode is installed @ C:\robocode. BattleRunner is stored @ > C:\robocode\libs. > > I can robocode from the command line, but once that's open I can't use the > command prompt. > > I'm very sorry, if this has already been answered, many thanks for your > time. > > -- > You received this message because you are subscribed to the Google Groups > "robocode" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Patrick Cupka, [email protected] -- -- You received this message because you are subscribed to the Google Groups "robocode" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.