A batch battle runner by Voidious, in the vein of RoboLeague and RoboResearch. Designed to be easy to setup and to run fast with multi-threading and persistent Robocode engines, using the Robocode control API.
Download and install
- Download it here: roborunner-1.2.3.zip (1.6 MB)
- Unzip the contents into a new directory, e.g. ~/roborunner.
- Run setup.sh to make n clones of an existing Robocode directory, where n is the number of concurrent threads you plan to run with. E.g., ./setup.sh 3 ~/robocode_22.214.171.124
Sorry, the setup is Unix only right now. If anyone wants to contribute analogous .bat files, please feel free. Or maybe you can run the shell scripts with Cygwin. RoboRunner itself should work fine if you install some copies of Robocode and point to them in roborunner.properties.
- Copy some bots into roborunner/bots. JARs will be copied, if necessary, into the robots directory of each Robocode install on launch.
- Create a .rrc file to configure a challenge, or use one from RoboResearch.
- Run some battles with rr.sh. E.g., ./rr.sh -bot voidious.Diamond 1.8.2 -c dibed35.rrc -seasons 5
Advantages over RoboResearch
- Easy to setup and get started.
- Keeps Robocode engine processes up and running instead of spinning up a new JVM for every battle, for much improved performance.
- Support for Melee, teams, and custom battlefield sizes.
- Smart battle selection for more accurate scores in less time.
- Scores for each challenger are kept in a separate file. No slow-downs because of all the previous battles you've run, and no fussing with databases.
- Cleaner, more human readable output.
I've published the code in the public domain at GitHub: RoboRunner repo
RoboRunner depends on Guava, which is included in the download above. Read about it or grab the latest JAR here: http://code.google.com/p/guava-libraries/
There are still some important things missing. Here's my current to do list, in rough priority order.
- handle errors in battles, maybe dying processes or timed out battles too
- support for Windows (.bat files and/or setup instructions)
- unit tests!
- arg to clear .data dirs before starting
- recover from corrupted data files
- print avg elapsed time per battle at end
- option for complete, per bot output after every battle or season
- Custom battle listeners for more sophisticated scoring or other analysis.
- Optional "ghost bot": print score comparisons to a different bot/version that you've already run.
- Use TCP for communicating with Robocode processes. Then we can enable running in listen-mode and passing a list of remote RoboRunner processes.