Robot Battle
# Robot Battle

Robot Battle is a programming game for Microsoft Windows where players design and code adaptable battling robots. Robot Battle takes strategy rather than reflexes, accuracy, or timing to succeed. What differentiates one robot from the next is its programming, for which the player is responsible. The game is inspired by the similar game RobotWar.

## History

Robot Battle was created by Brad Schick in 1994 and released to the public for free in the same year, when it reached version 1.2. It went through many versions until seeming to peak at 1.3 in 1995, until in 1997 David Finch released 1.33. The community was at that time held together by the Robot Battle Mailing List (RBML) (which was closed in February 2004 when the Robot Battle Registry, an Internet forum, opened), where tournaments were held, new players could be helped and complicated coding questions could be posed and answered.

Early in 2001 Brad began work on Robot Battle 1.4, which promised to be a massive upgrade. The RBML was alive with ideas, suggestions and offers to help, which resulted in the Robot Battle that new players will know, including new features such as:

* 3D robot graphics
* New sound effects (created by Steve Simmons)
* New robot coding features
   * Sliding (originally a bug, but now an important feature for many robots)
   * XY Coordinates
   * Radio
   * Author and Version variables
   * Arrays
   * Loops
* Team setup options

Then in mid-2001 a small company called GarageGames showed an interest in Robot Battle and Brad agreed to sell the game through them. Soon after the first official 1.4 release in December 2002 work began on the Robot Battle Registry, a forum and a way of storing robots so that other people can download them, as well as a way to organise and advertise tournaments. The registry opened in May 2003.

Robot Battle has a steadily growing user base with communications over the Registry forums and IRC. At first the Registry was only available for people who had purchased the game but it has since been opened up to anybody.

Robot Battle is distributed under the MPL open-source license, allowing anybody to read the code to help design robots or programs which interact with the game somehow.

The Robot Battle full version was published for free on November 23, 2004.

## The Robot

The robots in Robot Battle have three separate parts. The body contains the tracks, is a square of size 33x33, and rotates at a speed of 5 degrees per turn. The gun has the ability to shoot energy missiles which will damage robots, and destroy missiles, mines and cookies on collision, and can rotate 10 degrees per turn. The radar has the ability to scan for cookies, mines, robots, and walls, and can rotate 15 degrees per turn.

## Robot scripting language

Robots are programmed in Robot Scripting Language (RSL), and can be created in all text editors such as Notepad. Robots are usually worked on and distributed in .prg format, but some coders choose to scramble their robots and distribute them as DST files. The scrambling software was created by Brad for Robot Battle 1.3 and later edited by Joseph Fowler (aka Sorcerer) and Mark Duller to give two separate programs both compatible with Robot Battle 1.4.

RSL has been said to resemble many programming languages including Basic, C, and JavaScript. Each robot has one or many sections, separated by section names and curly brackets, "init" being the only required section and where other sections are defined by an event and a priority.

The Core section does not need a priority, and contains the details of what the robot will do when it isn't doing anything else. The Ascan, when used, usually has the lowest priority (least important) and takes place whenever the robot is moving. The other events take place when an object is detected with the radar or collided with by the body.

The parts of the robot are controlled by commands.

The easiest way to make a robot is to look at the ones which come free with the game, Combo, Smart Corner, Events, Fire, Rammer, Shell, Side Liner, Target, Walls II and Zag. These robots demonstrate uses of the simple commands above, as well as some more advanced tactics such as the use of radio and the differences when creating a robot with "command blocking" turned off.

