Annotation of early-roguelike/rogue3/rogue36.html, Revision 1.1.1.1
1.1 rubenllo 1: <html>
2: <head>
3: <title></title>
4: </head>
5: <body>
6:
7: <h1 align=center><b>A Guide to the Dungeons of Doom</b></h1>
8:
9: <h2 align=center><i>Michael C. Toy</i></h2>
10:
11: <h3 align=center>
12: Computer Systems Research Group<br>
13: Department of Electrical Engineering and Computer Science<br>
14: University of California<br>
15: Berkeley, California 94720</h3>
16:
17: <h2 align=center><i>ABSTRACT</i></h2>
18:
19: <blockquote>
20: <blockquote>
21: <p align="justify"><font size="2">Rogue is a visual CRT based fantasy game which runs under the
22: UNIX timesharing system. This paper describes how to play rogue, and gives a few hints for
23: those who might otherwise get
24: lost in the Dungeons of Doom.</font></p>
25: </blockquote>
26: </blockquote>
27:
28: <h2 align="justify"><b>1. Introduction</b></h2>
29:
30: <p align="justify">You have just finished your years as a
31: student at the local fighter’s guild. After much
32: practice and sweat you have finally completed your training
33: and are ready to embark upon a perilous adventure. As a test
34: of your skills, the local guildmasters have sent you into
35: the Dungeons of Doom. Your task is to return with the Amulet
36: of Yendor. Your reward for the completion of this task will
37: be a full membership in the local guild. In addition, you
38: are allowed to keep all the loot you bring back from the
39: dungeons.</p>
40:
41: <p align="justify">In preparation for your journey, you are
42: given an enchanted sword, taken
43: from a dragon’s hoard in the far off Dark Mountains.
44: You are also outfitted with elf-crafted armor and given
45: enough food to reach the dungeons. You say goodbye to family
46: and friends for what may be the last time and head up the
47: road.</p>
48:
49: <p align="justify">You set out on your way to the dungeons and
50: after several days of uneventful travel, you see the
51: ancient ruins that mark the entrance to the Dungeons of
52: Doom. It is late at night so you make camp at the entrance
53: and spend the night sleeping under the open skies. In the
54: morning you gather your sword, put on your armor, eat what
55: is almost your last food and enter the
56: dungeons.</p>
57:
58: <h2 align="justify"><b>2. What is going on here?</b></h2>
59:
60: <p align="justify">You have just begun a game of rogue. Your
61: goal is to grab as much treasure as you can, find the Amulet
62: of Yendor, and get out of the Dungeons of Doom alive. On the
63: screen, a map of where you have been and what you have seen
64: on the current dungeon level is kept. As you explore more of
65: the level, it appears on the screen in front of
66: you.</p>
67:
68: <p align="justify">Rogue differs from most computer fantasy
69: games in that it is screen oriented. Commands are all one or
70: two keystrokes<sup>1 </sup>and the
71: results of your commands are displayed graphically on the
72: screen rather than being explained in words<sup>2</sup>.</p>
73:
74: <p align="justify">Another major difference between rogue and
75: other computer fantasy games is that once you have solved
76: all the puzzles in a standard fantasy game, it has lost most
77: of its excitement and it ceases to be fun. Rogue on the
78: other hand generates a new dungeon every time you play it
79: and even the author finds it an entertaining and exciting
80: game.</p>
81:
82: <h2 align="justify"><b>3. What do all those things on the screen mean?</b></h2>
83:
84: <p align="justify">In order to understand what is going on in
85: rogue you have to first get some grasp of what rogue is
86: doing with the screen. The rogue screen is intended to
87: replace the “You can see ...” descriptions of
88: standard fantasy games. Here is a sample of what a
89: rogue screen might look like.</p>
90:
91: <div align="center"><pre>
92: ---------------------
93: |...................+
94: |...@...........[...|
95: |........B..........|
96: |...................|
97: --------+------------
98:
99: Level: 1 Gold: 0 Hp: 12(12) Str: 16 Ac: 6 Exp: 1/0
100: </pre></div>
101:
102: <h3 align="justify"><b>3.1. The bottom line</b></h3>
103:
104: <p align="justify">At the bottom line of the screen is a few
105: pieces of cryptic information describing your current
106: status. Here is an explanation of what these things
107: mean:</p>
108:
109: <table border="0" width="100%" id="table1" cellspacing="3" cellpadding="3">
110: <tr>
111: <td><p align="justify">Level </p></td>
112: <td><p align="justify">This number indicates how deep you have gone in the
113: dungeon. It starts at one and goes up forever<sup>2</sup>.</p></td>
114: </tr>
115: <tr>
116: <td><p align="justify">Gold</p></td>
117: <td><p align="justify">The number of gold pieces you have managed to find
118: and keep with you so far.</td>
119: </tr>
120: <tr>
121: <td><p align="justify">Hp</p></td>
122: <td><p align="justify">Your current and maximum hit points.
123: Health points indicate how much damage you can take before
124: you die. The more you get hit in a fight, the lower they
125: get. You can regain health points by resting. The number in
126: parentheses is the maximum number your hit points can
127: reach.</p></td>
128: </tr>
129: <tr>
130: <td><p align="justify">Str</p></td>
131: <td><p align="justify">Your current strength. This can be any
132: integer less than or equal to eighteen. The higher the number,
133: the stronger you are.</td>
134: </tr>
135: <tr>
136: <td><p align="justify">Ac</p></td>
137: <td><p align="justify">Your current armor class. This number
138: indicates how effective your armor is in stopping blows from
139: unfriendly creatures. The lower this number is, the more
140: effective the armor.</p></td>
141: </tr>
142: <tr>
143: <td><p align="justify">Exp</p></td>
144: <td><p align="justify">These two numbers give your current experience
145: level and experience points. As you do things, you gain experience
146: points. At certain experience point totals, you gain an
147: experience level. The more experienced you are, the better
148: you are able to fight and to withstand magical attacks.</p></td>
149: </tr>
150: </table>
151:
152: <h3 align="justify"><b>3.2. The top line</b></h3>
153:
154: <p align="justify">The top line of the screen is reserved for
155: printing messages that describe things that are impossible
156: to represent visually. If you see a “--More--”
157: on the top line, this means that rogue wants to print
158: another message on the screen, but it wants to make certain
159: that you have read the one that is there first. To read the
160: next message, just type a space.</p>
161:
162: <h3 align="justify"><b>3.3. The rest of the screen</b></h3>
163:
164: <p align="justify">The rest of the screen is the map of the
165: level as you have explored it so far. Each symbol on the
166: screen represents something. Here is a list of what the
167: various symbols mean:</p>
168:
169: <table border="0" width="100%" id="table2" cellspacing="3" cellpadding="3">
170: <tr>
171: <td>@</td>
172: <td><p align="justify">This symbol represents you, the adventurer.</p></td>
173: </tr>
174: <tr>
175: <td>- |</td>
176: <td><p align="justify">These symbols represent the walls of rooms.</p></td>
177: </tr>
178: <tr>
179: <td>+</td>
180: <td>
181: <p align="justify">A door to/from a room.</p></td>
182: </tr>
183: <tr>
184: <td>.</td>
185: <td><p align="justify">The floor of a room.</p></td>
186: </tr>
187: <tr>
188: <td>#</td>
189: <td><p align="justify">The floor of a passage between rooms.</p></td>
190: </tr>
191: <tr>
192: <td>*</td>
193: <td><p align="justify">A pile or pot of gold.</p></td>
194: </tr>
195: <tr>
196: <td>)</td>
197: <td><p align="justify">A weapon of some sort.</p></td>
198: </tr>
199: <tr>
200: <td>]</td>
201: <td><p align="justify">A piece of armor.</p></td>
202: </tr>
203: <tr>
204: <td>!</td>
205: <td><p align="justify">A flask containing a magic potion.</p></td>
206: </tr>
207: <tr>
208: <td>?</td>
209: <td><p align="justify">A piece of paper, usually a magic scroll.</p></td>
210: </tr>
211: <tr>
212: <td>^</td>
213: <td><p align="justify">A trap, watch out for these.</p></td>
214: </tr>
215: <tr>
216: <td>%</td>
217: <td><p align="justify">The passage leading down to the next level.</p></td>
218: </tr>
219: <tr>
220: <td>:</td>
221: <td><p align="justify">A piece of food.</p></td>
222: </tr>
223: <tr>
224: <td>A-Z </td>
225: <td><p align="justify">The uppercase letters represent the various
226: inhabitants of the Dungeons of Doom. Watch out, they can be mean.</p></td>
227: </tr>
228: </table>
229:
230: <h2 align="justify"><b>4. Commands</b></h2>
231:
232: <p align="justify">Commands are given to rogue by pressing single letters.
233: Most commands can be preceded by a count to repeat them
234: (e.g. typing "10s" will do ten searches) The list
235: of commands is rather long, but it can be read at any time
236: during the game with the ? command. Here it is for
237: reference, with a short explanation of each command.</p>
238:
239: <div align="center">
240: <table border="0" cellspacing="3" cellpadding="3" id="table3">
241: <tr>
242: <td>?</td>
243: <td><p align="justify">The help command. Asks for a character to give help
244: on. If you type a "*", it will list all the commands,
245: otherwise it will explain what the character you typed
246: does.</p></td>
247: </tr>
248: <tr>
249: <td>/</td>
250: <td align="justify"><p>This is the "What is that on the screen?"
251: command. A "/" followed by any character that you
252: see on the level, will tell you what that character is. For
253: instance, typing "/@" will tell you that the @
254: symbol represents you, the player.</p></td>
255: </tr>
256: <tr>
257: <td colspan="2">h, H</td>
258: </tr>
259: <tr>
260: <td> </td>
261: <td><p align="justify">Move left. You move one space to the left. If you use
262: upper case h, you will continue to move left until you run into something.
263: This works for all movement commands (e.g. "L" means run in direction
264: "l")</p></td>
265: </tr>
266: <tr>
267: <td>j</td>
268: <td><p align="justify">Move down.</p></td>
269: </tr>
270: <tr>
271: <td>k</td>
272: <td><p align="justify">Move up.</p></td>
273: </tr>
274: <tr>
275: <td>l</td>
276: <td><p align="justify">Move right.</p></td>
277: </tr>
278: <tr>
279: <td>y</td>
280: <td><p align="justify">Move diagonally up and left.</p></td>
281: </tr>
282: <tr>
283: <td>u</td>
284: <td><p align="justify">Move diagonally up and right.</p></td>
285: </tr>
286: <tr>
287: <td>b</td>
288: <td><p align="justify">Move diagonally down and left.</p></td>
289: </tr>
290: <tr>
291: <td>n</td>
292: <td><p align="justify">Move diagonally down and right.</p></td>
293: </tr>
294: <tr>
295: <td>t</td>
296: <td><p align="justify">Throw an object. This is a prefix command. When
297: followed with a direction it throws an object in the specified direction.
298: (e.g. type “th” to throw something to the left.)</p></td>
299: </tr>
300: <tr>
301: <td>f</td>
302: <td><p align="justify">Find prefix. When followed by a direction it means to
303: continue moving in the specified direction until you pass
304: something interesting or run into a wall.</p></td>
305: </tr>
306: <tr>
307: <td>t</td>
308: <td><p align="justify">Throw an object. This is a prefix command. Follow it
309: with a direction and you throw an object in the specified
310: direction. (e.g. type "th" to throw something
311: left.)</p></td>
312: </tr>
313: <tr>
314: <td>></td>
315: <td><p align="justify">If you are standing over the passage down to the next
316: level, this command means to climb down.</p></td>
317: </tr>
318: <tr>
319: <td>s</td>
320: <td><p align="justify">Search for traps and secret doors. Examine each space
321: immediately adjacent to you for the existence of a trap or
322: secret door. There is a large chance that even if there is
323: something there, you won’t find it so you might have
324: to search a while before you find something.</p></td>
325: </tr>
326: <tr>
327: <td> </td>
328: <td><p align="justify">(space) Rest. This is the "do nothing"
329: command. This is good for waiting and healing.</p></td>
330: </tr>
331: <tr>
332: <td align="left" valign="top">
333: <p>i</td>
334: <td align="justify">
335: <p>Inventory. List what you are carrying in your pack.</td>
336: </tr>
337: <tr>
338: <td>I</td>
339: <td><p align="justify">Selective inventory. Tells you what a single item in
340: your pack is.</p></td>
341: </tr>
342: <tr>
343: <td>q</td>
344: <td><p align="justify">Quaff. Drink one of the potions you are
345: carrying.</p></td>
346: </tr>
347: <tr>
348: <td>r</td>
349: <td><p align="justify">Read. Read one of the scrolls in your pack.</p></td>
350: </tr>
351: <tr>
352: <td>e</td>
353: <td><p align="justify">Eat food. Take some food out of your pack and eat
354: it.</p></td>
355: </tr>
356: <tr>
357: <td>w</td>
358: <td><p align="justify">Wield a weapon. Take a weapon out of your pack and
359: carry it. You must be wielding weapon to use it (except to throw
360: things). To fire an arrow, you must wield the bow. You can
361: only wield one weapon at a time.</p></td>
362: </tr>
363: <tr>
364: <td>W</td>
365: <td><p align="justify">Wear armor. Take a piece of armor out of your pack
366: and put it on. You can only wear one suit of armor at a time.</td>
367: </tr>
368: <tr>
369: <td>T</td>
370: <td><p align="justify">Take armor off. You can’t remove armor that is
371: cursed. This takes extra time.</p></td>
372: </tr>
373: <tr>
374: <td>d</td>
375: <td><p align="justify">Drop an object. Take something out of your pack and
376: leave it lying on the floor. Only one object can occupy each
377: space.</p></td>
378: </tr>
379: <tr>
380: <td>o</td>
381: <td><p align="justify">Examine and set options. This command is further
382: explained in the section on options.</p></td>
383: </tr>
384: <tr>
385: <td>^L</td>
386: <td><p align="justify">Redraws the screen. Useful if spurious messages or
387: transmission errors have messed up the display.</p></td>
388: </tr>
389: <tr>
390: <td>v</td>
391: <td><p align="justify">Prints the program version number.</p></td>
392: </tr>
393: <tr>
394: <td>Q</td>
395: <td><p align="justify">Quit. Leave the game.</p></td>
396: </tr>
397: <tr>
398: <td>R</td>
399: <td><p align="justify">Repeat last message. Useful when a message disappears
400: before you can read it.</p></td>
401: </tr>
402: <tr>
403: <td>S</td>
404: <td><p align="justify">Save the current game in a file. Caveat: Rogue
405: won’t let you start up a copy of a saved game, and it
406: removes the save file as soon as you start up a restored
407: game. This is to prevent people from saving a game just
408: before a dangerous position and then restarting it if they
409: die. To restore a saved game, give the file name as an
410: argument to rogue. As in % rogue36 save_file</p></td>
411: </tr>
412: </table>
413: </div>
414:
415: <h2 align="justify"><b>5. Dealing with objects</b></h2>
416:
417: <p align="justify">When you find something in the dungeon, it is common to
418: want to pick the object up. This is accomplished in rogue by
419: walking over the object. If you are carrying too many
420: things, the program will tell you and it won’t pick up
421: the object, otherwise it will add it to your pack and if the
422: notify option is set, tell you what you just picked up.</p>
423:
424: <p align="justify">Many of the commands that operate on objects must prompt
425: you to find out which object you want to use. If you change
426: your mind and don’t want to do that command after all,
427: just press an escape and the command will be aborted.</p>
428:
429: <h2 align="justify"><b>6. Light</b></h2>
430:
431: <p align="justify">Rooms in the dungeons are either lit or dark. If you
432: walk into a lit room, the entire room will be drawn on the
433: screen as soon as you enter. If you walk into a dark room,
434: it will only be displayed as you explore it. Upon leaving a
435: dark room, all objects inside the room which might move are
436: removed from the screen. In the darkness you can only see
437: one space in all directions around you.</p>
438:
439: <h2 align="justify"><b>7. Fighting</b></h2>
440: <p align="justify">If you see a monster and you wish to fight it, just
441: attempt to run into it. Many times a monster you find will
442: mind its own business unless you attack it. It is often the
443: case that discretion is the better part of valor.</p>
444:
445: <h2 align="justify">8<b>. Armor</b></h2>
446:
447: <p align="justify">There are various sorts of armor lying around in the
448: dungeon. Some of it is enchanted, some is cursed and some is
449: just normal. Different armor types have different armor
450: classes. The lower the armor class, the more protection the
451: armor affords against the blows of monsters. If a piece of
452: armor is enchanted or cursed, its armor class will be higher
453: or lower than normal. Here is a list of the various armor
454: types and their normal armor class.</p>
455:
456: <div align="center">
457: <table border="1" cellspacing="3" cellpadding="3" id="table4" style="border-collapse: collapse">
458: <tr>
459: <th><i>Type</i></th>
460: <th><i>Class</i></th>
461: </tr>
462: <tr>
463: <td>Leather armor</td>
464: <td align="center">8</td>
465: </tr>
466: <tr>
467: <td>Studded leather / Ring mail</td>
468: <td align="center">7</td>
469: </tr>
470: <tr>
471: <td>Scale mail </td>
472: <td align="center">6</td>
473: </tr>
474: <tr>
475: <td>Chain mail </td>
476: <td align="center">5</td>
477: </tr>
478: <tr>
479: <td>Banded mail / Splint mail</td>
480: <td align="center">4</td>
481: </tr>
482: <tr>
483: <td>Plate mail</td>
484: <td align="center">3</td>
485: </tr>
486: </table>
487: </div>
488:
489: <h2 align="justify">9<b>. Options</b></h2>
490:
491: <p align="justify">Due to variations in personal tastes and conceptions of
492: the way rogue should do things, there are a set of options
493: you can set that cause rogue to behave in various different
494: ways.</p>
495:
496: <h3 align="justify"><b>9.1 Setting the options</b></h3>
497:
498: <p align="justify">There are basically two ways to set the options. The
499: first is with the "o" command of rogue, the second
500: is with the ROGUEOPTS environment variable. On Version 6
501: systems, there is no equivalent of the ROGUEOPTS
502: feature.</p>
503:
504: <h3 align="justify"><b>9.1.1. Using the "o" command</b></h3>
505:
506: <p align="justify">When you press "o" in rogue, it clears the
507: screen and displays the current settings for all the
508: options. It then places the cursor by the value of the first
509: option and waits for you to type. You can type a RETURN
510: which means to go to the next option, a "−"
511: which means to go to the previous option, an escape which
512: means to return to the game, or you can give the option a
513: value. For boolean options this merely involves pressing
514: "t" for true or "f" for false. For
515: string options, type the new value followed by a return.</p>
516:
517: <h3 align="justify">9<b>.1.2. Using the ROGUEOPTS variable</b></h3>
518:
519: <p align="justify">The ROGUEOPTS variable is a string containing a comma
520: separated list of initial values for the various options.
521: Boolean variables can be turned on by listing their name and
522: turned off by putting a "no" in front of the name.
523: Thus to set up an environment variable so that jump is on,
524: terse is off, the name is set to "Conan the
525: Barbarian" and the fruit is "mango", use the
526: command</p>
527:
528: <div align="justify"><pre>
529: % setenv ROGUEOPTS "jump,noterse,name=Conan the Barbarian,fruit=mango"<sup>3</sup>
530: </pre></div>
531:
532: <h3 align="justify"><b>9.2. Option list</b></h3>
533:
534: <p align="justify">Here is a list of the options and an explanation of what
535: each one is for. The default value for each is enclosed in
536: square brackets.</p>
537:
538: <p align="justify"><b>terse</b>[<i>noterse</i>]</p>
539: <blockquote>
540: <p align="justify">
541: Useful for those who are tired of the sometimes lengthy
542: messages of rogue. This is a useful option for those on slow
543: terminals. This option defaults to on if your are on a slow
544: (under 1200 baud) terminal.</p>
545: </blockquote>
546:
547: <p align="justify"><b>jump</b>[<i>nojump</i>]</p>
548: <blockquote>
549: <p align="justify">If this option is set, running moves will not be
550: displayed until you reach the end of the move. This saves
551: considerable cpu time and display time. This option defaults
552: to on if you are using a slow terminal.</p>
553: </blockquote>
554:
555: <p align="justify"><b>step</b>[<i>nostep</i>]</p>
556: <blockquote>
557: <p align="justify">When step is set, lists of things, like inventories or
558: "*" responses to "Which item do you wish to
559: xxxx? " questions, are displayed one item at a time on
560: the top of the screen, rather than clearing the screen,
561: displaying the list, then re-displaying the dungeon
562: level.</p>
563: </blockquote>
564:
565: <p align="justify"><b>flush</b>[<i>noflush</i>]</p>
566: <blockquote>
567: <p align="justify">If flush is set, all typeahead is thrown away after each
568: round of battle. This is useful for those who type way ahead
569: and watch to their dismay as a Kobold kills them.</p>
570: </blockquote>
571:
572: <p align="justify"><b>askme</b>[<i>noaskme</i>]</p>
573: <blockquote>
574: <p align="justify">Upon reading a scroll or quaffing a potion which does
575: not automatically identify it upon use, rogue will ask you
576: what to name it so you can recognize it in the future.</p>
577: </blockquote>
578:
579: <p align="justify"><b>name</b> [account name]</p>
580: <blockquote>
581: <p align="justify">This is the name of your character. It is used if you
582: get on the top ten scorer’s list. It should be less
583: than eighty characters long.</p>
584: </blockquote>
585:
586: <p align="justify"><b>fruit</b>[<i>slime-mold</i>]</p>
587: <blockquote>
588: <p align="justify">This should hold the name of a fruit that you enjoy
589: eating. It is basically a whimsy that the program uses in a
590: couple of places.</p>
591: </blockquote>
592:
593: <p align="justify"><b>file</b>[<i>rogue3.save</i>]</p>
594: <blockquote>
595: <p align="justify">The default file name for saving the game. If your phone
596: is hung up by accident, rogue will automatically save the
597: game in this file. The file name may contain the special
598: character "~" which expands to be your home
599: directory.</p>
600: </blockquote>
601:
602: <h2 align="justify"><br>
603:
604: <b>10. Acknowledgements</b></h2>
605:
606: <p align="justify">Rogue was originally conceived of by Glenn Wichman and
607: Michael Toy. The help of Ken Arnold in making the program
608: easier to use and putting the finishing touches on is
609: greatly appreciated. I would also like to thank Marty
610: McNary, Scott Nelson, Daniel Jensen, Kipp Hickman, Joe
611: Kalash, Steve Maurer, Bill Joy, Mark Horton and Jan Miller
612: for their ideas and assistance.</p>
613:
614: <table border="0" width="100%" cellspacing="3" cellpadding="0" id="table5">
615: <tr>
616: <td align="center"><sup>1</sup></td>
617: <td>As opposed to pseudo English sentences.</td>
618: </tr>
619: <tr>
620: <td align="center"><sup>2</sup></td>
621: <td>Or until you get killed or decide to quit.</td>
622: </tr>
623: <tr>
624: <td align="center"><sup>3</sup> </td>
625: <td><p>For those of you who use the Bourne shell, the commands would be</p>
626: <pre> $ ROGUEOPTS="jump,noterse,name=Conan the Barbarian,fruit=mango"
627: $ export ROGUEOPTS</pre>
628: </td>
629: </tr>
630: </table>
631:
632: </body>
633: </html>
CVSweb