Robocode/Console Usage
This page describes how to run and use Robocode from a console.
Contents
Starting Robocode
Robocode is normally started by a batch file/shell script, depending on the OS:
robocode.bat
on Windowsrobocode.sh
on Unix/Linuxrobocode.command
on macOS
The shell script is used for setting required parameters for the Java VM in order to start and run Robocode properly.
By default, Robocode is started from a console by writing:
java -Xmx512M -Dsun.io.useCanonCaches=false -cp libs/robocode.jar robocode.Robocode
Here you must stand in the 'robocode' directory where Robocode has been pre-installed.
java
is the command used for running the Java VM, which is required for starting and running Robocode.-Xmx512M
sets the maximum heap size for the Java VM to 512 MB of heap memory, meaning that Robocode cannot use more than 512 MB of memory.-Dsun.io.useCanonCaches=false
is used to disable canonical cashing of file names, which would otherwise cause problems under Windows. With future versions of Robocode, this option is not necessary anymore, and will hence be obsolete at that time.-cp libs/robocode.jar
tells the Java VM which library (jar file), which is used for starting up Robocode.robocode.Robocode
specifies the main entry class of the Robocode game, which is required for starting Robocode.
With all of the above, Robocode will startup with a graphical user interface (GUI) waiting for user inputs. But it is possible to change the way Robocode is started and how it must run. That is, you can specify additional parameters to the command line above. These parameters are described in the following with the console usage.
Console Usage
Usage: robocode [-?] [-help] [-cwd path] [-battle filename [-results filename] [-record filename] [-recordXML filename] [-replay filename] [-tps tps] [-minimize] [-nodisplay] [-nosound] where options include: -? or -help Prints out the command line usage of Robocode -cwd <path> Change the current working directory -battle <battle file> Run the battle specified in a battle file -results <results file> Save results to the specified text file -record <bin record file> Record the battle into the specified file as binary -recordXML <xml rec file> Record the battle into the specified file as XML -replay <record file> Replay the specified battle record -tps <tps> Set the TPS > 0 (Turns Per Second) -minimize Run minimized when Robocode starts -nodisplay Run with the display / GUI disabled -nosound Run with sound disabled Java Properties include: -DWORKINGDIRECTORY=<path> Set the working directory -DROBOTPATH=<path> Set the robots directory (default is 'robots') -DBATTLEPATH=<path> Set the battles directory (default is 'battles') -DNOSECURITY=true|false Enable/disable Robocode's security manager -Ddebug=true|false Enable/disable debugging used for preventing robot timeouts and skipped turns, and allows an an unlimited painting buffer when debugging robots -DEXPERIMENTAL=true|false Enable/disable access to peer in robot interfaces -DPARALLEL=true|false Enable/disable parallel processing of robots turns -DRANDOMSEED=<long number> Set seed for deterministic behavior of random numbers
Example: Running a battle
In this first example, Robocode is running the 'sample.battle' from the 'battles' directory without the display (GUI), and where the results are written out to the file named 'results.txt':
java -Xmx512M -Dsun.io.useCanonCaches=false -cp libs/robocode.jar robocode.Robocode -battle battles\sample.battle -nodisplay -results results.txt
Example: Disabling security
With this example the Robocode security manager is disabled, which allows a developer to let robots access files and classes from outside Robocode:
java -Xmx512M -DNOSECURITY=true -Dsun.io.useCanonCaches=false -cp libs/robocode.jar robocode.Robocode
This allows a robot developer to let a robot access 3rd party libraries with support for e.g. neural networks and similar. Note that disabling security with this option does not disable all security. The normal Java security mechanisms still apply. But most of the security mechanisms added by Robocode are disabled.
Example: Running in Debug Mode
When trying to debug a robot by single stepping in an external IDE (e.g. Eclipse or NetBeans), it is important that the debug mode is enabled. Otherwise, the robot will receive skipped turns and by stopped by the game very quickly.
java -Xmx512M -Ddebug=true -Dsun.io.useCanonCaches=false -cp libs/robocode.jar robocode.Robocode
See also
Robocode API
Beginner Guides
- Welcome to Robocode
- System requirements
- Download and install
- Getting started
- Frequently asked questions
- My First Robot tutorial
- Game physics
- The anatomy of a robot
- Scoring in Robocode
- Using the robot console
- Downloading other robots
- Learning from other robots
- Package your robot
- Articles about Robocode
- Starting Robocode from the command line
- Graphical debugging
External Editors
- Using Eclipse with Robocode
- Creating a project in Eclipse
- Creating a robot in Eclipse
- Running your robot from Eclipse
- Debugging your robot with Eclipse
- Using NetBeans with Robocode
- Using Gradle with Robocode