Difference between revisions of "RoboRunner"

From Robowiki
Jump to navigation Jump to search
(→‎Feature ideas: TCP and remote battle processes)
m (→‎Download and install: 1.9.4.2 has serious bugs, please use robocode 1.9.4.3+)
 
(17 intermediate revisions by 5 users not shown)
Line 3: Line 3:
 
| page1 = Version History
 
| page1 = Version History
 
| page2 = Help
 
| page2 = Help
 +
| page3 = GUI
 
}}
 
}}
 
----
 
----
A batch battle runner 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.
+
A batch battle runner by [[User:Voidious|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.
 +
 
 +
RoboRunner is a command line utility. If you prefer to use a GUI, take a look at [[User:Skotty|Skotty]]'s excellent [[RoboJogger]] front-end or [[User:Chase-san|Chase's]] snazzy new [[RoboRunner/GUI|RoboRunner GUI]].
  
 
== Download and install ==
 
== Download and install ==
 +
==== Fork by [[User:Xor|Xor]] ====
 +
Source code: https://github.com/bumfo/RoboRunner
 +
 +
* Download it here: [https://github.com/bumfo/RoboRunner/releases/download/2.0-2-SNAPSHOT/roborunner-2.0-2-SNAPSHOT.zip roborunner-2.0-2-SNAPSHOT.zip].
 +
* Unzip the contents into a new directory, e.g. ~/roborunner.
 +
* Run setup.sh.
 +
 +
It contains a few bug fixes, since the original version is not actively developed any more. It also supports Windows, though you'll need to build it from source.
 +
 +
Known issues:
 +
* [wontfix] robocode 1.9.4.2 has some bugs (fixed in 1.9.4.3), making it incompatible with roborunner.
 +
 +
===== Robocode version compatibility =====
 +
Not all versions of robocode are compatible with RoroRunner. For example version 1.9.4.2 would fail but 1.9.4.3 and above works.
 +
 +
==== The original version ====
 +
The original version has some bugs with the newest Robocode version, but is preserved here for the history.
  
* Download it here: [http://dijitari.com/void/robocode/roborunner-1.1.1.zip roborunner-1.1.1.zip] (1.6 MB)
+
* Download it here: [https://web.archive.org/web/20130318131151if_/http://dijitari.com/void/robocode/roborunner-1.2.3.zip roborunner-1.2.3.zip] (1.6 MB)
 
* Unzip the contents into a new directory, e.g. ~/roborunner.
 
* 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_1.7.4.1''
 
* 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_1.7.4.1''
Line 24: Line 44:
  
 
* Easy to setup and get started.
 
* Easy to setup and get started.
* Keeps Robocode engine processes running instead of spinning up a new JVM for every battle, for much improved performance.
+
* Keeps Robocode engine processes up and running instead of spinning up a new JVM for every battle, for much improved performance.
* Support for Melee and custom battlefield sizes.
+
* 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.
 
* 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.
 
* Cleaner, more human readable output.
Line 38: Line 59:
  
 
There are still some important things missing. Here's my current to do list, in rough priority order.
 
There are still some important things missing. Here's my current to do list, in rough priority order.
* override for number of threads, <= number of installs specified
+
* handle errors in battles, maybe dying processes or timed out battles too
* JVM arguments in roborunner.properties, right now just passing -Xmx512M
 
* specify dirs for sources of robots in roborunner.properties
 
* option for complete, per bot output after every battle or season
 
* option to force wiki output (eg for [[MC2K7]])
 
 
* support for Windows (.bat files and/or setup instructions)
 
* support for Windows (.bat files and/or setup instructions)
* print % of bots faced until it is 100%
+
* unit tests!
* print avg elapsed time per battle at end
 
* handle errors in battles, maybe dying processes or timed out battles too
 
 
* arg to clear .data dirs before starting
 
* arg to clear .data dirs before starting
* store individual battle scores instead of running totals, if there’s demand / use for it
 
 
* recover from corrupted data files
 
* recover from corrupted data files
* unit tests!
+
* print avg elapsed time per battle at end
 +
* option for complete, per bot output after every battle or season
  
 
== Feature ideas ==
 
== Feature ideas ==
Line 56: Line 71:
 
* Custom battle listeners for more sophisticated scoring or other analysis.
 
* 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.
 
* Optional "ghost bot": print score comparisons to a different bot/version that you've already run.
* Track and print standard deviation and/or confidence interval for scores.
 
* Instead of running fixed # of battles per bot, dynamically decide what battles to run based on what would increase overall score accuracy the most (ie, whichever bots have highest variance).
 
 
* Use TCP for communicating with Robocode processes. Then we can enable running in listen-mode and passing a list of remote RoboRunner processes.
 
* Use TCP for communicating with Robocode processes. Then we can enable running in listen-mode and passing a list of remote RoboRunner processes.
  

Latest revision as of 15:38, 24 January 2023

Sub-pages:
Version History - Help - GUI

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.

RoboRunner is a command line utility. If you prefer to use a GUI, take a look at Skotty's excellent RoboJogger front-end or Chase's snazzy new RoboRunner GUI.

Download and install

Fork by Xor

Source code: https://github.com/bumfo/RoboRunner

It contains a few bug fixes, since the original version is not actively developed any more. It also supports Windows, though you'll need to build it from source.

Known issues:

  • [wontfix] robocode 1.9.4.2 has some bugs (fixed in 1.9.4.3), making it incompatible with roborunner.
Robocode version compatibility

Not all versions of robocode are compatible with RoroRunner. For example version 1.9.4.2 would fail but 1.9.4.3 and above works.

The original version

The original version has some bugs with the newest Robocode version, but is preserved here for the history.

  • 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_1.7.4.1

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.

Running battles

  • 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.

Source code

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/

What's missing?

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

Feature ideas

  • 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.