RobotWar – program your robot to victory

Battle robots, physically fighting each other has been a popular discipline for more than 30 years. Tournaments across, some even serialized for broadcast have attracted people from all walks of life, All with one common purpose, building a kick-ass robot and using it to destroy opponents in the most spectacular way possible. For some, this resorted to brute force, while others chose more refined attack or defend mechanisms. Today robots can be self-controlled, running on sophisticated sets of instruction, artificial intelligence.
Going back to the funky ’70s a digital and artificial intelligence robot war was raging on computer networks across universities, created by a brilliant mind.

When Silas Warner enrolled at the University of Indiana, at the age of 17, in 1966 he was introduced to the incredible world of computers. Warner, curious by nature and an exceptionally fast learner, soon became knowledgeable in everything and anything computer-related. During his senior year, Warner devoted his time between studying and doing contract programming jobs. In 1970, after finishing his physics degree he stayed with the university for another six years. When the University of Illinois’ computer-assisted instruction system, PLATO IV was rolled out in 1972 the University of Indiana was one of the first institutions to have the $12.000 expensive real-time graphics terminals installed and connected to the systems mainframes. The high-resolution digital plasma display coupled with the mainframe’s computational power made PLATO alongside its programming language TUTOR, suitable for enhanced interactive content like complex multi-player war and role-playing games.
Warner went on to install and administrate the new system and soon became a major contributor to the PLATO community, developing games and educational content for thousands of people to use and enjoy.

Control Data Corporation, which built the million-dollar mainframe systems PLATO was operating on became aware of Warner’s contributions and in 1976 hired him to develop in-house training programs for Commercial Credit in Maryland, a finance company fully owned by Control Data. Warner continued, in his spare time, to develop programs and games for the PLATO community. In 1977 he came up with RobotWar, a unique none real-time two-player robot game.

Each robot was controlled by lines of code written in the RobotWrite application employing a simplistic high-level custom language, created by Warner. The code was loaded into the RobotWar game and executed with no further input from the players. Instructions on how each robot would move, when to fire its gun, and in what direction, etc were all controlled by the written code.

The nature of RobotWar made it an excellent tool for not only learning basic programming but also logic and problem-solving. With each play, you would slightly improve on the code, fix bugs, and try and figure out what tactics through logic would benefit you in the battle. In essence, you were creating a more and more complex artificial intelligence (within the very simple setting provided by the game).
RobotWar would spend the next four years confined to the mainframe realm but when finally released for microcomputers it would become a hit and spawn tournaments across.

While at Commercial Credit Warner met fellow programmer Ed Zaron, who was developing software to evaluate credit scores, and Jim Black an accountant in the billing department. The trio would become some of the earliest adopters of the Apple II microcomputer. Warner purchased the 16K Apple II, his first personal computer, in early 1978, after he had visited Zaron who just had acquired one himself. Warner, Zaron, and Black started meeting together after work, in Zaron’s living room programming games and software.

In late April of 1978, Warner and Zaron brought their first creations, recorded onto cassette tapes, to the Trenton Computer Festival, at Trenton State College in New Jersey. Here they debuted with two Apple II games that soon drew in enthusiastic crowds and cassettes started selling like hotcakes. The venture validated that there indeed was a market for personal computer software and that it might even be a viable business opportunity.
In August of 1978, Zaron incorporated Micro Users Software Exchange using the trade name the MUSE Software Company, later simply MUSE Software. While Zaron came up with the Muse name, Warner contributed with it becoming the acronym for Micro User Software Exchange.
The trio continued to produce cassettes at night and traverse the East Coast selling games and software at computer trade shows at weekends. This, in the long run, wasn’t a viable solution and Zaron quit his secure job at Commercial Credit, in 1979, to fully focus on MUSE and software development. Black followed a few months later and a more cautious Warner stayed with Commercial Credit, not leaving until 1980.

One of Warner’s first commercial products, after entering Muse Software full-time, was an Apple II version of his RobotWar mainframe game from years earlier. While the PLATO version of RobotWar had benefitted from being a network-connected multiplayer application, where players on the system could write and upload their code for the RobotWar application, this wasn’t really an option on personal computers at the time. Instead, Warner added the ability for multiple players to write their own robot code, copy it to the same floppy disk, and load the robots into the game. A total of five robots could battle it out in the arena.

Muse Software developed various tools and utilities both for in-house use and as commercially available solutions, some of these were being reworked into its games. Super-Text, a professional full-screen word processor (a feat in itself) written by Zaron, that could surpass the 40 column limit on the Apple II by using the Hi-Res mode, and a character generator was reworked to become the full-screen editor for the programming part in RobotWar.
Warner’s custom Robot language resembled a mix of Assembly, Forth, and BASIC, and while quite easy for beginners to dive into it was yet advanced enough for seasoned programmers to have fun with.
Initially, Warner programmed RobotWar in BASIC but when it got too big and too slow it was rewritten in assembly language. In 1981, when Warner had completed the conversion and an elaborate manual had been written, using Muse’s Super-Text software, it was released for the Apple II computer.

RobotWar by Silas Warner, released in 1981 for the Apple II computer.
This is the original release from 1981 that restricted the memory registers (locations for storing index numbers) to 24. Allowing access to registers AZ, with X and Y being excluded as they were used to store the vertical and horizontal position of the robot (the arena had a size of 256×256 units).
Later versions allowed access to all registers.

In 1981 Muse Software moved the operation up the road, from 330 to 347 North Charles Street in Baltimore.

After the move to 347 N. Charles St. RobotWar was released again, featuring a more professional floppy label.
The early success of Warner’s game led to the creation of the RobotWar Club and the option to buy your own RobotWar branded T-shirt

The 75-page elaborate manual described every aspect of RobotWar and Warner’s custom language.
The game came with five simple robots, including some basic routines, these could be used as inspiration for building more complex instructions sets.
RobotWar’s manual was created in Muse Software’s own Super-Text application, the same, used as the basis for the full-screen editor when writing the robot-code

Each robot could move horizontally and vertically, had a directional radar, telling the distance to competitors and arena walls, and a gun able to fire shells in any specified direction.
Robots started with 0% in the damage register, every time it was hit by a shot or bumped into things, like the arena walls, it would increase. When the damage register reached 100% the robot was eliminated.
While the winning robot would earn a number of points for different actions and each victory, as soon as the code was changed the score was reset.

A small video of RobotWar in action.
I start by typing in the Dragon code which can be seen further down.
It apparently wasn’t too successful this time around, seems like my robot more or less fled for most of the battle.
While it may not look like much, this was in 1981. Not only did the 48K of memory 1 MHz Apple II computers assemble the code, translating it into machine language, it also had to simulate and execute the code of up to five different robots, all at the same time.
I’ve sped up the typing part and the battle itself is at 2x speed (so you won’t fall asleep)

RobotWar achieved a strong following in the early ’80s. Computer Gaming World praised the game’s easy-to-learn custom language, and from 1982 and a few years on organized annual tournaments in which contestants could send in their robot programs.

In 1982 Muse switched out plastic folders for boxed packaging and RobotWar was released again.
The box design would stay with Muse Software until its demise, years later

In 1983 the tournament was won by Doug Hogg and his robot Dragon. Hogg’s winning code, using Warner’s custom high-level language, using math operators, registers (for storing information), goto calls, and subroutines, can be examined below.


Alphabetic letters were used as Index registers, for storing whole numbers for calculations, etc. The first part of the scripts check for the position of the robot against different conditions and decides if the robot should stop or move, if so, in what direction.

; ROBOT "DRAGON" BY DOUG HOGG

BEGIN
  223 TO S
  IF Y > 127 GOTO CHECKDOWN
  IF X < 127 GOTO SLOWUP
  GOTO SLOWRIGHT
CHECKDOWN
  IF X > 127 GOTO SLOWDOWN
  GOTO SLOWLEFT

GOUP
  0 TO K TO H
  0 - S TO V TO SPEEDY
  GOSUB MOVEIT
SLOWUP
  30 + R * 4 TO SPEEDY

GORIGHT
  90 TO K
  0 TO V
  S TO H TO SPEEDX
  1000 * 3 TO J
  GOSUB MOVEIT
SLOWRIGHT
  0 - R - 30 - 5 * 4 TO SPEEDX

GODOWN
  180 TO K
  S TO V TO SPEEDY
  0 TO H
  GOSUB MOVEIT
SLOWDOWN
  0 - R - 30 - 5 * 4 TO SPEEDY

GOLEFT
  270 TO K
  0 TO V
  0 - S TO H TO SPEEDX
  10 TO I
  IF 5 < W TO I
  I TO W
  GOSUB MOVEIT
SLOWLEFT
  30 + R * 4 TO SPEEDX
  GOTO GOUP

MOVEIT
  K - 8 TO L
  K + 90 TO M
  N - 5 TO RADAR
  K + 180 TO O
  24 - RADAR TO R
  IF R > 0 N - 2 TO AIM
  IF R > 0 TO T TO SHOT
  IF T = 1 DATA + 1 TO DATA
  INDEX + 1 TO INDEX
  > 4 1 TO INDEX
  IF DATA < 2 K - 17 TO AIM
  IF DATA > 1 K + 85 TO AIM
  IF R < 24 205 TO SHOT
  0 = H TO SPEEDX
  = V TO SPEEDY
  K + 203 TO N
  1 TO G TO T
  GOSUB MT
  ENDSUB

LOOKBACK
  O TO RADAR
  0 - RADAR TO R
  > 0 O TO AIM
  IF R > 0 R + 27 TO SHOT
  -256 - R TO R
  IF R < 0 > -105 ENDSUB
BACKSHOT
  N - 4 TO N TO RADAR
  25 - RADAR TO R
  > 25 TO T
  > 25 N - 1 TO AIM
  IF R > 25 TO SHOT
  > 25 0 TO DATA
MT
  K TO RADAR
  0 - RADAR TO R
  < 0 > -105 ENDSUB
  > 0 K TO AIM
  IF R > 0 R -10 TO SHOT
  IF R > 0 1 TO DATA

  L - 4 TO L TO RADAR
  G - 1 TO G
  < -2 ENDSUB
  0 - RADAR TO R
  > 0 TO T
  > 0 -675 * 3 / R + 20 + L TO AIM
  IF R > 0 TO SHOT
  > 0 0 TO DATA

  IF DATA < 2 GOTO LOOKBACK

  M TO RADAR
  -15 + W TO F
  0 - RADAR TO R
  > 110 J / R TO F
  IF R > 0 < 111 -3 TO F
  M + F TO AIM
  R + 24 TO SHOT
  215 TO SHOT
  GOTO MT

In 1981, following the first release of RobotWar, Warner completed his most noticeable game, Castle Wolfenstein. I have an upcoming article covering that and its successor, Beyond Castle Wolfenstein.

Sources: Core War, Wikipedia, games.greggman.com, Silas Warner’s talk at Kansasfest ’92, Video Game Newsroom Time Machine interview with Ed Zaron

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.