home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / misc / part2.doc < prev    next >
Text File  |  1985-11-16  |  55KB  |  1,215 lines

  1.                                       2-1
  2.  
  3.       The Generic Adventure Game System
  4.       Copyright 1985 by Mark J. Welch  415-564-1066 (voice)
  5.                                        415-664-2811 (modem)
  6.  
  7.                       __________________________________
  8.                      |                                  |
  9.                      |  How to write an adventure game: |
  10.                      |__________________________________|
  11.       
  12.                                    
  13.       
  14.       -------------------------------------------------------
  15.       Introduction: Why Should I Write My Own Adventure Game?
  16.       -------------------------------------------------------
  17.       
  18.          If you're asking that question, it's quite possible that you 
  19.       shouldn't. But let me suggest a scenario: 
  20.       
  21.         - Imagine your office as an adventure game. Imagine the 
  22.       wonderful descriptions you could provide for your co-workers' 
  23.       offices, the analogies you could make for the delivery people, 
  24.       and the thinly-veiled insults of your boss you could include. If 
  25.       such an adventure game scenario were written in reasonable taste, 
  26.       it could serve as a well-deserved diversion on a Friday 
  27.       afternoon. Of course, if it's written in poor taste, and your 
  28.       insults aren't veiled enough, it could be your last Friday.  
  29.         -  Maybe you are trying to teach someone something. Perhaps you 
  30.       want them to learn about computers. Maybe you want to guide them 
  31.       through many screens of tutorials. If you could write the text as 
  32.       an adventure game, and make learning a game -- even fun -- the 
  33.       game players might learn more faster.  
  34.         - Or maybe you're well-equipped with a great imagination and 
  35.       you want to develop a game that will rival the ones you've 
  36.       bought in stores or played with friends. Perhaps this is your 
  37.       chance to prove your fiction-writing abilities. Who knows what 
  38.       adventure lurks in the heart of the computer user?  
  39.       
  40.       
  41.  
  42.                                       2-2
  43.  
  44.       ---------------------------------------------------------
  45.       How the Adventure Game Works -- A Superficial Explanation
  46.       ---------------------------------------------------------
  47.       
  48.       (This section explains how GAGS does what it does. You might want 
  49.       to look at a copy of a .DAT file, such as UNDERGND.DAT, as you 
  50.       read this.) 
  51.       
  52.       
  53.       A Sequential Account
  54.       --------------------
  55.       As an author, I knew that anyone who developed an adventure game 
  56.       using GAGS would want instant credit, so the first thing GAGS 
  57.       does is look on the disk for a title file, which should contain 
  58.       the name of the game, the author's name, and perhaps a copyright 
  59.       statement. Each line in the file is displayed centered on the 
  60.       screen. 
  61.            Being protective, I also make sure the program posts my 
  62.       copyright notice just below the game writer's. If, for some 
  63.       reason, there is no file TITLE.DAT, the GAGS copyright 
  64.       information is displayed by itself. The title screen, with the 
  65.       author's information and mine, stays on the screen while the 
  66.       program initializes all its data arrays and records and reads the 
  67.       data file.  
  68.            The program next reads the datafile (filename.DAT). It 
  69.       searches each of its 17 keywords (words like "ROOM," "NOUN," or 
  70.       "CREATURE"). When it finds one of these words as the first word 
  71.       on a line (ignoring spaces and punctuation), it looks for a 
  72.       number so it knows where to store the information that follows.  
  73.       It then carefully analyzes each line that follows, updating its 
  74.       internal arrays to match the specifications in the text file, 
  75.       until it finds a keyword beginning with "END_" (i.e.  
  76.       END_CREATURE, END_NOUN, END_ROOM).  Note: the game will NOT 
  77.       detect a mismatched END_keyword; all it really checks is that the 
  78.       the first four letters are "END_".  
  79.            Since the file contains both descriptions and data record 
  80.       information, it takes a while to scan the whole file: for a 30K 
  81.       file with about 65 rooms, it takes fifty seconds. Among other 
  82.       things, this gives the player a good chance to read the title 
  83.       screen, thus satisfying the game author's conceit and mine.  
  84.            If the file contains some text preceded by the keyword INTRO 
  85.       and ended with the keyword END_INTRO, that text is displayed as 
  86.       it is encountered. It cannot be re-read during the game.   
  87.            Once all the data has been read in, the program puts the 
  88.       player into room 2 of the game (there is no room 1: a location of 
  89.       1 indicates the player's pockets). GAGS then prints the long text 
  90.       description for room 2, (defined by ROOM_DESCR 2...END_ROOM_DESCR)
  91.       and the player is asked what to do.  
  92.             
  93.                                  (continued)
  94.       
  95.                                       2-3
  96.    
  97.                           (how GAGS works, continued)
  98.        
  99.       
  100.            Each time the player types in a command and <ENTER>, the 
  101.       program sends the input line to the "parse" module. The parser 
  102.       take the input line, breaks it into separate words, and tries to 
  103.       locate a verb, a noun, a preposition, and another noun as the 
  104.       object of the preposition. It does this by eliminating extra 
  105.       words like "the" and "please"; and by checking and then 
  106.       eliminating adjectives. It returns four words: verb, noun, 
  107.       preposition, and an object of the preposition. (If any element is 
  108.       missing, the "empty string" ('') is returned.) 
  109.            If an invalid word is found by the parser, it informs the 
  110.       user by suggesting what part of speech it sought and what word it 
  111.       didn't recognize. Otherwise, the program then calls the execute 
  112.       module; this section selects a procedure to call based on the 
  113.       verb (throw, take, eat, move). Depending on the procedure's own 
  114.       checking, the noun, preposition and object might be rejected as 
  115.       invalid or, in some cases, ignored partly or completely.  
  116.       
  117.            If motion is called for, the program checks to see if the 
  118.       direction is valid (i.e. if moving EAST was supposed to get the 
  119.       player to a new room). If it's valid, the player is moved to the 
  120.       new room; if not, the player is informed. Other actions are 
  121.       checked in the same way: if a noun is expected, does the player 
  122.       have it or is it in the room? If the thing is here, does this 
  123.       time, place, and action constitute a special event of some sort? 
  124.       If it does, the player is sent off to a "special" procedure; 
  125.       otherwise the action is executed and the thing is changed as 
  126.       specified, or is described or taken. 
  127.       
  128.            There are two ways a player can be moved to a new room. One 
  129.       is by specifically trying to do so. Moving east is generally 
  130.       accomplished by typing "EAST." 
  131.            The other way to move is by meeting a set of special 
  132.       requirements that the current game's author has defined as a 
  133.       "special." The special might be defined, in plain language, as "if 
  134.       the player is in the sauna, and he turns the faucet, then move him 
  135.       to another room X." That other room might be anything.  One 
  136.       possibility is that it may be a room with a similar or identical 
  137.       description, but with a new exit or without an old one.  It might 
  138.       even be the same room, but by executing the "special," the program 
  139.       displays several lines of text.  
  140.           In this case, the special text might be "You turn on the 
  141.       faucet, and scalding hot water pours onto your feet. You scream in 
  142.       agony and kick the faucet, which is turned off." If the author was 
  143.       cruel, the "special" here might move the player to a new room 
  144.       called "hell" and be told "As you turn the faucet, scalding hot 
  145.       water pours out onto your legs. You scream in agony, but the faucet 
  146.       won't shut off. In minutes, you are scalded to death. You awaken in 
  147.       hell, where Satan tells you that your punishment for killing the 
  148.       lizard [something the player did earlier to get here] will be 
  149.       boiling in oil for eternity."  The new room description would 
  150.       describe a vat of boiling oil, provide no exits, and include the 
  151.       keyword GAME_END to end the game.  
  152.       
  153.                                  (continued)
  154.       
  155.                                       2-4
  156.  
  157.                          (how GAGS works, continued)
  158.        
  159.       
  160.            "Specials" are the way you do almost anything unusual.  Of 
  161.       course, a special can be used to move a player to a new room 
  162.       (i.e.  "touch mirror" might cause the player to fall through the 
  163.       looking-glass and into a new room). But specials also allow a 
  164.       room to be "changed" in the player's view -- this is accomplished 
  165.       by actually moving the player to a new, but similar room. If you 
  166.       want an airlock to close one door and open another, you use a 
  167.       "special" which moves the player to a 'new' airlock with a 
  168.       different exit. If you want a player to 'teleport,' you use a 
  169.       special. If you want to player to be surprised by some action but 
  170.       not moved (i.e. 'play stereo' could lead to "Beethoven's Fifth 
  171.       plays loudly, awakening the neighbors.  Someone pounds loudly on 
  172.       the ceiling"), use a special.  
  173.            There is one problem with using a special to "change" a 
  174.       room. If you decide, for example, to have a player move from an 
  175.       intact room to a damaged room when s/he decides to "push button," 
  176.       you may have some problems. Suppose the intact room was 13, the 
  177.       damaged room was 14, and room 7 was adjacent. The player moves 
  178.       east from 7 to 13.  S/he pushes the button and is "specialed" to 
  179.       room 14. S/he exits west to room 7, since you've provided that 
  180.       exit from either room 13 or 14. When s/he moves east from 7, 
  181.       however, s/he moves back to room 13, since room 7's pointers 
  182.       remain unchanged by the "special." My fix to this is to simply 
  183.       not provide reverse pointers: once you've blown up a room, make 
  184.       sure the player can't ever trace his/her steps back to the 
  185.       undamaged room.  
  186.       
  187.            Internally, specials are stored as a direction, and each 
  188.       room that has a special has a "key" -- a matching noun. This is 
  189.       probably the most complex part of creating an adventure game: you 
  190.       need to have some fairly complex linkage in your data file, all 
  191.       done manually. 
  192.       
  193.       
  194.                                       2-5
  195.       
  196.       How GAGS Works: Another Approach
  197.       -------------------------------- 
  198.       
  199.       GAGS keeps track of three large record arrays internally: the 
  200.       rooms, the nouns, and the creatures. 
  201.       
  202.       -----
  203.       Rooms
  204.       -----
  205.       
  206.       Each room is a record, with the following fields:
  207.          name (string) 
  208.          n,s,e,w,ne,se,sw,nw,u,d,enter,exit,special 
  209.                      (all integers: what room do they lead to?)
  210.          key (integer - what noun activates the 'special' direction?)
  211.          has_seen (true/false: has the player seen this room yet?)
  212.          locked_door  (true/false - is there a locked door here?)
  213.          points (how many points for just getting to this room?)
  214.       
  215.       The room specification in the data file is quite simple:
  216.       
  217.         ROOM <nn>
  218.         <Room Name>
  219.         <direction> <nn>
  220.               .
  221.               .
  222.               .
  223.         <direction> <nn>
  224.         <  optional: SPECIAL <nn>    and  KEY <nn>  >
  225.         <  optional: POINTS <n>                     >
  226.         <  optional: LIGHT <nn>                     >
  227.         <  optional: GAME_END                       >
  228.         END_ROOM
  229.       
  230.       A room description must also be provided: 
  231.       
  232.       ROOM_DESCR <nn>
  233.       Some text, any number of lines, about the room.
  234.       END_ROOM_DESCR
  235.       
  236.       (Similar formats are used for descriptions of nouns and creatures.)
  237.       
  238.       It is recommended that at a minimum, one exit be provided; 
  239.       otherwise the player will be stuck in the room until he quits. Of 
  240.       course, that direction might be a special. 
  241.       
  242.       
  243.                                       2-6      
  244.  
  245.       --------
  246.       Specials
  247.       --------
  248.            To 'activate' the special, the player must 'do something' to 
  249.       the noun specified as the room's KEY. This can include turning 
  250.       it, pushing it, pulling it, or playing it (depending on what can 
  251.       be done to the noun as defined). If the proper action is taken on 
  252.       the noun while in the room, the player will be relocated to the 
  253.       room specified in the SPECIAL line and the SPECIAL nn text will 
  254.       be displayed. (If the Special points to the current room, the 
  255.       only effect apparent to the reader will be the display of the 
  256.       SPECIAL text.) 
  257.       
  258.       An example:
  259.       
  260.       --------
  261.       
  262.       ROOM 13
  263.         .
  264.         .
  265.       SPECIAL 13
  266.       KEY 218
  267.       END_ROOM
  268.       
  269.       NOUN 218
  270.       Stereo
  271.         .
  272.         .
  273.       TURNABLE
  274.       PLAYABLE
  275.       END_NOUN
  276.       
  277.       SPECIAL 13
  278.       As you turn on the stereo, you hear a song by "Duran Duran." The 
  279.       stereo turns itself off when the song is finished.
  280.       END_SPECIAL
  281.       
  282.       -----------
  283.       
  284.       Defaults:  The default for almost all integer values is zero: 
  285.       thus, any direction not specified will be set to zero (no room), 
  286.       including 'special' and the key noun pointer, unless the data 
  287.       file specifies differently.  
  288.       
  289.       
  290.                                       2-7
  291.  
  292.       -----
  293.       Nouns
  294.       -----
  295.       
  296.       Nouns are necessarily more complex. They are specified in the 
  297.       following format, listed with the possible values (and defaults) 
  298.       
  299.       NOUN <nn>       
  300.       <name>   - must appear on second line, must be one word (underscores 
  301.                             permitted) 
  302.       <adjective> - must appear on 3rd line - a one-word adjective (or 'NO_ADJ')
  303.       <short>  - must appear on 4th line - one line of text describing the noun 
  304.            (the remaining words and phrases may appear in any order or may be 
  305.            omitted to obtain the default values) 
  306.       WEIGHT <nn>     - 1 to 100+ (default=1)
  307.       SIZE <nn>       - 1 to 100+ (default=1)
  308.       LOCATION <nn>   - initial location (room number, another noun, or the 
  309.                             player) (1=player) (default = 0) 
  310.       READABLE        - default is 'not readable'
  311.       CLOSABLE        - default is 'not closable'
  312.       CLOSED          - default is 'open'
  313.       ON              - default is 'off'
  314.       PUSHABLE        - default is 'not pushable' - activates special!
  315.       TURNABLE        - default is 'not turnble' - activates special!
  316.       PLAYABLE        - default is 'not playable' - activates special!
  317.       LOCKABLE        - default is 'not lockable'
  318.       LOCKED          - default is 'unlocked'
  319.       KEY <nn>        - default is 0 (what noun is used to unlock this noun?)
  320.       POISONOUS       - default is 'nonpoisonous'
  321.       EDIBLE          - default is 'inedible'
  322.       DRINKABLE       - default is 'undrinkable'
  323.       UNMOVABLE       - default is 'movable' (can be TAKEn)
  324.       POINTS <nn>     - default is 0 -- how many points if carried?
  325.       IS_LIGHT        - default is 'false'
  326.       END_NOUN        - this word must appear alone on a line!
  327.       
  328.       Note: To 'spice' up the game, you might want to put things inside 
  329.       other things initially, so the player has to open everything to 
  330.       be sure s/he doesn't miss anything important. Be logical, though: 
  331.       a refrigerator seems likely to be open-able, but a crabapple 
  332.       probably ought to be 'closed' and 'unclosable' and thus unable to 
  333.       contain something else (unless you're into razor blades...). 
  334.       
  335.       
  336.                                       2-8      
  337.  
  338.       ----
  339.       TEXT
  340.       ----
  341.         Things that can be "read" are perhaps best described as 
  342.       "special specials." Rather than using the "SPECIAL" function, 
  343.       readable objects use "TEXT." Thus, the following would be a 
  344.       valid set of definitions:
  345.       
  346.       --------
  347.       
  348.       NOUN 232
  349.       Book
  350.       Red
  351.       There is a small red book here.
  352.       WEIGHT 1
  353.       SIZE 3
  354.       LOCATION 32
  355.       READABLE
  356.       END_NOUN
  357.       
  358.       NOUN_DESCR 232
  359.       The red book is quite thin, and has a hard cover. There is 
  360.       writing on the book.
  361.       END_NOUN_DESCR
  362.       
  363.       TEXT 232
  364.       The title of the book is "The Wisdom of Ronald Reagan."
  365.       The pages are all blank.
  366.       END_TEXT
  367.       
  368.       
  369.       
  370.       ----------
  371.       PUSH_DESCR
  372.       PULL_DESCR
  373.       TURN_DESCR
  374.       PLAY_DESCR
  375.       ----------
  376.       If a noun is described as being pushable, playable, turnable, or 
  377.       pullable, you can define a response to the player taking those 
  378.       actions. This description will be displayed only if the player 
  379.       takes the specified action AND that action does not activate a 
  380.       SPECIAL for the current room. If there is no description 
  381.       provided, a standard ("nothing happens") message is provided.
  382.       
  383.       
  384.                                       2-9
  385.       
  386.       ---------
  387.       Creatures
  388.       ---------
  389.       
  390.       Creatures, like rooms, are relatively simple. Any living thing is 
  391.       identified as a 'creature', and can be either 'friendly' or 
  392.       'hostile'. 
  393.       
  394.       CREATURE <nn>
  395.       <name>
  396.       <adjective>
  397.       <short descriptive line of text>
  398.       LOCATION <nn>           - default := 0
  399.       WEAPON <nn>             - what noun kills it? (default := 0)
  400.       HOSTILE                 - (default is FRIENDLY)
  401.       END_CREATURE             - must be the only thing on the line!
  402.       
  403.       Friendly creatures are quite passive; hostile creatures are not 
  404.       quite as friendly. It is recommended that provisions be made for 
  405.       a weapon to kill any hostile creatures. For fairness, that weapon 
  406.       should be accessible by the player BEFORE s/he meets the hostile 
  407.       creature. 
  408.          Players should be discouraged from wild and unwarranted 
  409.       killing: i.e. they ought not kill friendly creatures. If no 
  410.       weapon will kill the creature (i.e. if you leave or specify 
  411.       WEAPON as the default value 0), the player cannot kill it. For 
  412.       friendly creatures, you should not lead the player on by making 
  413.       the weapon something unexpected: if the player kindly offers a 
  414.       jelly bean to the friendly creature, it ought not be fatal. On the 
  415.       other had, using a poisoned jelly bean to kill the Reagan_Beast 
  416.       might be both appropriate and challenging. Only one weapon can 
  417.       kill any given creature, but the same weapon might be used to kill 
  418.       many creatures. 
  419.       
  420.       ---------
  421.       
  422.       
  423.       
  424.                                       2-10      
  425.  
  426.       Some last-minute notes:
  427.       
  428.       
  429.       Order of definitions:
  430.          Note: GAGS doesn't require that the definitions be in a 
  431.       specific order. Definitions can be freely mixed throughout your 
  432.       data files. You'll probably want to group items together that 
  433.       logically belong together; that's how I wrote the sample game. 
  434.       The order of definitions in the file has NO effect on game 
  435.       performance, as long as each definition is properly structured.  
  436.       If you write 'INTRO' text for the game, it's best to put that 
  437.       text at the end of the data file; that way the initialization 
  438.       will be done when the player finishes reading the introduction.  
  439.       (If the INTRO text is at the top of the file, GAGS must read the 
  440.       rest of the data file after the player has read the 
  441.       introduction, causing a more noticable and worrisome delay.) 
  442.       
  443.       
  444.       Word Processors:
  445.          Note: I used PC-Write to create the sample adventure file. You 
  446.       MUST use a word processor which creates plain ASCII/DOS text 
  447.       files with a true carriage return at the end of each line. Lines 
  448.       longer than 80 characters, and WordStar document files, will 
  449.       cause GAGS to gag! (For information on obtaining PC-Write, see 
  450.       appendix D -- "Other Shareware.") 
  451.       
  452.       Value Ranges for Game Definitions:
  453.          Note: The following are the valid ranges of numbers for nouns,
  454.       rooms, and creatures. DO NOT assign improper numbers to any 
  455.       category, or you will experience unpredictable (but consistently 
  456.       erroneous) results.
  457.               Player:           1
  458.               ROOMS:            2     to      199
  459.               NOUNS:          201     to      299
  460.               CREATURES:      301     to      399
  461.       
  462.       Note: The GameWriter Diagnostics Mode
  463.       
  464.            GAGS has a "diagnostics" mode which should be somewhat 
  465.       helpful as you develop games. By adding /d to the DOS command 
  466.       line that invokes GAGS, you'll be able to see exactly what the 
  467.       game is doing during initialization. If you compare a paper copy 
  468.       of your .DAT file to the diagnostics screen output, you'll be 
  469.       able to see exactly when and if the system encounters any 
  470.       problems with your file. The diagnostics mode is specifically 
  471.       designed to let you graphically see if any "END_" statements are 
  472.       missing. It is not a very powerful debugging tool, but it takes 
  473.       much of the guesswork out of the system.  
  474.        
  475.                                  (continued)
  476.       
  477.                                       2-11
  478.  
  479.                         (Last-minute notes, continued)
  480.       
  481.       
  482.       Light and Darkness:
  483.          If a room has a LIGHT value other than 0 (the default), the 
  484.       room will appear pitch black if the player wanders in empty-
  485.       handed. There are two "types" of lights and two types of 
  486.       darkness. A noun may be defined as being a light by specifying 
  487.       the word IS_LIGHT in its definition; in this case, it will light 
  488.       any dark room defined as LIGHT 1. The light value of 1 in a room
  489.       definition means that any light will make the room visible. Of 
  490.       course, these "general-purpose" lights must be turned on to light 
  491.       the room, and thus all LIGHTs can be TURNed ON and OFF (or 
  492.       LIGHTed and EXTINGUISHed.). (EXT is an acceptable abbreviation 
  493.       for EXTINGUISH; EX is the abbreviation for EXAMINE.) 
  494.          If the LIGHT value is more than 1 (i.e. LIGHT 218), only the
  495.       noun with the matching number will make the room's contents 
  496.       visible. This is useful if the darkness comes from something 
  497.       other than an absence of light: for example, a fan might be the 
  498.       only object that makes a smoky room clear enough to see in. 
  499.       A special-purpose light need not be defined as a light (i.e. it 
  500.       doesn't have to be defined IS_LIGHT), nor does it have to be on, 
  501.       to work as a light in a room with that noun as a LIGHT. A 
  502.       noun can function as a special-purpose light for more than one 
  503.       room, but each room can only be lit by one special-purpose light. 
  504.       (A room with a LIGHT value of 1 will be lit by ANY noun defined 
  505.       as IS_LIGHT.)
  506.       
  507.       
  508.       -----------
  509.       
  510.       Note: Command abbreviations
  511.       
  512.            Some command abbreviations have been implemented:
  513.       
  514.               .       =       examine (i.e. ". bar")
  515.               !       =       attack  (i.e. "! wolf")
  516.               ex      =       examine
  517.               ext     =       extinguish (turn off)
  518.       
  519.       
  520.       
  521.                                       2-12      
  522.  
  523.       Creating a typical room:
  524.       ------------------------
  525.       
  526.          Let's suppose that my game contains a bedroom, connected to a 
  527.       closet, a bathroom, and a hallway. In the bedroom are a lamp, a 
  528.       bed, a dresser, a mirror, and a werewolf.
  529.       
  530.          First, I want to define the room itself:
  531.       
  532.       
  533.       ===============================================
  534.       ROOM 34
  535.       Master Bedroom
  536.       WEST 33                 (33 is the hallway)
  537.       EAST 35                 (35 is the bathroom)
  538.       NORTHEAST 36            (36 is the closet)
  539.       END_ROOM
  540.       ===============================================
  541.       
  542.          A description of the room is appropriate here:
  543.       
  544.       ===============================================
  545.       ROOM_DESCR 34
  546.       This is the master bedroom, where Mommy and Daddy usually sleep.
  547.       Plainly visible in the room are a bed, a dresser, a lamp, and a 
  548.       large wall mirror. The room smells horrible, as if a large, 
  549.       unclean animal had been here recently.
  550.       END_ROOM_DESCR 
  551.       =============================================== 
  552.       
  553.          Note that this description mentions the nouns that are 
  554.       initially in the room. This is OK, since all of the nouns are 
  555.       UNMOVABLE, but if they could be taken by the player, they should 
  556.       not be described in the room description since they won't be 
  557.       there if the player should return.
  558.       
  559.          That werewolf is begging to be described, too:
  560.       
  561.       
  562.       ===============================================
  563.       CREATURE 315
  564.       Werewolf
  565.       Black
  566.       There is a menacing black werewolf here.
  567.       LOCATION 34
  568.       WEAPON 217                      <-- Noun 217 will kill it 
  569.       HOSTILE                         <-- ever met a friendly werewolf?
  570.       END_CREATURE
  571.       ===============================================
  572.       
  573.       ===============================================
  574.       CREATURE_DESCR 315
  575.       The werewolf is about the size of a small horse. Its matted fur 
  576.       stinks, and a sickening smell emerges from its open mouth, 
  577.       through which you can see sharp, large teeth.  
  578.       END_CREATURE_DESCR
  579.       ===============================================
  580.       
  581.                                       2-13
  582.       
  583.          Finally, each noun within the room ought to be defined and 
  584.       described:
  585.       
  586.       ===============================================
  587.       NOUN 220
  588.       Bed
  589.       Large
  590.       There is a large (king-size) bed here.
  591.       LOCATION 34
  592.       UNMOVABLE
  593.       END_NOUN
  594.       ===============================================
  595.       NOUN_DESCR 220
  596.       The bed is quite ordinary.
  597.       END_NOUN_DESCR
  598.       ===============================================
  599.       NOUN 221
  600.       Dresser
  601.       Wooden
  602.       There is a large wooden dresser here.
  603.       LOCATION 34
  604.       CLOSABLE
  605.       CLOSED
  606.       UNMOVABLE
  607.       END_NOUN
  608.       ===============================================
  609.       NOUN_DESCR 221
  610.       The wooden dresser looks pretty much like most wooden dressers.
  611.       END_NOUN_DESCR
  612.       ===============================================
  613.       NOUN 222
  614.       Lamp
  615.       Small
  616.       There is a lamp on the dresser.
  617.       LOCATION 34
  618.       UNMOVABLE
  619.       END_NOUN
  620.       ===============================================
  621.       NOUN_DESCR 222
  622.       The small table lamp is pink and has a green shade. 
  623.       END_NOUN_DESCR
  624.       ===============================================
  625.       NOUN 223
  626.       Mirror
  627.       Strange
  628.       There is a wall-size mirror here.
  629.       LOCATION 34
  630.       UNMOVABLE
  631.       END_NOUN
  632.       ===============================================
  633.       NOUN_DESCR 223
  634.       As you gaze into the mirror, you sense something unusual about 
  635.       it. It seems to shimmer, and your reflection seems somehow 
  636.       unreal, as if the mirror weren't really there at all.
  637.       END_NOUN_DESCR
  638.       ===============================================
  639.       
  640.                                       2-14
  641.       
  642.          Hmm. That mirror seems rather interesting. Maybe we could make 
  643.       a "special" out of it. For example: when the player touches it, 
  644.       s/he is sent to room 50, the mystic cavern of the Wizardess.
  645.       To do so, we need to add a "special" to room 34 and specify the 
  646.       mirror as its key, and we need to make the mirror touchable.
  647.       (Note: "touch" and "push" are synonyms -- you should use the 
  648.       word "push," not the word "touch," in your definitions.) 
  649.                                                                     
  650.       ===============================================
  651.       ROOM 34
  652.       Master Bedroom
  653.       WEST 33                 (33 is the hallway)
  654.       EAST 35                 (35 is the bathroom)
  655.       NORTHEAST 36            (36 is the closet)
  656.       SPECIAL 50              <--
  657.       KEY 223                 <--
  658.       END_ROOM
  659.       ===============================================
  660.       
  661.       ===============================================
  662.       NOUN 223
  663.       Mirror
  664.       Strange
  665.       There is a wall-size mirror here.
  666.       LOCATION 34
  667.       UNMOVABLE
  668.       PUSHABLE               <-- Here's how we'll activate the special
  669.       END_NOUN
  670.       ===============================================
  671.       
  672.       
  673.          The player will see room 50's description when s/he gets 
  674.       there, but the SPECIAL text for room 50 will be displayed first:
  675.       
  676.       
  677.       ===============================================
  678.       SPECIAL 50
  679.       You reach out to touch the mirror, and are shocked to find that 
  680.       your fingers vanish through the surface. Before you can react, 
  681.       you feel yourself drawn forward through the mirror, and into a 
  682.       black nothingness. You look back to try to see the mirror, but 
  683.       everything is black.
  684.          You are falling, but not very quickly -- it's almost as if you 
  685.       are floating. As you fall, your eyes begin to adjust to the 
  686.       darkness. Then, suddenly, you land on a soft cushion of some 
  687.       sort. As you rest on the cushion, your eyes adjust to the very 
  688.       dim light of this new room.  
  689.       END_SPECIAL
  690.       ===============================================
  691.       
  692.         (Note that usually, you'd want to have a PUSH_DESCR  prepared 
  693.         for when the player touches a noun when it doesn't activate a 
  694.         special, but the mirror can't be moved so it will always 
  695.         activate a special when touched.)
  696.          
  697.       
  698.                                       2-15
  699.  
  700.       How to include Comments:
  701.       ------------------------
  702.       
  703.          Within your data file, you'll probably want to include 
  704.       comments which won't be processed by the game itself, so you'll 
  705.       be able to understand why you did certain things.
  706.          
  707.          In general, GAGS treats anything it doesn't understand as a 
  708.       comment. Thus, if you have a paragraph of text in between 
  709.       definitions, GAGS will usually ignore it.
  710.          BEWARE: If one of the lines in the paragraph begins with a 
  711.       keyword like "noun" or "text," GAGS will probably decide that 
  712.       it's the beginning of a definition and get confused.  
  713.          To avoid this, you can use a nonsense word to start each line 
  714.       of a comment: words like "REM" (for remark) are useful since they
  715.       also clearly state what the line is. 
  716.          Gags ignores most punctuation completely, so using "comment" 
  717.       indicators like "(*" and "*)" or { and } won't help anything. 
  718.       GAGS usually only sees alphabetic characters ('a'..'z' and 
  719.       'A'..'Z').
  720.          You can put comments on lines which contain a keyword or a 
  721.       keyword and a number; don't include comments on lines which 
  722.       contain a full-line description.
  723.       
  724.       Example of properly-commented definitions:
  725.       
  726.       ===============================================
  727.       ROOM 34                 
  728.       Master Bedroom
  729.       WEST 33                 (33 is the hallway)
  730.       EAST 35                 (35 is the bathroom)
  731.       NORTHEAST 36            (36 is the closet)
  732.       SPECIAL 50              <-- Special goes to room 50 (cavern)
  733.       KEY 223                 <-- Spec.activated by touching mirror
  734.       END_ROOM
  735.       ===============================================
  736.       
  737.       ===============================================
  738.       NOUN 223
  739.       Mirror                  
  740.       Strange                 (isn't there a better adjective?)
  741.       There is a wall-size mirror here.
  742.       LOCATION 34             (in the Master Bedroom)
  743.               rem: the player finds this mirror in the master bedroom,
  744.               rem: and gets to the Cavern by touching it. The player
  745.               rem: can only return if s/he has the magic amulet, and
  746.               rem: will need the soap from the bathroom to kill the
  747.               rem: demon on the bridge.
  748.       UNMOVABLE               (not very useful if the player can take it!)
  749.       PUSHABLE                <-- Here's how we'll activate the special
  750.       END_NOUN
  751.       ===============================================
  752.       
  753.                                       2-16      
  754.  
  755.       
  756.       Example of a badly-commented definition:
  757.       
  758.       ===============================================
  759.       ROOM 34                 
  760.       Master Bedroom
  761.       WEST 33                 (33 is the hallway)
  762.               (If the player decides to enter the bathroom to the
  763.               west, s/he will find the 32 gold pieces.)
  764.       EAST 35                 (35 is the bathroom)
  765.       NORTHEAST 36            (36 is the closet)
  766.       SPECIAL 50              <-- Special goes to room 50 (cavern)
  767.       KEY 223                 <-- Spec.activated by touching mirror
  768.               (The player gets to the mystic cavern by means of a
  769.               key special, activated by noun 233)
  770.       END_ROOM
  771.       ===============================================
  772.  
  773.          In the above example, the second full comment line begins with 
  774.       the keyword "WEST" and contains the number 32, so GAGS might 
  775.       decide that WEST should lead to room 32, changing the game! The 
  776.       last line before the END_ROOM could confuse GAGS and redefine the
  777.       key number (probably to zero).
  778.       
  779.       
  780.       
  781.                                      -30-
  782.       
  783.       
  784.       
  785.                      
  786.  
  787.  
  788.  
  789.  
  790.                               REFERENCE MANUAL
  791.       
  792.                                   for the 
  793.       
  794.                        GENERIC ADVENTURE GAME SYSTEM
  795.       
  796.                           
  797.  
  798.                                      by
  799.                   
  800.                                Mark J. Welch
  801.  
  802.                       
  803.                              September 1, 1985
  804.  
  805.                        
  806.  
  807.                       Copyright 1985 by Mark J. Welch
  808.  
  809.                             All Rights Reserved
  810.  
  811.  
  812.        _____________________________________________________________
  813.       |                                                             |
  814.       |  The Generic Adventure Game System, in all source code and  |
  815.       |  object code formats, and all related documents, are copy-  |
  816.       |  right 1985 by Mark J. Welch. The Generic Adventure Game    |
  817.       |  System is distributed as Shareware, with restrictions as   |
  818.       |  specified in the documentation. Commericial use without    |
  819.       |  prior written permission is prohibited.                    |
  820.       |     GAGS is distributed as Shareware: if you like the       |
  821.       |  program, please become a registered user by sending $15    |
  822.       |  to the author:     Mark J. Welch                           |
  823.       |                     P.O. Box 2049                           |
  824.       |                     San Francisco, CA 94126-2409            |
  825.       |                     415-982-4591 (voice)                    |
  826.       |                     415-391-9148 (modem)                    |
  827.       |_____________________________________________________________|
  828.       
  829.  
  830.                                       R-1
  831.  
  832.  
  833.       Introduction to the GAGS Reference Manual
  834.       -----------------------------------------
  835.       
  836.       This document describes the precise syntax and rules for the data 
  837.       files relating to the Generic Adventure Game System (GAGS). Two 
  838.       data files are associated with each game: filename.DAT and 
  839.       filename.TTL.
  840.  
  841.  
  842.       filename.TTL: The Opening Screen(s)
  843.       --------------------------------
  844.       
  845.       The file filename.TTL is not "inspected" by GAGS in any way. The 
  846.       game program merely reads the file line by line and echoes it to 
  847.       the screen, pausing if the screen fills. (You might need to 
  848.       experiment with spacing if the "More" prompt obscures sections of 
  849.       text or graphics.) 
  850.       
  851.          While any ASCII or IBM characters can be used -- including 
  852.       some control characters -- use of non-ASCII characters is not 
  853.       recommended if you believe the game might be used by people who 
  854.       do not have IBM-compatible systems. Note that Control-Z (a value 
  855.       of 26) is the end-of file character, so don't embed this 
  856.       character in your text.  
  857.       
  858.          If you want your game to be covered by standard copyright 
  859.       protection, include the statement "Copyright <year> by <name>" in 
  860.       the opening screen, and provide a mailing address. The GAGS 
  861.       copyright notice, for the game "engine," will also be displayed 
  862.       after your opening screen.  
  863.       
  864.       
  865.       filename.DAT: The Main Data File
  866.       ------------------------------
  867.       
  868.       Needless to say, filename.DAT is the file that takes all the work, 
  869.       and this reference manual is devoted to the syntax of that file.
  870.       
  871.       
  872.       Classes: NOUNs, ROOMs, and CREATUREs
  873.       ------------------------------------
  874.       There are three classes of "things" in the game: NOUNs, VERBs, 
  875.       and CREATUREs. Each object defined must have a separate 
  876.       definition and description. Other specifications may pertain to a 
  877.       room or noun, as described in the precise syntax.
  878.       
  879.       
  880.  
  881.                                       R-2
  882.  
  883.       Structure of the .DAT file
  884.       --------------------------------
  885.        (A more formal syntax)
  886.       
  887.       The .DAT file consists of a set of definitions.
  888.       
  889.       Each definition is one of the following types; each type is also 
  890.       the introductory keyword of the definition:
  891.       
  892.          NOUN            ROOM            CREATURE         INTRO
  893.          NOUN_DESCR      ROOM_DESCR      CREATURE_DESCR
  894.          TEXT            SPECIAL         PULL_DESCR
  895.          PLAY_DESCR      PUSH_DESCR      TURN_DESCR
  896.       
  897.       Each definition is ended by a word beginning with the the string 
  898.       'END_' (i.e. 'END_NOUN'). NOTE: While it is advisable to use 
  899.       matching keywords, GAGS only checks for the initial characters 
  900.       'END_' and not for the complete appropriate end-of-block keyword.  
  901.       
  902.       Comments: Any text which occurs outside a definition is 
  903.       considered a comment and is ignored. In addition, unknown words 
  904.       *within* a defintion are *usually* ignored as well. However, to 
  905.       avoid unpleasant surprises, it is recommended that a known 
  906.       nonsense word ('rem' or 'comment') be used at the start of all 
  907.       comment lines.  
  908.  
  909.  
  910.       DESCRiption types:
  911.       ------------------
  912.  
  913.       Each description type consists merely of lines of ASCII text 
  914.       which are echoed to the screen when the user expects a 
  915.       description of something defined in the game. 
  916.       
  917.       If the file contains the following lines:
  918.       
  919.               NOUN 2
  920.               Globe
  921.               Red
  922.                .
  923.                .
  924.                .
  925.               END_NOUN
  926.       
  927.               NOUN_DESCR 2
  928.               The small red globe is a perfect sphere. It glows 
  929.               slightly.
  930.               END_OF_NOUN
  931.       
  932.               NOUN_DESCR 3
  933.               The towel is about eighteen inches wide by twenty-four 
  934.               inches long, and is quite soft.
  935.               END_NOUN
  936.       
  937.       The result of a player typing 'examine globe' would be:
  938.       
  939.               The small red globe is a perfect sphere. It glows 
  940.               slightly.
  941.       
  942.       
  943.                                       R-3
  944.  
  945.       
  946.       NOUNs
  947.       -----
  948.       
  949.               NOUN nnn                <-- nn is a number from 201 to 299
  950.               Name                    <-- one-word name of the noun
  951.               Adjective               <-- one-word adjective
  952.               Short description of the noun
  953.                             REM    ^-- a one-line description of the noun
  954.               {other characteristics go here}-
  955.               END_NOUN
  956.       
  957.           Other characteristics (optional):
  958.       
  959.               SIZE nn                 <-- nn is a number from 1 to 99+
  960.               WEIGHT nn               <-- nn is a number from 1 to 99+
  961.               UNMOVABLE               <-- default is movable (carryable)
  962.               LOCATION nn             <-- nn is a room number (1-199)
  963.               READABLE                <-- default is "not readable"
  964.                                           {if READABLE then <TEXT nn> 
  965.                                            must also be defined}
  966.               CLOSABLE                <-- default is "not closable"
  967.               CLOSED                  <-- default is "open"
  968.                                           {if open then it can hold
  969.                                            something}
  970.               LOCKABLE                <-- default is not lockable
  971.               LOCKED                  <-- default is unlocked
  972.               KEY nn                  <-- default is 0
  973.                                           {noun nn unlocks this noun
  974.                                            if it's lockable}
  975.               EDIBLE                  <-- default is inedible
  976.               DRINKABLE               <-- default is undrinkable/solid
  977.               POISONOUS               <-- default is nonpoisonous
  978.                                           {predictable effect if poisonous
  979.                                            edible/drinkable noun is eaten}
  980.               ON                      <-- default is 'off' 
  981.               PUSHABLE                <-- default is not pushable
  982.                                           {PUSH_DESCR nn recommended but
  983.                                            not required if it is pushable}
  984.               PULLABLE                <--  (ditto, PULL_DESCR nn)
  985.               PLAYABLE                <--  (ditto, PLAY_DESCR nn)
  986.               TURNABLE                <--  (ditto, TURN_DESCR nn)
  987.               IS_LIGHT                <-- default is NOT is_light
  988.                                               (IS_LIGHT -> illuminates any room
  989.                                               defined as LIGHT 1 or LIGHT nnn
  990.                                               where nnn is the noun number)
  991.               POINTS                  <-- default is 0 (points awarded to player
  992.                                               if object is held at game_end)
  993.               CAN_SHOOT               <-- default is can't shoot (can the 
  994.                                               weapon be used to shoot a 
  995.                                               creature? if not, it must be 
  996.                                               thrown) 
  997.               NUM_SHOTS               <-- default is 0 (how many bullets/ 
  998.                                               charges are there initially? 
  999.                                               decremented each time the noun is 
  1000.                                               fired.) 
  1001.  
  1002.  
  1003.                                       R-4
  1004.  
  1005.  
  1006.       ROOMs
  1007.       -----
  1008.       The syntax of a room definition:
  1009.       
  1010.  
  1011.       Required:
  1012.       
  1013.              |<-----significant----->|<------ignored------------------------>|
  1014.                                      |
  1015.       
  1016.               ROOM nnn                <-- nnn is a number from 1 to 199
  1017.               Room Name               <-- room name (no comments!)
  1018.               {other characteristics}
  1019.               END_ROOM
  1020.       
  1021.       
  1022.       Optional characteristics:       <-- optional but at least one is
  1023.                                           strongly recommended
  1024.       
  1025.              |<-----significant----->|<------ignored------------------------>|
  1026.                                      |
  1027.       
  1028.               {direction} nnn         <-- nnn is a number from 1 to 199
  1029.                                           (default is 0)
  1030.                                           {any one of 12 directions can be 
  1031.                                            specified, from the list:
  1032.                                               NORTH   NORTHEAST  UP
  1033.                                               SOUTH   SOUTHEAST  DOWN
  1034.                                               EAST    NORTHWEST  ENTER
  1035.                                               WEST    SOUTHWEST  EXIT}
  1036.               SPECIAL nnn             <-- optional, nnn is a room number.{If
  1037.                                           present, the current definition
  1038.                                           must include KEY xxx and there must
  1039.                                           be a SPECIAL nnn definition}
  1040.               KEY xxx                 <-- xxx is a noun number (201-299)
  1041.                                           {activates special nnn}
  1042.               LIGHT xxx               <-- xxx is a noun number (201-299)
  1043.                                               OR the value 1 ("any light")
  1044.                                               {default is 0}
  1045.               POINTS xxx              <-- xxx is number of points player is
  1046.                                               awarded just for getting here.
  1047.                                               Default is 0.
  1048.               GAME_END                <-- if this line is in the def, the
  1049.                                               game ends as soon as the player
  1050.                                               enters the room (the room_descr
  1051.                                               is displayed, then the score).
  1052.       
  1053.       
  1054.                                       R-5
  1055.       
  1056.       CREATUREs
  1057.       ---------
  1058.       
  1059.       Required:
  1060.       
  1061.               CREATURE nnn            <-- nnn is a number from 301 to 399
  1062.               Name                    <-- one word name
  1063.               Adjective               <-- one word adjective
  1064.               Short description of creature.
  1065.                                       ^-- a one-liner
  1066.               {optional characteristics}
  1067.               END_CREATURE
  1068.       
  1069.       
  1070.       Optional:
  1071.       
  1072.               LOCATION nn             <-- nn is a room number from 1 to 199.
  1073.                                           {default is 0}
  1074.               WEAPON nn               <-- nn is a noun number from 201 to 299
  1075.                                           {default is 0}
  1076.                                           {noun nnn kills this creature}
  1077.               HOSTILE                 <-- default is friendly
  1078.               THRESHHOLD n            <-- {n is number of times monster can be 
  1079.                                           unsuccessfully attacked before it 
  1080.                                           kills the player - default 3}
  1081.               
  1082.       
  1083.       
  1084.       NOTE: A player cannot exit a room containing a hostile monster. 
  1085.       When killed, creatures are relocated to LOCATION 0.  Currently, 
  1086.       friendly/non-hostile creatures have no effect on the game's outcome.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.       SPECIALs
  1093.       --------
  1094.  
  1095.       If a player properly accesses the KEY to a SPECIAL, by acting on 
  1096.       it in the proper ROOM in a defined manner (PLAY, PUSH, PULL, 
  1097.       TURN), the player is relocated to the room specified in SPECIAL 
  1098.       nn within the room definition, and the text defined in the SPECIAL nn
  1099.       definition is displayed. In reality, if the entry SPECIAL nn 
  1100.       within the original room definition points to the same (current) 
  1101.       room, the player will not actually be moved anywhere, and the 
  1102.       only effect will be to display the SPECIAL text, which is 
  1103.       arranged like the '_DESCR' texts. (If the SPECIAL is activated, the 
  1104.       TURN_DESCR, etc. text is NOT displayed.)
  1105.  
  1106.                                       R-6      
  1107.  
  1108.       TEXT:
  1109.       -----
  1110.       
  1111.       TEXT is like the '_DESCR' texts, except that it is displayed only 
  1112.       when a noun is 'READ' by the player.
  1113.  
  1114.  
  1115.  
  1116.       Page Pauses
  1117.       -----------
  1118.          Normally, the game pauses after every 22 lines of text (so that the 
  1119.       player can read it), and the player then hits <CR> to read more. As you 
  1120.       play-test your game, you might try to adjust your paragraph or line 
  1121.       spacing so that the page breaks don't come at awkward spots and confuse 
  1122.       the player. This is probably most important in the title screen and the 
  1123.       INTRO text; it is less controllable in the individual room descriptions.
  1124.  
  1125.  
  1126.       PLAY, PUSH, PULL, TURN:
  1127.       -----------------------
  1128.       If a noun is defined as playable, pushable, pullable or turnable 
  1129.       and the player attempts to do so, the relevant '_DESCR' text is 
  1130.       displayed. If the action is valid but there is no accompanying 
  1131.       text, the player is informed that nothing interesting happens.  
  1132.          EXCEPTION: if the specified action fulfills the current room's 
  1133.       requirement for a SPECIAL, the push/pull/turn/play text is NOT 
  1134.       displayed, and the SPECIAL nn text is displayed instead for the 
  1135.       room the player is "moved" to.  
  1136.       
  1137.       Note: While "touch" is a synonym for "push" within a game, TOUCH 
  1138.             is NOT a keyword in a .DAT file. Use PUSHABLE and 
  1139.             PUSH_DESCR, not TOUCHABLE or TOUCH_DESCR.  
  1140.  
  1141.  
  1142.       INTRO
  1143.       -----
  1144.          The introductory text is displayed during the game's initialization 
  1145.       and cannot be re-read later. It also cannot be skipped over. It is 
  1146.       recommended that the INTRO text be put at the end of the data file since 
  1147.       it is displayed as it is encountered during initialization (locating it 
  1148.       at the top of the file would result in a long delay AFTER the 
  1149.       introduction and long after the initialization delay message has 
  1150.       vanished).
  1151.  
  1152.  
  1153.  
  1154.       LIGHTs and darkness
  1155.       -------------------
  1156.          If a room has been defined with a LIGHT value other than 0, it will 
  1157.       appear dark if the player enters the room empty-handed. If the LIGHT 
  1158.       value is 1, any noun serving as a light will make the room visible 
  1159.       (provided that the noun has been turned on). If the LIGHT value is a 
  1160.       number from 201 to 299, the room will only be visible if the player is 
  1161.       carrying that noun (it need not be turned on). 
  1162.       
  1163.  
  1164.                                       R-7
  1165.  
  1166.       EATing, DRINKing, and dying
  1167.       ---------------------------
  1168.          Any object defined as EDIBLE can be eaten. Any object defined as 
  1169.       DRINKable can be drunk. And any object defined as POISONOUS will kill the 
  1170.       player if s/he eats or drinks it. POISONOUS has no effect if the noun is 
  1171.       neither edible nor drinkable. In most situations, it is considered poor 
  1172.       sport to make completely non-threatening and logically edible things 
  1173.       poisonous; it is likewise questionable to make packages of rat poison 
  1174.       edible but non-poisonous.
  1175.  
  1176.  
  1177.       WEIGHT and SIZE
  1178.       ---------------
  1179.          Those values are there for a reason. No player can lift an object 
  1180.       heavier than 100, even if it's defined as MOVABLE. Likewise, objects 
  1181.       larger than 100 are too awkward to be carried. The total weight the 
  1182.       player can carry is 100, so the player cannot carry two 60-weight objects 
  1183.       at once. Total size limit is also 100. It is considered poor sport to 
  1184.       assign large weight values to feathers and low values to large slabs of 
  1185.       steel, but cruel gamewriters are able to do so. Likewise, a game will be 
  1186.       less baffling if small objects (pens, tin cans) have small size values 
  1187.       and large ones (desks, cars) are larger.
  1188.          (Remember, of course, that if your scenario puts the player in the 
  1189.       role of King Kong or Godzilla, you'd want to scale everything down so 
  1190.       s/he might be able to easily carry six cars and a bus but have difficulty 
  1191.       with more than one fully-loaded semi or house.)  
  1192.  
  1193.  
  1194.  
  1195.       SCORE (POINTS)
  1196.       --------------
  1197.          The player's progress in the game is reported in two ways: the number 
  1198.       of rooms visited, and the number of points currently held. The player 
  1199.       receives the defined number of points for visiting each room (default 
  1200.       point value is 0), and for carrying each noun when scoring is done 
  1201.       (default is 0). Players get no points for having eaten something, since 
  1202.       objects which are eaten or drunk are removed from the game. There is no 
  1203.       facility to reward the player for eating or punish the player for not 
  1204.       eating.  
  1205.          For best results, it is best to assign a point value to each room 
  1206.       which the player arrives at after solving some puzzle. It's also wise to 
  1207.       award a few points for out-of-the-way rooms. Objects should only have 
  1208.       point values if they can reasonably be expected to be carried at the end 
  1209.       of game -- if an object is too heavy to be lifted, it's not logical to 
  1210.       assign it a point value. Also, make sure that the total weight and size 
  1211.       of the point-valued objects doesn't exceed 99, since the player can't 
  1212.       carry that weight.
  1213.  
  1214.  
  1215.