Software Foundation

GNU Robots


Table of contents


1.1 Is GNU Robots the same as GNOME Robots, BSD Robots?

No, GNU Robots is a completely different game concept. With GNOME Robots and BSD Robots, the idea is that you control a player that is trying to run away from a bunch of mindless robots. With GNU Robots, the idea is that you write a program for a robot, then watch him explore a world. Once you set your GNU Robot loose, the robot is entirely independent of you, and must navigate the game map using only the logic that you provided in your robot program.

1.2 is GNU Robots the same as xx robot game?

In short: no. The general game idea where the user assembles a robot or robot program, then lets the robot explore a strange world, is not new. While there have been many games that follow this principle, GNU Robots is a different concept from these other programs.

For example, there was Robot Odyssey. Trent Bowman explains:

I'll describe the game to you in brief, at least to the best of my memory. I last played the game in the late 80s, but it is available for Apple ][ emulators.

In Robot Odyssey (1984, The Learning Company), your player gets trapped in a wierd robot-world, and has to elist the help of three robots to solve puzzles in order to escape. The world is made up of screens with exits to the north, south, east, west, that contain various hazards and obstacles. Your character can also enter any of the robots to see and change their internal wiring. Each robot had a battery, four thrusters, four tactile sensors, a periscope (to look out of), and an antenna. You programmed the robots by finding logic gates in the world and wiring them together with the thrusters, sensors, and battery. Therefore, you have a limited suppy of gates to go around. The antenna was used for the robots to communicate with each other, which they had to do for certain puzzles. To perform the wiring, the cursor changed to a soldering iron and you drew traces from one terminal to another. To ease the interior clutter (and to overcome the shortage of gates), you could also "burn" ICs and use them in robot wiring. You also had to manage your energy, since thrustors used up battery power and would eventually have to be rechagred with power crystals. I think there was some sort of critter that would eat your power crystals if it caught you.

For an early-mid 80's game, Robot Odyssey pushed the capabilities of the Apple ][, and I would consider a masterpiece of programming. I don't think I've see any other games like it since. The idea of wiring gates together (and probably the game engine itself) was also used in an earlier game by The Learning Company called Rocky's Boots. In this game, you used gates to construct an object-recognition circuit that powered a "boot" that would kick the object when it scrolled by on the screen.

1.3 Why isn't there an interface for xx system?

I cannot provide all the code by myself. My own experience with various display systems is limited. For example, until recently GNU Robots didn't even have an X Windows interface. Thanks to Tom Whittock.

However, if you're interested in looking in the code you'll see I've left hooks that allow me to plug in any display system that I want. I would very much like to have an interface for GNU Robots for pretty much any display system, but I need someone to write the hooks for me.

I'd really like to see someone write an interface for Gnome.


2.1 What do I need to compile GNU Robots?

GNU Robots requires that you have already compiled and installed GNU Guile. The current version (0.95) of GNU Robots uses GNU Guile 1.2. To download GNU Guile, go to the GNU web page.

2.2 How do I compile GNU Robots?

In the current version (0.95) of GNU Robots, do this:

  1. First, make sure you have compiled and installed GNU Guile.
  2. Run the configure script to configure the GNU Robots sources.
  3. Make sure the GNU Robots main Makefile is okay for your system.
  4. Type make

2.3 I had xx error when compiling GNU Robots

Please send your errors to the maintainer of GNU Robots, and we will try to help you. However, GNU Autoconf should detect most configurations and set up your Makefiles properly.


3.1 How do I run GNU Robots?

First, you need to decide what user interface to use: you can use the version that prints to a log file, the version for curses, or the version for X Windows.

The robot_logfile program is a text-only version of the game, suitable for sending to a log file. I use this for testing, but it is probably not the program you want to use. Instead, you'll want to use robot. The robot program is a curses-based version of the game, using an ASCII approximation of the game elements. For X Windows, type xrobot.

The usage for robots, xrobots, robots_logfile is as follows:

  Usage: robots [OPTION]... [FILE]
  GNU Robots - game/diversion where you construct a program for a
  little robot, then watch him explore a world.
    -f, --map-file=FILE    load this map file
    -s, --sheilds=N        set initial sheilds to N
    -e, --energy=N         set initial energy to N
    -V, --version          output version information and exit
    -h, --help             display this help and exit

3.2 How do I load my custom game map?

Type this:

    robots -f /path/to/your/map/

or this:

    robots --map-file=/path/to/your/map/

You will find sample maps in the maps/ directory.

3.3 How do I load my robot program?

Type this:

    robots /path/to/your/robot/file.scm

Other robot programs will be distributed in the scheme/ directory.