robugs.doc, Robugs 1.3 beta 3/14/92
Robugs is a game where you design and build miniature robots
out of simple logic components. The robots (referred to as robugs
from now on) interact on a 2 dimensional playfield which you the
player also design. There is no score or goal to this game. The
purpose is to have fun designing and watching your own robug
worlds live, die and change. In addition, you can learn a little
about simple binary logic.
See readme.1st file that accompanies this release.
Robugs is a GEM based game. As such I have tried to make it as
easy to use as possible. The instructions that follow don't
describe all the features, but should give you enough information
to get started. The rest of the features you should be able to
figure out on your own. Remember, this is a beta release of a
prototype game so not everything works the way it is suppose to.
There are some known bugs, as well as, I imagine, bugs I have not
There are two types of windows with corresponding file types
in this game: Playfield windows/files and Robug windows/files.
Playfield files have a .PF extension and robug files have a .RB
extension by convention, however these extensions are optional.
You can open an existing file of either type with the 'Open
Playfield' or 'Open Robug' menu items or create new ones with the
'New robug' or 'New playfield' items. A playfield or robug can be
saved by selecting the playfield's or robug's window and then
selecting 'save' or 'save as' (to give it a new name). You may
have multiple windows open at a time.
THE ROBUG WINDOW
A robug window shows the circuitry of an individual robug and
lets you edit the circuitry. The left side of the window is a
display of the robug circuit board. The right side is a palette
of logic circuit components. Components can be picked up from the
circuit board or palette by clicking on them with the left mouse
button and put down by again clicking with the left mouse button.
A component can be rotated through 90 degree intervals by picking
it up and then pressing the right mouse button before putting it
A help window for a component can be displayed by clicking on
the component with the right mouse button without picking it up.
The help windows give a description of the component and provide
a logic truth table for it.
A special item that can be picked up is the soldering iron
(located in the top of the palette to the right of the arrow).
The soldering iron must be used to wire the components together.
Wires can only join inputs to outputs (or visa versa). To wire an
input of one component to the output of another, pick up the
soldering iron and click on the input (or output) connector with
the left mouse button until a circular dot appears there, then
click on the output (or input) of the other component until a
line connects the two points. To remove a connection pick up and
put down the two components that are connected (This is not the
best solution but it works for now). The positions of components
relative to one another on the circuit board do not make a
difference to the operation of the robug, however some components
are direction sensitive (bumpers, radar, thrusters and gun) while
the rest are not. Other than that, the wiring (or connections)
are all that matter for logically correct operation.
You can pick up a copy of the robug in the robug window by
selecting the 'Place' or 'Pickup' menu options. This copy may
then be dropped on any playfield window (as described below) to
include it in a game.
THE PLAYFIELD WINDOW
You edit the playfield by drawing walls and food with the left
mouse button and erasing them with the right. If the 'Draw Food'
menu item is selected (checked) then food is drawn, otherwise
walls are drawn. You can also use the scatter food/wall/robugs
options to randomly place these items on the playfield according
to a fixed number or density (0 - 100%).
Robugs can be picked up off the playfield by double clicking
on them with the left mouse button. When a robug is picked up it
becomes the mouse pointer and can be rotated in 90 degree
intervals by pressing the right mouse button. A robug is dropped
on the playfield with the left button. If the 'Replicate' menu
item is selected then dropping a robug on the playfield will
cause a copy (clone) to be dropped there instead. One or more
robugs on the playfield can be selected (appear as a color
inverted block) without picking them up by single clicking on
them with the left mouse button. Certain menu options, such as
'Circuitry', 'Type', 'Kill' and 'Scatter Robug' can only be used
if robugs are selected. Some of these, in particular 'Type' and
'Kill' can be used on more than one robug at a time. For example,
you can give a group of selected robugs the same type all at
once, or kill them all at once.
You can edit the circuitry of a robug on the playfield by
selecting the robug and then selecting 'circuitry' from the menu.
If you do this while the game is running then you can watch the
robug's actions change while you change its circuitry.
You can open another window onto the same playfield by
selecting the appropriate playfield window and then picking
'Duplicate' from the Window menu. This allows you to view more
than one area of the playfield at the same time. Note this is not
the same as opening the same playfield file from the file menu
more than once. GEM only allows up to 4 open windows at a time so
if you have 4 windows open (playfield + robug windows) you will
have to close one before opening any new windows.
A playfield window allows you to track one robug in it. To
track a robug select the robug and then select 'Track Robug' from
the Window menu. The window will then automatically readjust its
view when necessary to keep the robug being tracked in sight. To
turn off tracking, select the window and then 'Track Off' from
the Window menu. If you have multiple windows open on the same
playfield you can have each window track a separate robug.
Robugs can attack one another and they can reproduce. Robugs
attack by using guns (you must include them in a robugs design if
you want them to have attack capability.) What happens when they
are shot depends on the games death options which you can change
at any time.
Robugs reproduce by moving onto a food square, either by
chance or by design (robugs can be built to detect and move
toward food.) The food is then consumed and a clone of the robug
who ate the food is produced. A maximum of 1024 robugs per game
can exist at a time. If this maximum is reached, or your machine
runs out of memory, reproduction will fail. You can also clone
robugs yourself. To do this, pick up a robug, make sure the
'replicate' menu item is checked and proceed to drop clones on
the playfield. When you have enough, deselect the replicate menu
There are three types of robugs, set using the 'Type' dialog
box: team robugs, social robugs and independent robugs. The type
of a robug will determine what the enemy radar component sees as
an enemy. If independent, the enemy radar will view any other
robug as a potential enemy. If social, the radar will view any
other robug not of the exact same design as itself as its enemy.
(That is, they socialize only with their own "species".) If the
robug is a team robug, its enemy radar will view any other robug
not in its team as an enemy. There are four different teams
(green, red, blue and yellow) and any collection of robugs,
however different in design, can be made members of the same
team. In addition, the type dialog box has 'Protected' and
'Unprotected' fields for setting whether a robug is protected or
not. A protected robug is not effected in any way when shot.
Social robugs are colored purple and independent robugs are white
. (Of course you can't see the colors if your using the
Robugs are built out of 3 types of components: Logic gates,
effectors and detectors. The idea is to connect these components
in some useful way. The components operate according to binary
logic. They have inputs and/or outputs that can have only two
states - true or false (1 or 0 where 1 represents true.) If you
are not familiar with binary logic you might want to read an
introductory book on the subject (if your keen) though you can
probably figure it out by dissecting the many example robugs that
are included in this release.
Detectors (blue) are output components used by robugs to sense
their surroundings. There are only 3 detectors: Bumpers, enemy
radar and food radar. Bumpers can tell when a robug is touching
something on one of its four sides. An enemy radar detects
enemies in one of four directions and a food radar detects food
in one of four directions. Which direction these detect in
depends which way you have them pointing in the robug. If a
detector detects something its output is true, otherwise it is
Effectors (green) are input components that cause the robot to
do something physical such as move, turn or shoot if their inputs
are true. There are four kinds: Thrusters, guns and left and
right rotators. Rotation occurs in 90 degree intervals so robugs
can face in four directions only. It is important to note that
the actions of effectors occur in a particular order, that order
being first guns, then rotators, then thrusters. For example, if
a robug has a gun, rotator and thruster, all with a true state on
their inputs at the same time then first the gun will fire, then
it will turn, then it will thrust (move).
Logic gates (white) provide the "brains" of the robug. They
are used to process and build on the raw information from the
detectors. They take one or two inputs from the outputs of
detectors and the outputs of other logic gates and provide a
single processed output. They include AND, OR, NOT and XOR
(exclusive OR) gates. There is also a simple Toggle FlipFlop to
act as a primitive sort of memory cell. While not a true logic
gate, I have included something called a Random Gate, the output
of which is randomly true or false. It has no input which is why
it is not really a logic gate but it is useful for introducing
random behaviour in a robug.
The on-line help for components includes a diagram of the
component and, in the case of the logic gates, a truth table to
describe it behaviour (shows the output that results from all the
different possible inputs.)
The following options are available under the Game menu. They
affect the game in the currently selected playfield window in a
global fashion. Their settings are saved when you save a
1. No death (nothing happens to a robug when it is shot.)
3. Dies and turns into a food square.
4. Gets captured (its type becomes that of the robug who shot
5. Gets captured and converted (into an exact clone of the
robug who shot it.)
1. Randomize direction: if selected, when a robug moves over a
food square and replicates, the new robug will have a random
direction. Otherwise the new robug will have the same
direction as its parent.
This dialog box allows you to set the speed that missiles
move at (relative to game speed) and their maximum range.
This dialog box allows you to set the maximum range a radar
(food radar or enemy radar) can detect objects at and
whether or not the radar can see through walls.
That's all for the instructions. The rest you can figure out
by experimenting, looking at the example games and using the