home *** CD-ROM | disk | FTP | other *** search
- .\" Copyright (c) 1980 Regents of the University of California.
- .\" All rights reserved. The Berkeley software License Agreement
- .\" specifies the terms and conditions for redistribution.
- .\"
- .\" @(#)rogue.me 6.2 (Berkeley) 4/28/86
- .\"
- .ds E \s-2<ESCAPE>\s0
- .ds R \s-2<RETURN>\s0
- .ds U \s-2UNIX\s0
- .ie t .ds _ \d\(mi\u
- .el .ds _ _
- .de Cs
- \&\\$3\*(lq\\$1\*(rq\\$2
- ..
- .sp 5
- .ce 1000
- .ps +4
- .vs +4p
- .b
- A Guide to the Dungeons of Doom
- .r
- .vs
- .ps
- .sp 2
- .i
- Michael C. Toy
- Kenneth C. R. C. Arnold
- .r
- .sp 2
- Computer Systems Research Group
- Department of Electrical Engineering and Computer Science
- University of California
- Berkeley, California 94720
- .sp 4
- .i ABSTRACT
- .ce 0
- .(b I F
- .bi Rogue
- is a visual CRT based fantasy game
- which runs under the \*U\(dg timesharing system.
- .(f
- \fR\(dg\*U is a trademark of Bell Laboratories\fP
- .)f
- This paper describes how to play rogue,
- and gives a few hints
- for those who might otherwise get lost in the Dungeons of Doom.
- .)b
- \".he '''\fBA Guide to the Dungeons of Doom\fP'
- \" .fo ''- % -''
- .eh 'USD:33-%''A Guide to the Dungeons of Doom'
- .oh 'A Guide to the Dungeons of Doom''USD:33-%'
- .sh 1 Introduction
- .pp
- You have just finished your years as a student at the local fighter's guild.
- After much practice and sweat you have finally completed your training
- and are ready to embark upon a perilous adventure.
- As a test of your skills,
- the local guildmasters have sent you into the Dungeons of Doom.
- Your task is to return with the Amulet of Yendor.
- Your reward for the completion of this task
- will be a full membership in the local guild.
- In addition,
- you are allowed to keep all the loot you bring back from the dungeons.
- .pp
- In preparation for your journey,
- you are given an enchanted mace,
- a bow, and a quiver of arrows
- taken from a dragon's hoard in the far off Dark Mountains.
- You are also outfitted with elf-crafted armor
- and given enough food to reach the dungeons.
- You say goodbye to family and friends for what may be the last time
- and head up the road.
- .pp
- You set out on your way to the dungeons
- and after several days of uneventful travel,
- you see the ancient ruins
- that mark the entrance to the Dungeons of Doom.
- It is late at night,
- so you make camp at the entrance
- and spend the night sleeping under the open skies.
- In the morning you gather your weapons,
- put on your armor,
- eat what is almost your last food,
- and enter the dungeons.
- .sh 1 "What is going on here?"
- .pp
- You have just begun a game of rogue.
- Your goal is to grab as much treasure as you can,
- find the Amulet of Yendor,
- and get out of the Dungeons of Doom alive.
- On the screen,
- a map of where you have been
- and what you have seen on the current dungeon level is kept.
- As you explore more of the level,
- it appears on the screen in front of you.
- .pp
- Rogue differs from most computer fantasy games in that it is screen oriented.
- Commands are all one or two keystrokes\**
- .(f
- \** As opposed to pseudo English sentences.
- .)f
- and the results of your commands
- are displayed graphically on the screen rather
- than being explained in words.\**
- .(f
- \** A minimum screen size of 24 lines by 80 columns is required.
- If the screen is larger, only the 24x80 section will be used
- for the map.
- .)f
- .pp
- Another major difference between rogue and other computer fantasy games
- is that once you have solved all the puzzles in a standard fantasy game,
- it has lost most of its excitement and it ceases to be fun.
- Rogue,
- on the other hand,
- generates a new dungeon every time you play it
- and even the author finds it an entertaining and exciting game.
- .sh 1 "What do all those things on the screen mean?"
- .pp
- In order to understand what is going on in rogue
- you have to first get some grasp of what rogue is doing with the screen.
- The rogue screen is intended
- to replace the \*(lqYou can see ...\*(rq descriptions
- of standard fantasy games.
- Figure 1 is a sample of what a rogue screen might look like.
- .(z
- .hl
- .nf
- .TS
- center;
- ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce0 ce.
- - - - - - - - - - - - -
- | . . . . . . . . . . +
- | . . @ . . . . ] . . |
- | . . . . B . . . . . |
- | . . . . . . . . . . |
- - - - - - + - - - - - -
- .TE
-
-
- .ce 1000
- Level: 1 Gold: 0 Hp: 12(12) Str: 16(16) Arm: 4 Exp: 1/0
-
- Figure 1
- .ce
- .hl
- .)z
- .sh 2 "The bottom line"
- .pp
- At the bottom line of the screen
- are a few pieces of cryptic information
- describing your current status.
- Here is an explanation of what these things mean:
- .ip Level \w'Level\ \ 'u
- This number indicates how deep you have gone in the dungeon.
- It starts at one and goes up as you go deeper into the dungeon.
- .ip Gold \w'Level\ \ 'u
- The number of gold pieces you have managed to find
- and keep with you so far.
- .ip Hp \w'Level\ \ 'u
- Your current and maximum health points.
- Health points indicate how much damage you can take before you die.
- The more you get hit in a fight,
- the lower they get.
- You can regain health points by resting.
- The number in parentheses
- is the maximum number your health points can reach.
- .ip Str \w'Level\ \ 'u
- Your current strength and maximum ever strength.
- This can be any integer less than or equal to 31,
- or greater than or equal to three.
- The higher the number,
- the stronger you are.
- The number in the parentheses
- is the maximum strength you have attained so far this game.
- .ip Arm \w'Level\ \ 'u
- Your current armor protection.
- This number indicates how effective your armor is
- in stopping blows from unfriendly creatures.
- The higher this number is,
- the more effective the armor.
- .ip Exp \w'Level\ \ 'u
- These two numbers give your current experience level
- and experience points.
- As you do things,
- you gain experience points.
- At certain experience point totals,
- you gain an experience level.
- The more experienced you are,
- the better you are able to fight and to withstand magical attacks.
- .sh 2 "The top line"
- .pp
- The top line of the screen is reserved
- for printing messages that describe things
- that are impossible to represent visually.
- If you see a \*(lq--More--\*(rq on the top line,
- this means that rogue wants to print another message on the screen,
- but it wants to make certain
- that you have read the one that is there first.
- To read the next message,
- just type a space.
- .sh 2 "The rest of the screen"
- .pp
- The rest of the screen is the map of the level
- as you have explored it so far.
- Each symbol on the screen represents something.
- Here is a list of what the various symbols mean:
- .ip @
- This symbol represents you, the adventurer.
- .ip "-\^|"
- These symbols represent the walls of rooms.
- .ip +
- A door to/from a room.
- .ip .
- The floor of a room.
- .ip #
- The floor of a passage between rooms.
- .ip *
- A pile or pot of gold.
- .ip )
- A weapon of some sort.
- .ip ]
- A piece of armor.
- .ip !
- A flask containing a magic potion.
- .ip ?
- A piece of paper, usually a magic scroll.
- .ip =
- A ring with magic properties
- .ip /
- A magical staff or wand
- .ip ^
- A trap, watch out for these.
- .ip %
- A staircase to other levels
- .ip :
- A piece of food.
- .ip A-Z
- The uppercase letters
- represent the various inhabitants of the Dungeons of Doom.
- Watch out, they can be nasty and vicious.
- .sh 1 Commands
- .pp
- Commands are given to rogue by typing one or two characters.
- Most commands can be preceded by a count to repeat them
- (e.g. typing
- .Cs 10s
- will do ten searches).
- Commands for which counts make no sense
- have the count ignored.
- To cancel a count or a prefix,
- type \*E.
- The list of commands is rather long,
- but it can be read at any time during the game with the
- .Cs ?
- command.
- Here it is for reference,
- with a short explanation of each command.
- .ip ?
- The help command.
- Asks for a character to give help on.
- If you type a
- .Cs * ,
- it will list all the commands,
- otherwise it will explain what the character you typed does.
- .ip /
- This is the \*(lqWhat is that on the screen?\*(rq command.
- A
- .Cs /
- followed by any character that you see on the level,
- will tell you what that character is.
- For instance,
- typing
- .Cs /@
- will tell you that the
- .Cs @
- symbol represents you, the player.
- .ip "h, H, ^H"
- Move left.
- You move one space to the left.
- If you use upper case
- .Cs h ,
- you will continue to move left until you run into something.
- This works for all movement commands
- (e.g.
- .Cs L
- means run in direction
- .Cs l )
- If you use the \*(lqcontrol\*(rq
- .Cs h ,
- you will continue moving in the specified direction
- until you pass something interesting or run into a wall.
- You should experiment with this,
- since it is a very useful command,
- but very difficult to describe.
- This also works for all movement commands.
- .ip j
- Move down.
- .ip k
- Move up.
- .ip l
- Move right.
- .ip y
- Move diagonally up and left.
- .ip u
- Move diagonally up and right.
- .ip b
- Move diagonally down and left.
- .ip n
- Move diagonally down and right.
- .ip t
- Throw an object.
- This is a prefix command.
- When followed with a direction
- it throws an object in the specified direction.
- (e.g. type
- .Cs th
- to throw
- something to the left.)
- .ip f
- Fight until someone dies.
- When followed with a direction
- this will force you to fight the creature in that direction
- until either you or it bites the big one.
- .ip m
- Move onto something without picking it up.
- This will move you one space in the direction you specify and,
- if there is an object there you can pick up,
- it won't do it.
- .ip z
- Zap prefix.
- Point a staff or wand in a given direction
- and fire it.
- Even non-directional staves must be pointed in some direction
- to be used.
- .ip ^
- Identify trap command.
- If a trap is on your map
- and you can't remember what type it is,
- you can get rogue to remind you
- by getting next to it and typing
- .Cs ^
- followed by the direction that would move you on top of it.
- .ip s
- Search for traps and secret doors.
- Examine each space immediately adjacent to you
- for the existence of a trap or secret door.
- There is a large chance that even if there is something there,
- you won't find it,
- so you might have to search a while before you find something.
- .ip >
- Climb down a staircase to the next level.
- Not surprisingly, this can only be done if you are standing on staircase.
- .ip <
- Climb up a staircase to the level above.
- This can't be done without the Amulet of Yendor in your possession.
- .ip "."
- Rest.
- This is the \*(lqdo nothing\*(rq command.
- This is good for waiting and healing.
- .ip ,
- Pick up something.
- This picks up whatever you are currently standing on,
- if you are standing on anything at all.
- .ip i
- Inventory.
- List what you are carrying in your pack.
- .ip I
- Selective inventory.
- Tells you what a single item in your pack is.
- .ip q
- Quaff one of the potions you are carrying.
- .ip r
- Read one of the scrolls in your pack.
- .ip e
- Eat food from your pack.
- .ip w
- Wield a weapon.
- Take a weapon out of your pack and carry it for use in combat,
- replacing the one you are currently using (if any).
- .ip W
- Wear armor.
- You can only wear one suit of armor at a time.
- This takes extra time.
- .ip T
- Take armor off.
- You can't remove armor that is cursed.
- This takes extra time.
- .ip P
- Put on a ring.
- You can wear only two rings at a time
- (one on each hand).
- If you aren't wearing any rings,
- this command will ask you which hand you want to wear it on,
- otherwise, it will place it on the unused hand.
- The program assumes that you wield your sword in your right hand.
- .ip R
- Remove a ring.
- If you are only wearing one ring,
- this command takes it off.
- If you are wearing two,
- it will ask you which one you wish to remove,
- .ip d
- Drop an object.
- Take something out of your pack and leave it lying on the floor.
- Only one object can occupy each space.
- You cannot drop a cursed object at all
- if you are wielding or wearing it.
- .ip c
- Call an object something.
- If you have a type of object in your pack
- which you wish to remember something about,
- you can use the call command to give a name to that type of object.
- This is usually used when you figure out what a
- potion, scroll, ring, or staff is
- after you pick it up,
- or when you want to remember
- which of those swords in your pack you were wielding.
- .ip D
- Print out which things you've discovered something about.
- This command will ask you what type of thing you are interested in.
- If you type the character for a given type of object
- (\fIe.g.\fP
- .Cs !
- for potion)
- it will tell you which kinds of that type of object you've discovered
- (\fIi.e.\fP, figured out what they are).
- This command works for potions, scrolls, rings, and staves and wands.
- .ip o
- Examine and set options.
- This command is further explained in the section on options.
- .ip ^R
- Redraws the screen.
- Useful if spurious messages or transmission errors
- have messed up the display.
- .ip ^P
- Print last message.
- Useful when a message disappears before you can read it.
- This only repeats the last message
- that was not a mistyped command
- so that you don't loose anything by accidentally typing
- the wrong character instead of ^P.
- .ip \*E
- Cancel a command, prefix, or count.
- .ip !
- Escape to a shell for some commands.
- .ip Q
- Quit.
- Leave the game.
- .ip S
- Save the current game in a file.
- It will ask you whether you wish to use the default save file.
- .i Caveat :
- Rogue won't let you start up a copy of a saved game,
- and it removes the save file as soon as you start up a restored game.
- This is to prevent people from saving a game just before a dangerous position
- and then restarting it if they die.
- To restore a saved game,
- give the file name as an argument to rogue.
- As in
- .ti +1i
- .nf
- % rogue \fIsave\*_file\fP
- .ip
- To restart from the default save file (see below),
- run
- .ti +1i
- .nf
- % rogue \-r
- .ip v
- Prints the program version number.
- .ip )
- Print the weapon you are currently wielding
- .ip ]
- Print the armor you are currently wearing
- .ip =
- Print the rings you are currently wearing
- .ip @
- Reprint the status line on the message line
- .sh 1 Rooms
- .pp
- Rooms in the dungeons are either lit or dark.
- If you walk into a lit room,
- the entire room will be drawn on the screen as soon as you enter.
- If you walk into a dark room,
- it will only be displayed as you explore it.
- Upon leaving a room,
- all monsters inside the room
- are erased from the screen.
- In the darkness you can only see one space
- in all directions around you.
- A corridor is always dark.
- .sh 1 Fighting
- .pp
- If you see a monster and you wish to fight it,
- just attempt to run into it.
- Many times a monster you find will mind its own business
- unless you attack it.
- It is often the case that discretion is the better part of valor.
- .sh 1 "Objects you can find"
- .pp
- When you find something in the dungeon,
- it is common to want to pick the object up.
- This is accomplished in rogue by walking over the object
- (unless you use the
- .Cs m
- prefix, see above).
- If you are carrying too many things,
- the program will tell you and it won't pick up the object,
- otherwise it will add it to your pack
- and tell you what you just picked up.
- .pp
- Many of the commands that operate on objects must prompt you
- to find out which object you want to use.
- If you change your mind and don't want to do that command after all,
- just type an \*E and the command will be aborted.
- .pp
- Some objects, like armor and weapons,
- are easily differentiated.
- Others, like scrolls and potions,
- are given labels which vary according to type.
- During a game,
- any two of the same kind of object
- with the same label
- are the same type.
- However,
- the labels will vary from game to game.
- .pp
- When you use one of these labeled objects,
- if its effect is obvious,
- rogue will remember what it is for you.
- If it's effect isn't extremely obvious
- you will be asked what you want to scribble on it
- so you will recognize it later,
- or you can use the
- .Cs call
- command
- (see above).
- .sh 2 Weapons
- .pp
- Some weapons,
- like arrows,
- come in bunches,
- but most come one at a time.
- In order to use a weapon,
- you must wield it.
- To fire an arrow out of a bow,
- you must first wield the bow,
- then throw the arrow.
- You can only wield one weapon at a time,
- but you can't change weapons if the one
- you are currently wielding is cursed.
- The commands to use weapons are
- .Cs w
- (wield)
- and
- .Cs t
- (throw).
- .sh 2 Armor
- .pp
- There are various sorts of armor lying around in the dungeon.
- Some of it is enchanted,
- some is cursed,
- and some is just normal.
- Different armor types have different armor protection.
- The higher the armor protection,
- the more protection the armor affords against the blows of monsters.
- Here is a list of the various armor types and their normal armor protection:
- .(b
- .TS
- box center;
- l r.
- \ \ \fIType Protection\fP
- None 0
- Leather armor 2
- Studded leather / Ring mail 3
- Scale mail 4
- Chain mail 5
- Banded mail / Splint mail 6
- Plate mail 7
- .TE
- .)b
- .lp
- If a piece of armor is enchanted,
- its armor protection will be higher than normal.
- If a suit of armor is cursed,
- its armor protection will be lower,
- and you will not be able to remove it.
- However, not all armor with a protection that is lower than normal is cursed.
- .pp
- The commands to use weapons are
- .Cs W
- (wear)
- and
- .Cs T
- (take off).
- .sh 2 Scrolls
- .pp
- Scrolls come with titles in an unknown tongue\**.
- .(f
- \** Actually, it's a dialect spoken only by the twenty-seven members
- of a tribe in Outer Mongolia,
- but you're not supposed to
- .i know
- that.
- .)f
- After you read a scroll,
- it disappears from your pack.
- The command to use a scroll is
- .Cs r
- (read).
- .sh 2 Potions
- .pp
- Potions are labeled by the color of the liquid inside the flask.
- They disappear after being quaffed.
- The command to use a scroll is
- .Cs q
- (quaff).
- .sh 2 "Staves and Wands"
- .pp
- Staves and wands do the same kinds of things.
- Staves are identified by a type of wood;
- wands by a type of metal or bone.
- They are generally things you want to do to something
- over a long distance,
- so you must point them at what you wish to affect
- to use them.
- Some staves are not affected by the direction they are pointed, though.
- Staves come with multiple magic charges,
- the number being random,
- and when they are used up,
- the staff is just a piece of wood or metal.
- .pp
- The command to use a wand or staff is
- .Cs z
- (zap)
- .sh 2 Rings
- .pp
- Rings are very useful items,
- since they are relatively permanent magic,
- unlike the usually fleeting effects of potions, scrolls, and staves.
- Of course,
- the bad rings are also more powerful.
- Most rings also cause you to use up food more rapidly,
- the rate varying with the type of ring.
- Rings are differentiated by their stone settings.
- The commands to use rings are
- .Cs P
- (put on)
- and
- .Cs R
- (remove).
- .sh 2 Food
- .pp
- Food is necessary to keep you going.
- If you go too long without eating you will faint,
- and eventually die of starvation.
- The command to use food is
- .Cs e
- (eat).
- .sh 1 Options
- .pp
- Due to variations in personal tastes
- and conceptions of the way rogue should do things,
- there are a set of options you can set
- that cause rogue to behave in various different ways.
- .sh 2 "Setting the options"
- .pp
- There are two ways to set the options.
- The first is with the
- .Cs o
- command of rogue;
- the second is with the
- .Cs ROGUEOPTS
- environment variable\**.
- .(f
- \** On Version 6 systems,
- there is no equivalent of the ROGUEOPTS feature.
- .br
- .)f
- .br
- .sh 3 "Using the `o' command"
- .pp
- When you type
- .Cs o
- in rogue,
- it clears the screen
- and displays the current settings for all the options.
- It then places the cursor by the value of the first option
- and waits for you to type.
- You can type a \*R
- which means to go to the next option,
- a
- .Cs \-
- which means to go to the previous option,
- an \*E
- which means to return to the game,
- or you can give the option a value.
- For boolean options this merely involves typing
- .Cs t
- for true or
- .Cs f
- for false.
- For string options,
- type the new value followed by a \*R.
- .sh 3 "Using the ROGUEOPTS variable"
- .pp
- The ROGUEOPTS variable is a string
- containing a comma separated list of initial values
- for the various options.
- Boolean variables can be turned on by listing their name
- or turned off by putting a
- .Cs no
- in front of the name.
- Thus to set up an environment variable so that
- .b jump
- is on,
- .b terse
- is off,
- and the
- .b name
- is set to \*(lqBlue Meanie\*(rq,
- use the command
- .nf
- .ti +3n
- % setenv ROGUEOPTS "jump,noterse,name=Blue Meanie"\**
- .fi
- .(f
- \**
- For those of you who use the Bourne shell sh (1), the commands would be
- .in +3
- .nf
- $ ROGUEOPTS="jump,noterse,name=Blue Meanie"
- $ export ROGUEOPTS
- .fi
- .in +0
- .)f
- .sh 2 "Option list"
- .pp
- Here is a list of the options
- and an explanation of what each one is for.
- The default value for each is enclosed in square brackets.
- For character string options,
- input over fifty characters will be ignored.
- .ip "\fBterse\fP [\fI\^noterse\^\fP]"
- Useful for those who are tired of the sometimes lengthy messages of rogue.
- This is a useful option for playing on slow terminals,
- so this option defaults to
- .i terse
- if you
- are on a slow (1200 baud or under) terminal.
- .ip "\fBjump\fP [\fI\^nojump\^\fP]"
- If this option is set,
- running moves will not be displayed
- until you reach the end of the move.
- This saves considerable cpu and display time.
- This option defaults to
- .i jump
- if you are using a slow terminal.
- .ip "\fBflush\fP [\fI\^noflush\^\fP]"
- All typeahead is thrown away after each round of battle.
- This is useful for those who type far ahead
- and then watch in dismay as a Bat kills them.
- .ip "\fBseefloor\fP [\fI\^seefloor\^\fP]"
- Display the floor around you on the screen
- as you move through dark rooms.
- Due to the amount of characters generated,
- this option defaults to
- .i noseefloor
- if you are using a slow terminal.
- .ip "\fBpassgo\fP [\fI\^nopassgo\^\fP]"
- Follow turnings in passageways.
- If you run in a passage
- and you run into stone or a wall,
- rogue will see if it can turn to the right or left.
- If it can only turn one way,
- it will turn that way.
- If it can turn either or neither,
- it will stop.
- This algorithm can sometimes lead to slightly confusing occurrences
- which is why it defaults to \fInopassgo\fP.
- .ip "\fBtombstone\fP [\fI\^tombstone\^\fP]"
- Print out the tombstone at the end if you get killed.
- This is nice but slow, so you can turn it off if you like.
- .ip "\fBinven\fP [\fI\^overwrite\^\fP]"
- Inventory type.
- This can have one of three values:
- .i overwrite ,
- .i slow ,
- or
- .i clear .
- With
- .i overwrite
- the top lines of the map are overwritten
- with the list
- when inventory is requested
- or when
- \*(lqWhich item do you wish to \fB. . .\fP? \*(rq questions
- are answered with a
- .Cs * .
- However, if the list is longer than a screenful,
- the screen is cleared.
- With
- .i slow ,
- lists are displayed one item at a time on the top of the screen,
- and with
- .i clear ,
- the screen is cleared,
- the list is displayed,
- and then the dungeon level is re-displayed.
- Due to speed considerations,
- .i clear
- is the default for terminals without
- clear-to-end-of-line capabilities.
- .ip "\fBname\fP [account name]"
- This is the name of your character.
- It is used if you get on the top ten scorer's list.
- .ip "\fBfruit\fP [\fI\^slime-mold\^\fP]"
- This should hold the name of a fruit that you enjoy eating.
- It is basically a whimsey that rogue uses in a couple of places.
- .ip "\fBfile\fP [\fI\^~/rogue.save\^\fP]"
- The default file name for saving the game.
- If your phone is hung up by accident,
- rogue will automatically save the game in this file.
- The file name may start with the special character
- .Cs ~
- which expands to be your home directory.
- .sh 1 Scoring
- .pp
- Rogue usually maintains a list
- of the top scoring people or scores on your machine.
- Depending on how it is set up,
- it can post either the top scores
- or the top players.
- In the latter case,
- each account on the machine
- can post only one non-winning score on this list.
- If you score higher than someone else on this list,
- or better your previous score on the list,
- you will be inserted in the proper place
- under your current name.
- How many scores are kept
- can also be set up by whoever installs it on your machine.
- .pp
- If you quit the game, you get out with all of your gold intact.
- If, however, you get killed in the Dungeons of Doom,
- your body is forwarded to your next-of-kin,
- along with 90% of your gold;
- ten percent of your gold is kept by the Dungeons' wizard as a fee\**.
- .(f
- \** The Dungeon's wizard is named Wally the Wonder Badger.
- Invocations should be accompanied by a sizable donation.
- .)f
- This should make you consider whether you want to take one last hit
- at that monster and possibly live,
- or quit and thus stop with whatever you have.
- If you quit, you do get all your gold,
- but if you swing and live, you might find more.
- .pp
- If you just want to see what the current top players/games list is,
- you can type
- .ti +1i
- .nf
- % rogue \-s
- .br
- .sh 1 Acknowledgements
- .pp
- Rogue was originally conceived of by Glenn Wichman and Michael Toy.
- Ken Arnold and Michael Toy then smoothed out the user interface,
- and added jillions of new features.
- We would like to thank
- Bob Arnold,
- Michelle Busch,
- Andy Hatcher,
- Kipp Hickman,
- Mark Horton,
- Daniel Jensen,
- Bill Joy,
- Joe Kalash,
- Steve Maurer,
- Marty McNary,
- Jan Miller,
- and
- Scott Nelson
- for their ideas and assistance;
- and also the teeming multitudes
- who graciously ignored work, school, and social life to play rogue
- and send us bugs, complaints, suggestions, and just plain flames.
- And also Mom.
-