home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fatal Distractions!
/
fataldistractions.bin
/
appndxa
/
masters
/
mast-doc.pt1
< prev
next >
Wrap
Text File
|
1993-06-13
|
150KB
|
3,590 lines
THE MASTER'S EDITION
OF
THE ADVENTURE GAME TOOLKIT
Version 1.5
BY
DAVID R. MALMBERG
Based on a program by Mark J. Welch
Published by:
Softworks
43064 Via Moraga
Mission San Jose
California
94539
(510) 659-0533
COPYRIGHT, TRADEMARKS AND WARRANTY
COPYRIGHT:
The Adventure Game Toolkit is a copyrighted work, just like a book. It is
protected by United States copyright law and by applicable international
treaty provisions. All text, program, and source code files on disk(s) are
copyright 1987, 1988, 1989, 1990, 1991, 1992 and 1993 by Mark J. Welch and
David R. Malmberg. Portions of the manual and source code are copyright
1985 and 1986 by Mark J. Welch.
TRADEMARKS:
"Adventure Game Toolkit", "AGT" and "Master's Edition" are trademarks of
Mark J. Welch and David R. Malmberg.
WARRANTY:
The program disk(s) and printed manual are warranted to be free from
defects in materials and workmanship for a period of 90 days from the date
of purchase. In the event of a defect, registered users of AGT may obtain
a replacement copy of the program disk(s) and/or manual from Softworks.
The remedy for any breach of warranty shall be limited to replacement or
refund and shall not encompass any other damages, including but not limited
to loss of profit, special, incidental, consequential, or other similar
claims.
DISCLAIMER:
THE ADVENTURE GAME TOOLKIT (AGT) COMES WITH NO OTHER WARRANTIES OF ANY
KIND, INCLUDING WARRANTY OF MERCHANTABILITY OR OF FITNESS FOR A PARTICULAR
PURPOSE. THE ADVENTURE GAME TOOLKIT (AGT) IS AVAILABLE AS IS. IN NO EVENT
WILL THE AUTHORS BE LIABLE FOR DAMAGES, INCLUDING ANY LOST PROFITS OR
INCIDENTAL AND CONSEQUENTIAL DAMAGES, EVEN IF THE AUTHORS HAVE BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES.
Softworks is a member of the Association of Shareware Professionals -- your
guarantee of quality in shareware software.
┌─────────┐
┌─────┴───┐ │ MEMBER
───│ │O │───────────────────
│ ┌─────┴╨──┐ │ Association of
│ │ ├─┘ Shareware
└───┤ O │ Professionals
───────│ ║ │─────────────────────
└────╨────┘
2
QUICK START
THE FILES ON THE DISK(S)
On the disk(s) included with this documentation are a number of files.
Specifically, the disk(s) have the Adventure Game Toolkit's MCOMPILE and
MRUN programs, a number of sample adventure game source files, some
"utility" programs, the latest documentation, and one or more "README"
files.
However, all of these files (except the README files) on the disk(s) are in
a "compressed" form. By doing this, we were able to put the equivalent of
twenty 360K disks worth of material on only six 360K disks. The IBM files
have been "ZIPped." However, the means to "uncompress" your files has also
been included on your disks. To learn how to do this, simply run or browse
the README file. This file will explain in detail what steps you should
follow to create an "uncompressed", fully-useable version of the Adventure
Game Toolkit (AGT).
CREATING A PLAYABLE VERSION OF ONE OF THE SAMPLE GAMES
To create a playable version of one of the sample adventure games on your
disk you will first need to MCOMPILE the game's source files and then RUN
the compiled game using AGT's MCOMPILE and MRUN programs. The detailed
steps needed to do this for an IBM or compatible computer are described in
a section of the manual beginning on page 17.
CREATING YOUR OWN ADVENTURE GAME
When creating your source data files for your own AGT game, you must use a
text editor (Qedit is highly recommended!) or word processor which creates
plain ASCII or TEXT files with a true carriage return at the end of each
line. Lines longer than 80 characters, WordStar or WordPerfect document
files, will cause AGT to abort! The best rule-of-thumb is to use the
MS-DOS "TYPE" command to view the file. If it looks normal, it's probably
OK for AGT. If words split at the end of the line and strange characters
appear, it's probably not OK for AGT.
Obviously, you will need to know what to put into your AGT source files in
order to create your own adventure game. Unfortunately, there is no "quick
start" for doing this -- other than reading the documentation. If you are
anxious to start your own adventure game and want to read as little as
possible to get started, read sections 1 and 2 of the manual. These
sections should tell you enough to get you started. However, read the
other sections of the manual later or you will really miss out on
discovering just how much power AGT can give you to creating truly
professional level, world-class games.
3
SECTIONS OF THE MANUAL
PART 1 gives an overview of the Adventure Game Toolkit, the various files
on the disk(s), and explains how to play the adventure games created by the
AGT.
PART 2 gives a number of pointers on how to create a good adventure game.
It also explains the way AGT defines an adventure game in terms of files
and game data elements like Rooms, Nouns, and Creatures and gives several
examples of each.
PART 3 explains the use of AGT's unique meta-language and how it can be
used to create Professional Level adventure games. Numerous examples are
given.
PART 4 gives several detailed scenarios where meta-language commands have
been used to create typical adventure games situations, like random attacks
by other characters, and how to expand the game's vocabulary to include new
verbs and actions.
PART 5 gives a number of helpful "secret" commands for "debugging" your
game once you have a first draft.
PART 6 shows how to (at your option) incorporate graphic illustrations into
your game.
PART 7 shows how to (at your option) incorporate music and sound effects
that use the PC's internal speaker or Adlib or SoundBlaster (or compatible)
files into your game.
PART 8 shows a variety of the "new and improved" features to be found in
the Master's Edition (that are not available in the Classic Edition).
The final part of the manual is a series of Appendices that give detailed
information on a number of specific AGT topics for easy reference.
HARDWARE REQUIREMENTS FOR AGT
The games created by the Master's Edition of the Adventure Game Toolkit
requires an IBM-compatible computer with at least 512K of memory, MS-DOS
2.1, and a hard disk drive. You may use any kind of monitor and AGT will
automatically adjust its output to best suit your monitor. However, when
viewing illustrations (or pictures) you must have a graphics display. An
EGA or VGA display is recommended.
4
DIFFERENCES BETWEEN THE CLASSIC AND THE MASTER'S EDITIONS
The "Classic Edition" (i.e., the normal/old/regular version) of AGT is very
simple to use and can be used by programming novices or even by
non-programmer's to create very professional text adventures similar to
those from firms like Infocom. Versions of the Classic Edition are
available for IBM, Macintosh, Atari ST and Amiga computers and games
created on any of these computers can be re-compiled and played on any of
the other computers. The Classic Edition is still supported and available
from Softworks as Shareware for only $20 (or $40 including a 223 page
printed manual with lots and lots of detailed examples).
The "Master's Edition" contains all the features and capabilities of the
"Classic Edition" plus a whole lot more. It is totally compatible with the
Classic Edition and games originally developed for the Classic Edition can
be easily converted to and used with the Master's Edition. The Master's
Edition is available only for IBM (or compatible) computers. The Master's
Edition is aimed at the more sophisticated and experienced programmer/game
designer.
The Master's Edition has a number of "new and improved" features not found
in the Classic Edition -- including:
o Bigger games; approximately twice as large as "Classic" games,
e.g., up to 300 rooms, 200 nouns, 900 messages, etc., and a
typical game can have a vocabulary of 1000 words or more.
o An OOPS feature that allows you to edit/correct your input
commands.
o Optional graphic illustrations using PCX formatted pictures for
display on CGA, EGA or VGA screens. The PCX format is the most
widely available of any picture format and is supported by most
PAINT and/or DRAW programs. Plus -- a great deal of PCX
"clip-art" is available.
o Optional animation (*) using FLI files (produced by Autodesk
Animator, Animator Pro, 3D-Studio, PC-Animate, StrataVision 3D
and other animation packages) that can be displayed on VGA
screens (only). The FLI format is the most widely used animation
format. Plus -- a great deal of FLI animation "clip-art" is
available.
o Optional music and sound effects that can be played in the
"background" during the game. These sound effects can either use
the PC's internal speaker or use an AdLib (*) or SoundBlaster (*)
(or compatible) "sound card" (if one is available).
o Optional user-definable "look-and-feel" interface including a
menu-driven player input option that displays feasible commands
for he player to pick from.
5
o Optional "pop-up" hints available when the <Alt> and <h> keys are
pressed at the same time.
o Optional fonts (EGA and VGA monitors only) that can be changed to
suit the needs of the game. The Master's Edition comes with over
30 sample fonts including Old English, Scrawl, Computereze.
Plus, a Font Editor is provided that allows you to create your
own unique fonts.
o Greatly enhanced question and answer capability (*) that makes
the Master's Edition ideal for computer-aided-instruction or
tutorial applications.
(*) New feature available with version 1.5 of the Master's Edition.
The Master's Edition is totally compatible with the Classic Edition and
games originally developed for the Classic Edition can be easily converted
to (using a provided conversion utility) and used with the Master's
Edition.
The Master's Edition is available only for IBM (or compatible) computers.
However, be warned: The Master's Edition is aimed at the more sophisticated
and experienced programmer/game designer!
The Master's Edition is available from Softworks for only $50. This price
includes the cost of six ZIPped disks with over 5 megabytes of goodies
including complete documentation on disk, a bunch of game creation
utilities, several brand new sample games including the complete AGT source
code to:
o HUMONGOUS CAVE (believed to be the largest text adventure game
available on any microcomputer). Based on the "Colossal Cave"
adventure, but expanded to 1000 points, 300 locations, hundreds
of objects, elves and other creatures, treasures and puzzles.
o HURRY! HURRY! HURRY! -- an illustrated, musical text adventure
about a mystery in a traveling circus with all of the game's
related font, music, sound effects and pictures files.
o SHERLOCK HOLMES -- a very unusual, menu-driven adventure where
you play the famous detective and try to solve a total of 18
separate cases. This adventure illustrates the Master's
Edition's vastly improved capability to handle questions and
answers. HOLMES is new with version 1.5 of the Master's.
o BRAINSCAPE -- an adventure that takes place inside the brain
similar to the novels (and movie) by Isaac Asimov "Fantastic
Voyage" and "Fantastic Voyage II: Destination Brain".
o SQUYNCH -- a classic adventure in-the-style-of-Infocom in which
you challenge the evils and mysteries of the Land of Squynch.
Very clever!
6
o PORK -- a parody of the Infocom ZORK series of adventures. If
you were frustrated by ZORK, play PORK and enjoy the sweet fruits
of revenge.
o ADVENTURELAND and PIRATE'S ADVENTURE -- two true classic games by
Scott Adams converted to AGT. See how a real master of the genre
does his magic!
Which version is right for you? If you are a "power" gamer/programmer and
know that you can use (or need) the full power of the Master's Edition,
then by all means -- get the Master's Edition. If you have less experience
with programming or game design, then you should probably start with the
Classic Edition. If you select the Classic Edition, you can always upgrade
later when you need the full power of the Master's Edition -- for a special
"registered AGT user" upgrade price of only $35.
7
ADVENTURE GAME TOOLKIT (AGT) REGISTRATION/ORDER FORM
Remit to: Softworks
43064 Via Moraga, Mission San Jose, California 94539-5748
You can also order by phone using your Mastercard or VISA by dialing
(510) 659-0533, 6:00 PM to 9:00 PM., PST ONLY, Monday to Thursday
9:00 AM to 5:00 PM., PST ONLY, Saturday and Sunday
AGT Registration (Classic Edition).................... $ 20.00 $ ______
includes: (1) Notice of future AGT upgrades, new AGT Adventures and
related AGT products. (2) Latest version of the programs, sample
Adventure game source files (CAVE, CRUSADE, UNDERGND, ALICE and
others), and summary documentation on disk. Over one and half megabyte
of program and data files -- ZIPped on two disks. (3) Telephone
support from 7 PM to 9 PM PST (M-Th) plus Weekends. (4) The option to
upgrade to the Master's Edition of AGT at any time for only $ 35.
Above with printed AGT manual (Classic Edition)....... $ 40.00 $ ______
includes: Above items plus printed manual (223 pages) with numerous
detailed examples on how to use the Adventure Game Toolkit to create
very professional and very clever Adventure games. The printed AGT
manual has approximately 300% the amount of information as contained in
the summary disk documentation.
Master's Edition AGT Purchase ........................ $ 50.00 $ ______
The Master's Edition of AGT is for the IBM only and is aimed at
more sophisticated programmers/game designers. The package includes:
(1) Notice of future AGT upgrades, new AGT Adventures and related AGT
products. (2) Latest version of the Master's Edition programs and
utilities, sample Adventure game source files (HUMONGOUS CAVE, HURRY,
PORK, SQUYNCH, PIRATE and others), and complete documentation on disk.
Over five megabyte of program and data files -- ZIPped on six disks.
(3) Telephone support from 7 PM to 9 PM PST (M-Th) plus Weekends.
Orders are normally shipped by US mail at no additional charge.
For UPS ground shipment, please add $5.00......... $ 5.00 $ ______
Shipments outside the United States are sent via Air Mail:
For shipments to Africa, Hong Kong, Japan, New Zealand
or Australia add ............................ $ 14.00 $ ______
For shipments to Canada or Mexico add........... $ 6.00 $ ______
For shipments to Great Britain and Europe add... $ 10.00 $ ______
For shipments elsewhere outside the USA add..... $ 12.00 $ ______
Subtotal $ ______
(California residents please add 8.25% sales tax) Tax $ ______
******** U.S. Dollars ONLY!!! -------------->>> Total $ ______
Payment by: ( ) Check ( ) MasterCard ( ) VISA ( ) Cash
8
ADVENTURE GAME TOOLKIT (AGT) REGISTRATION/ORDER FORM -- PAGE 2
Name: ____________________________________________________________
Company: ____________________________________________________________
Address: ____________________________________________________________
: ____________________________________________________________
City : ____________________________________________________________
State: ___________________________ Zip:____________________________
Country: ____________________________________________________________
Day Phone: _________________________ Eve: ___________________________
Card #: _________________________________ Exp. Date: _______________
Signature of cardholder: ____________________________________________
AGT Version/Disk Size desired: ______ IBM 5 1/4 ______ IBM 3 1/2
Disk density desired: ______ High ______ Low
------------------------ User comments ------------------------------
I heard about the Adventure Game Toolkit (AGT) from
[ ] - Friend [ ] - Disk Vendor
[ ] - Computer Club [ ] - Computer Store
[ ] - CompuServe [ ] - BIX
[ ] - Genie [ ] - Electronic Bulletin Board
[ ] - Other - Please Specify ________________________________
We would also appreciate any input you would care to give concerning
AGT. If you have any ideas or comments that would make AGT a better
system, then please let us know.
We value your comments and/or suggestions:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
9
ADVENTURE GAME TOOLKIT PRODUCT/TECHNICAL SUPPORT
Softworks will make every reasonable effort to fix AGT bugs, and help
registered users by answering technical and other AGT related questions.
This Product/Technical support for AGT is available to registered users
(only) in several forms:
(1) By telephone to David Malmberg at Softworks, Monday through
Thursday from 7:00 PM to 9:00 PM (Pacific Coast Time) at (510)
659-0533. Or, on Saturday and Sunday from 9:00 AM to 5:00 PM
(PST). Please respect these hours!!!
(2) By CompuServe E-Mail to David Malmberg, CompuServe ID 73435,1277.
(3) By Genie E-Mail to D.MALMBERG.
(5) By letter to: Softworks
43064 Via Moraga
Mission San Jose, California
94539
If you send disks or listings that you wish returned, be sure to
enclosed a self-addressed, stamped envelope (SASE) with
sufficient postage. If you do not enclose a SASE, your material
will not be returned.
Regardless of the method you use to solicit AGT support, if you are having
a problem and you can not get AGT to do what you think it should do, please
provide background information on the following:
(1) The version of AGT you are using. The version number is
displayed on the title screen whenever you execute MCOMPILE or
MRUN.
(2) The computer system you are using.
(3) Your system's configuration, i.e., amount of RAM, number and type
of disk drives, the type of monitor you are using.
(4) Any memory resident programs you have installed at the same time
you are using AGT and a "rough idea" of what they do and how much
memory they take.
(5) Your problem, i.e., what is happening vs. what you think should
be happening.
10
TABLE OF CONTENTS
COPYRIGHT, TRADEMARKS AND WARRANTY . . . . . . . . . . . . . . . . . . 2
QUICK START . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
THE FILES ON THE DISK(S) . . . . . . . . . . . . . . . . . . . . . 3
CREATING A PLAYABLE VERSION OF ONE OF THE SAMPLE GAMES . . . . . . 3
CREATING YOUR OWN ADVENTURE GAME . . . . . . . . . . . . . . . . . 3
SECTIONS OF THE MANUAL . . . . . . . . . . . . . . . . . . . . . . 4
HARDWARE REQUIREMENTS FOR AGT . . . . . . . . . . . . . . . . . . 4
DIFFERENCES BETWEEN THE CLASSIC AND THE MASTER'S EDITIONS . . . . . . . 5
ADVENTURE GAME TOOLKIT (AGT) REGISTRATION/ORDER FORM . . . . . . . . . 8
ADVENTURE GAME TOOLKIT PRODUCT/TECHNICAL SUPPORT . . . . . . . . . . . 10
PART 1: INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . 15
FEATURES OF THE MASTER'S EDITION OF THE ADVENTURE GAME TOOLKIT . . 15
QUICK START FOR CREATING A READY-TO-PLAY GAME . . . . . . . . . . 17
MASTER'S EDITION AGT FILES . . . . . . . . . . . . . . . . . . . . 19
ADDITIONAL GAMES AVAILABLE . . . . . . . . . . . . . . . . . . . . 19
HOW TO PLAY THE ADVENTURE GAME(S) PROVIDED WITH AGT . . . . . . . 20
VOCABULARY . . . . . . . . . . . . . . . . . . . . . . . . . 20
STANDARD LEVEL VERBS . . . . . . . . . . . . . . . . . . . . 22
SOME GENERAL COMMENTS ABOUT COMMANDS . . . . . . . . . . . . 23
ABBREVIATIONS AND SPECIAL KEYS . . . . . . . . . . . . . . . 23
RE-DEFINABLE FUNCTION KEYS . . . . . . . . . . . . . . . . . 24
NEW INPUT "EDITOR" WITH "OOPS" FEATURE . . . . . . . . . . . 24
SPECIAL WORDS . . . . . . . . . . . . . . . . . . . . . . . . 25
NOUNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
NOISE WORDS . . . . . . . . . . . . . . . . . . . . . . . . . 26
PREPOSITIONAL PHRASES . . . . . . . . . . . . . . . . . . . . 26
COMMAND LINE OPTIONS . . . . . . . . . . . . . . . . . . . . 26
PART 2: HOW TO WRITE AN ADVENTURE GAME . . . . . . . . . . . . . . . . 27
INTRODUCTION: WHY SHOULD I WRITE MY OWN ADVENTURE GAME? . . . . . 27
HOW AN AGT ADVENTURE GAME WORKS . . . . . . . . . . . . . . . . . 27
AN OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . 27
THE "MECHANICS" OF WRITING YOUR GAME FILES . . . . . . . . . . . . 29
LABELS AND AGTLABEL . . . . . . . . . . . . . . . . . . . . . 29
LABEL DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . 30
STANDARD LEVEL GAME FILES . . . . . . . . . . . . . . . . . . 31
TITLE FILES . . . . . . . . . . . . . . . . . . . . . . . . . 31
SETTING SCREEN COLORS . . . . . . . . . . . . . . . . . . . . 32
INSTRUCTIONS FILES . . . . . . . . . . . . . . . . . . . . . 33
THE WORK-HORSE .AGT FILE . . . . . . . . . . . . . . . . . . 33
ROOMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
HELP MESSAGES . . . . . . . . . . . . . . . . . . . . . . . . 36
NOUNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
11
MULTIPLE NOUNS WITH THE SAME NAME . . . . . . . . . . . . . . 39
PUSH, PULL, TURN, AND PLAY DESCRIPTIONS . . . . . . . . . . . 39
EATING, DRINKING, AND DYING . . . . . . . . . . . . . . . . . 40
WEIGHT AND SIZE . . . . . . . . . . . . . . . . . . . . . . . 41
LIGHT AND DARKNESS . . . . . . . . . . . . . . . . . . . . . 41
CREATURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
TALK AND ASK MESSAGES . . . . . . . . . . . . . . . . . . . . 44
GROUPS OF CREATURES . . . . . . . . . . . . . . . . . . . . . 44
SPECIALS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
"SPECIAL" SPECIALS . . . . . . . . . . . . . . . . . . . . . 46
CREATING A TYPICAL ROOM . . . . . . . . . . . . . . . . . . . . . 48
"INVISIBLE" NOUNS . . . . . . . . . . . . . . . . . . . . . . . . 51
SCORING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
OTHER DATA ITEMS IN THE .AGT FILE . . . . . . . . . . . . . . . . 53
INTRODUCTION or INTRO TEXT . . . . . . . . . . . . . . . . . 53
STARTING ROOM . . . . . . . . . . . . . . . . . . . . . . . . 53
RESURRECTION_ROOM . . . . . . . . . . . . . . . . . . . . . . 54
MAX_LIVES . . . . . . . . . . . . . . . . . . . . . . . . . . 54
TREASURE ROOM . . . . . . . . . . . . . . . . . . . . . . . . 54
VERB SYNONYMS . . . . . . . . . . . . . . . . . . . . . . . . 54
WARNING . . . . . . . . . . . . . . . . . . . . . . . . 55
PLAYER_DEAD . . . . . . . . . . . . . . . . . . . . . . . . . 55
GAME_WIN . . . . . . . . . . . . . . . . . . . . . . . . . . 56
GAME_END . . . . . . . . . . . . . . . . . . . . . . . . . . 56
PAGE PAUSES . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
ORDER OF DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . 57
HOW TO INCLUDE COMMENTS IN YOUR AGT DATA FILES . . . . . . . . . . 57
CREATING A FINAL COMPILED VERSION . . . . . . . . . . . . . . . . 59
PART 3: USING META-COMMANDS IN PROFESSIONAL LEVEL ADVENTURE GAMES . . 60
CUSTOM USER-DEFINED VERBS . . . . . . . . . . . . . . . . . . . . 60
MAXIMUM_SCORE . . . . . . . . . . . . . . . . . . . . . . . . . . 62
MESSAGES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
A TYPICAL GAME TURN . . . . . . . . . . . . . . . . . . . . . . . 63
"ANY" META-COMMANDS . . . . . . . . . . . . . . . . . . . . . . . 64
META-COMMANDS FOR SPECIFIC WORDS . . . . . . . . . . . . . . . . . 66
"AFTER" META-COMMANDS . . . . . . . . . . . . . . . . . . . . . . 66
THE FORMAT OF META-COMMANDS . . . . . . . . . . . . . . . . . . . 67
PRINTING SHORT MESSAGES FROM META-COMMANDS . . . . . . . . . . . . 70
MULTI-LINE SHORT-CUT MESSAGES . . . . . . . . . . . . . . . . . . 71
META-COMMANDS CONDITIONAL TESTS . . . . . . . . . . . . . . . . . 72
PLAYER CONDITIONS . . . . . . . . . . . . . . . . . . . . . . 73
ITEM(S) CONDITIONS . . . . . . . . . . . . . . . . . . . . . 74
NOUN CONDITIONS . . . . . . . . . . . . . . . . . . . . . . 75
MISCELLANEOUS CONDITIONS . . . . . . . . . . . . . . . . . . 77
TEXT MACROS . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
MACRO NESTING AND RECURSION . . . . . . . . . . . . . . . . . . . 80
MULTIPLE SOURCE FILES . . . . . . . . . . . . . . . . . . . . . . 81
OTHER MCOMPILE KEYWORDS . . . . . . . . . . . . . . . . . . . . . 83
DELIMITER CHARACTERS . . . . . . . . . . . . . . . . . . . . . . . 83
META-COMMANDS ACTION TOKENS . . . . . . . . . . . . . . . . . . . 84
PLAYER ACTION TOKENS . . . . . . . . . . . . . . . . . . . . 84
12
A WORD OF WARNING . . . . . . . . . . . . . . . . . . . . . . 84
ITEM/NOUN/LOCATION ACTION TOKENS . . . . . . . . . . . . . . 85
MISCELLANEOUS ACTION TOKENS . . . . . . . . . . . . . . . . . 86
SPECIAL META-COMMAND SITUATIONS . . . . . . . . . . . . . . . . . 87
FLAGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
DEBUG FLAG . . . . . . . . . . . . . . . . . . . . . . . . . 88
COUNTERS . . . . . . . . . . . . . . . . . . . . . . . . . . 88
VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . . . 89
NUMBER INPUT . . . . . . . . . . . . . . . . . . . . . . . . 93
ASKING AND ANSWERING QUESTIONS . . . . . . . . . . . . . . . 94
DEALING WITH MULTIPLE NOUNS WITH THE SAME NAME . . . . . . . 95
HANDLING THE CONTENTS OF VARIOUS THINGS . . . . . . . . . . . 96
OPENING AND CLOSING PASSAGEWAYS BETWEEN ROOMS . . . . . . . . 97
META-COMMAND REDIRECTION . . . . . . . . . . . . . . . . . . . . . 98
ORGANIZATION OF META-COMMANDS IN THE .AGT FILE . . . . . . . . . . 104
PART 4: SAMPLE AGT META-COMMAND SCENARIOS . . . . . . . . . . . . . . 108
SCENARIO 1: "FIND" VERB ACTIONS . . . . . . . . . . . . . . . . . 108
SCENARIO 2: RANDOM ACTIVITIES BY GUARD . . . . . . . . . . . . . . 110
SCENARIO 3: INTERACTION WITH OTHER CHARACTERS . . . . . . . . . . 117
PART 5: "DEBUGGING" YOUR ADVENTURE . . . . . . . . . . . . . . . . . . 125
PART 6: OPTIONAL GRAPHIC ILLUSTRATIONS . . . . . . . . . . . . . . . . 127
GRAPHIC CONVERSION UTILITIES . . . . . . . . . . . . . . . . . . . 127
SCREEN DISPLAY AND FILE EXTENSION OPTIONS . . . . . . . . . . . . 127
ANIMATION DISPLAYS . . . . . . . . . . . . . . . . . . . . . . . . 128
UTILITY VIEWER . . . . . . . . . . . . . . . . . . . . . . . . . . 129
ROOM, NOUN AND CREATURE PICTURES OR ANIMATIONS . . . . . . . . . . 129
MULTIPLE ROOM PICTURES AND ANIMATIONS . . . . . . . . . . . . . . 131
META-COMMANDS AND PICTURES . . . . . . . . . . . . . . . . . . . . 132
PART 7: OPTIONAL MUSIC AND SOUND EFFECTS . . . . . . . . . . . . . . . 135
SOUND CONVERSION UTILITIES . . . . . . . . . . . . . . . . . . . . 135
ADLIB AND SOUNDBLASTER SUPPORT . . . . . . . . . . . . . . . . . . 136
USING SOUND AND MUSIC . . . . . . . . . . . . . . . . . . . . . . 136
IMPORTANT NOTE ABOUT SOUND AND MUSIC . . . . . . . . . . . . . . . 137
PART 8: OTHER NEW FEATURES UNIQUE TO MASTER'S EDITION . . . . . . . . 139
CUSTOMIZEABLE "DEFAULT" MESSAGES . . . . . . . . . . . . . . . . . 139
CUSTOMIZEABLE USER INTERFACE . . . . . . . . . . . . . . . . . . . 140
ADAPTING YOUR GAME FOR THE "MENU-DRIVEN" PLAYER INPUT . . . . . . 141
INITIAL DESCRIPTIONS FOR ROOMS, NOUNS AND CREATURES . . . . . . . 147
NOUN INITIAL DESCRIPTIONS . . . . . . . . . . . . . . . . . . 147
CREATURE INITIAL DESCRIPTIONS . . . . . . . . . . . . . . . . 148
ROOM INITIAL DESCRIPTIONS . . . . . . . . . . . . . . . . . . 149
SETTING COLORS WITHIN MESSAGES AND DESCRIPTIONS . . . . . . . . . 153
"ILLEGAL" DIRECTION MESSAGES . . . . . . . . . . . . . . . . . . . 154
CUSTOM FONTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
NOTIFY COMMAND . . . . . . . . . . . . . . . . . . . . . . . . . . 155
USER SPECIFIED "STRINGS" . . . . . . . . . . . . . . . . . . . . . 156
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
13
OTHER NEW META-COMMAND TOKENS . . . . . . . . . . . . . . . . . . 159
SUMMARY OF ALL NEW MASTER'S EDITION META-COMMAND TOKENS . . . . . 161
APPENDIX A: AGT ERROR MESSAGES . . . . . . . . . . . . . . . . . . . . 165
ERRORS DURING GAME COMPILATION . . . . . . . . . . . . . . . . . . 165
ERRORS DURING RESTORING GAME . . . . . . . . . . . . . . . . . . . 165
ERRORS DURING GAME PLAY . . . . . . . . . . . . . . . . . . . . . 165
TURBO PASCAL RUN-TIME ERRORS . . . . . . . . . . . . . . . . . . . 166
APPENDIX B: RECOMMENDED SHAREWARE UTILITIES . . . . . . . . . . . . . 167
PIANOMAN 4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
MELODY MASTER . . . . . . . . . . . . . . . . . . . . . . . . . . 167
GRAPHIC WORKSHOP . . . . . . . . . . . . . . . . . . . . . . . . . 168
IMPROCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
PAINT SHOP PRO . . . . . . . . . . . . . . . . . . . . . . . . . . 169
APPENDIX C: ANNUAL AGT CONTEST . . . . . . . . . . . . . . . . . . . . 170
APPENDIX D: ABOUT THE AUTHOR . . . . . . . . . . . . . . . . . . . . . 172
14
PART 1: INTRODUCTION
The Adventure Game Toolkit is designed to allow you to create and play your
own text adventure games. Once created, your adventure games can be shared
with and enjoyed by others -- even if they do not have a copy of the
Adventure Game Toolkit themselves.
The Adventure Game Toolkit (AGT) began life as a program by Mark Welch
called the Generic Adventure Game System (GAGS). Using GAGS it was
possible for the non-programmer to develop complete adventure games using a
fixed (but relatively large) vocabulary of action verbs. David Malmberg
took GAGS and made a number of enhancements including the ability to
customize the vocabulary and to program complex conditional tests and a
rich assortment of actions and messages using a special meta-language
(designed specifically for adventure games). The current Adventure Game
Toolkit combines the best features of both approaches to enable the user to
create two distinct levels of adventure games:
(1) Standard Level games that require no programming experience
(honestly!), only a fertile imagination. These Standard Level
games follow the original GAGS format and only require that the
user generate the game using a word processor or text editor to
describe the various locations, objects and results of actions
that collectively make up the game.
(2) Professional Level games that also make use of the special
adventure game meta-language to create games as complex and rich
as the game designer's imagination and prose style will allow.
These games should be technically comparable with the published
text adventure games from firms like Infocom.
FEATURES OF THE MASTER'S EDITION OF THE ADVENTURE GAME TOOLKIT
The Master's Edition of AGT has a number of features that make it a very
comprehensive adventure product. These features make the Master's Edition
more powerful, more professional and easier to use than any previously
available Adventure Game development system. Some of these key features
are:
POWERFUL
* Big, complex games with up to 300 locations, 200 inanimate
objects (e.g., treasures, swords, lakes, trees, books, etc.)
and 200 animate objects (e.g., people, animals or
creatures).
* Large standard vocabulary with potential to define many more
words unique to a specific adventure. Typical games can
have a vocabulary of 1000 words or more.
15
* Sophisticated parser that can understand (1) complex input
commands including pronouns (IT, HIM, HER, THEM, MY and
ITS), and (2) compound commands separated by AND or THEN or
punctuation symbols, and (3) commands addressed to
characters within the game. Here are a few examples of
commands AGT can handle with ease:
GET THE FLASH LIGHT AND THEN SWITCH IT ON
DROP THE FOOD, THE KEY AND THE BOTTLE THEN UNLOCK THE
DOOR WITH THE BRASS KEY AND THEN LEAVE
PUT ON THE CLOAK, THEN EXAMINE IT; READ ITS LABEL
PLACE THE GREEN ROCK AND THE SMALL PEBBLE BEHIND
THE TREE
ENTER THE HOUSE; GET ALL; EXIT; SOUTH; SOUTH THEN DOWN
SULU, SET A COURSE FOR ALPHA 14
SCOTTY, BEAM DOWN A TRICORDER AND THE QWERTY MODULE
* Special, English-like meta-language (especially developed
for writing Adventure games) that gives the game designer
total control and flexibility in the development of his/her
games.
PROFESSIONAL
* "Look and feel" of Infocom adventure games with similar
screen layout and standard vocabulary and routines.
* Optional graphic illustrations using PCX formatted pictures
or FLI file animation -- if the player's display can support
it.
* Optional fonts (EGA and VGA monitors only) that can be
changed to suit the needs of the game.
* Optional music and sound effects that can be played in the
background during the game. These sound effects can use the
PC's internal speaker or Adlib or SoundBlaster cards.
* Optional user-definable "look-and-feel" interface including
a menu-driven player input option that displays feasible
commands from which the player can pick.
* Optional "pop-up" hints available when the <Alt> and <h>
keys are pressed at the same time.
* Automatic screen adaptation to use either a color or a mono-
chrome monitor. Color combinations may be specified by the
game designer or by the player during the game.
* Predefined function and cursor keys to input frequently used
commands and move directions.
16
* SCRIPT and UNSCRIPT commands to echo game output to printer.
EASY-TO-USE
* Large library of completed games that can be enjoyed simply
as great entertainment or used as a platform by the game
designer to build upon and/or learn from.
* Professionally written documentation totalling over 200
pages. Has numerous examples that unveil the "secrets" of
great adventure writers.
QUICK START FOR CREATING A READY-TO-PLAY GAME
If you've never played an adventure game before, the best way to start to
understand how an adventure game works is to play one. Before you can do
that, however, there are a few things you should do first to protect your
disk(s) and to create the final version of the game from the source files
on the disk(s).
Let's make a playable copy of SQUYNCH (one of the games provided as part of
the Master's Edition package).
NOTE: You would follow exactly the same steps to make a ready-to-play
version of any of the other games provided with the Master's Edition. For
example, if you want to make a playable copy of the game HUMONGOUS CAVE,
just substitute the word "HUGHCAVE" wherever you see the word "SQUYNCH"
below.
1. First, make a copy of the original disk(s) and put them in a safe
place. That way, if you accidentally damage the disk(s) you're
playing with, you can still re-copy the original(s). Check your DOS
manual for the correct form of the COPY or DISKCOPY command that is
appropriate for your particular system.
2. If there is a file on the disk(s) called READ.ME, read that file
before going further. These files will have information on changes
and/or features that have been made after the documentation was
created.
3. Create a new subdirectory (named SQUYNCH) on your hard disk by giving
the DOS command MD\SQUYNCH
4. Copy the following files to your new subdirectory from the Master's
Edition disks: AGTFILES.ZIP, SQUYNCH.ZIP and PKUNZIP.EXE by giving the
following DOS commands:
COPY A:AGTFILES.ZIP C:\SQUYNCH
COPY A:SQUYNCH.ZIP C:\SQUYNCH
17
COPY A:PKUNZIP.EXE C:\SQUYNCH
The above commands assume your floppy drive is drive A: and your hard
drive is drive C:. Change these letters as appropriate for your
drives.
5. Switch to the SQUYNCH subdirectory on the C: drive by giving the
following DOS commands:
C: <-- Switches you to the C: drive
CD\SQUYNCH <-- Switches you to the SQUYNCH subdirectory
6. "Unzip" the ZIP files by giving the following DOS commands:
PKUNZIP AGTFILES.ZIP
PKUNZIP SQUYNCH.ZIP
7. Now you are ready to actually compile the game by giving the DOS
command:
MCOMPILE SQUYNCH
This will cause the MCOMPILE program to read your game source file,
SQUYNCH.AGT, and create a number of intermediate files, SQUYNCH.DAT,
SQUYNCH.MSG, SQUYNCH.CMD, etc. You must have enough space available
on your hard disk for these files to be created. Two megabytes of
free space before you begin to compile a game is recommended.
If the compile of the game is successful, you will hear a loud "beep"
at the end of the process and MCOMPILE will erase the intermediate
files (SQUYNCH.DAT, SQUYNCH.MSG, SQUYNCH.CMD, etc.) from your hard
disk -- since they are no longer needed.
8. The files needed JUST TO PLAY the SQUYNCH game are:
MRUN.EXE <-- The "Run-Time Engine" for all Master's games
SQUYNCH.TTL <-- The SQUYNCH title file
SQUYNCH.INS <-- The SQUYNCH instructions file
SQUYNCH.VOC <-- The SQUYNCH vocabulary file
SQUYNCH.BAT <-- The SQUYNCH batch file
SQUYNCH.D$$ <-- A SQUYNCH game data file
SQUYNCH.DA1 <-- A SQUYNCH game data file
SQUYNCH.DA2 <-- A SQUYNCH game data file
SQUYNCH.DA3 <-- A SQUYNCH game data file
SQUYNCH.DA4 <-- A SQUYNCH game data file
SQUYNCH.DA5 <-- A SQUYNCH game data file
SQUYNCH.DA6 <-- A SQUYNCH game data file
And optionally -- the SQUYNCH.SOL file, the solution to the game.
These files may be copied to a "floppy" disk or another directory on
18
your hard disk as the "finished" game that is ready-to-play by giving
the DOS command SQUYNCH.
9. You will be left with a number of files in your SQUYNCH directory that
are unnecessary to play the finished SQUYNCH game. These files
include:
SQUYNCH.ZIP <-- The SQUYNCH zip file containing the source code
AGTFILES.ZIP <-- The AGT zip file containing various files
ORDERFRM.AGT <-- The AGT order form
AGT.STD <-- The AGT "standard" default message file
IRUN.STD <-- The AGT "first-person" default message file
STDDEFS.AGT <-- The AGT "standard" DEFINEs file
MCOMPILE.EXE <-- The AGT game compiler
AGT.VOC <-- The AGT "standard" default vocabulary file
PKUNZIP.EXE <-- The "unzipper" utility
SQUYNCH.AGT <-- The SQUYNCH source code file
SQUYNCH.SOL <-- The SQUYNCH solution or "Walk-Thru" file
If all you wanted to do was create a playable version of SQUYNCH, all
of these files may be deleted. However, if you want to build your own
new game using SQUYNCH as your starting "platform," then keep these
files in the subdirectory until you have finished your new SQUYNCH
game.
MASTER'S EDITION AGT FILES
Included on the disk(s) are numerous files. If there is a file on the
disk(s) called READ.ME, read that file before going further. That file
will have "late-breaking news" as well as information about all of the
files that make up the Master's Edition.
ADDITIONAL GAMES AVAILABLE
If you would like additional games, you should be aware of our annual
contest. Softworks sponsors an annual Adventure Game writing contest and
makes the AGT source code available for the winning games. All registered
users will received a "flyer" describing the winning games and how they can
get copies. This flyer is normally sent once a year in June when the
contest judging has been completed and the winners selected.
Incidently, see Appendix C on page 170 for details on how you can enter
your game in the current AGT game writing contest.
19
HOW TO PLAY THE ADVENTURE GAME(S) PROVIDED WITH AGT
VOCABULARY
The Adventure Game Toolkit creates adventure games that understand a wide
variety of commands. A typical AGT game might have a vocabulary totalling
1000 words or more.
Your game's commands should generally be in the format:
<verb phrase> <(multiple) noun phrase(s)> <preposition> <noun
phrase/object>
Verb phrases can consist of a simple verb like EAT, SHOOT, READ or a verb
followed by a preposition such as CLIMB UP, JUMP THROUGH, or SWIM IN. Noun
(or object) phrases can consist of a single word noun like TREE, ROCK, LAKE
or a noun and its adjective such as RED ROCK, SMALL BOWL or UGLY MUTANT.
Several nouns may be connected with AND's or commas. Articles like A, AN
or THE are optional. The personal pronouns MY and ITS are also optional.
The pronouns IT, THEM, HIM and HER may be used to refer to a previously
mentioned noun.
Here are some (hypothetical) examples of valid commands:
PLACE A RED ROCK IN THE SMALL BOWL
PUT THE GREEN ROCK AND THE SMALL PEBBLE BEHIND THE OAK TREE
READ MY POETRY BOOK
SWIM IN THE SWIMMING POOL
EXAMINE THE GOLD RING, THE DWARF AND THE SILVER NECKLACE
EAT THE CELERY, THE TUNA, THE APPLE AND THE ONION
THROW THE BATTLE AXE AND THE LARGE ROCK AT THE WEREWOLF
SHOOT THE BURGLAR WITH THE REVOLVER
ATTACK HIM
("HIM" will refer to last noun mentioned, e.g., the burglar)
FIRE THE LASER PISTOL AT THE ALIEN MUTANT
GET THE BOOK (also: TAKE THE BOOK)
READ IT
("IT" will refer to last noun mentioned, e.g., the book)
GET ALL (will get everything movable at the current location)
GET THE KEYS, BOTTLE, FOOD AND THE CLOAK
EXAMINE THE KEYS, BOTTLE, FOOD AND CLOAK
PUSH THE RED BUTTON AND THE GREEN BUTTON
UNLOCK THE FILE CABINET WITH THE STEEL KEY
JUMP THROUGH THE OPENING
JUMP OVER THE LOG
NORTH
SOUTHWEST
PLACE AN AXE AND THE SHIELD NEXT TO THE BIG TREE
PUT THE FOOD ON THE KITCHEN TABLE
TURN ON THE FLASHLIGHT
LIGHT THE TORCH WITH THE WOODEN MATCHES
20
SCREAM AT THE UGLY TROLL
CLIMB UP THE LADDER
EXTINGUISH THE FIRE (or PUT OUT THE FIRE)
DRINK THE WHITE WINE
THROW THE FIRE WOOD IN THE STOVE
PULL THE BELL CORD
WEAR THE STUPID HAT (also: PUT ON THE STUPID HAT)
TAKE OFF THE HAT (also: REMOVE THE HAT)
NE (for NORTHEAST)
DROP THE KEY AND THE BOTTLE
ENTER THE CAVE
XYZZY (i.e., a "magic" word)
TURN THE DOORKNOB
PLAY WITH THE DOG
TALK TO (or TALK WITH) THE OLD MAN (ABOUT THE WEATHER)
TELL JEFF ABOUT THE SWORD
ASK JODIE ABOUT THE CRIME
Compound commands can be created by connecting single commands (like those
above) with "AND", "THEN" or the punctuation symbols "," or ";" to connect
two or more separate commands. However, "end-of-sentence" punctuation
symbols like ".", "!" and "?" should not be used. Below are a few examples
of valid compound commands:
TURN THE DOORKNOB; OPEN THE DOOR THEN ENTER THE ROOM
CLIMB DOWN THE LADDER THEN SOUTH, WEST AND NORTHWEST
GET THE CLOAK AND THEN EXAMINE IT; READ THE LABEL
DROP THE FOOD AND THE BOTTLE THEN UNLOCK THE DOOR AND THEN LEAVE
GET THE TORCH, LIGHT IT WITH THE WOODEN MATCHES THEN EXAMINE IT
AGT's parser also allows you to give commands to other characters in the
game like these:
SULU, SET A COURSE FOR ALPHA 14
SCOTTY, BEAM DOWN A TRICORDER AND THE QWERTY MODULE
HELMSMAN, RAISE THE DEFLECTOR SHIELDS
BONES, COME TO THE BRIDGE
The comma after the character's name is optional.
One point of advice about command structure is in order. Your commands
should be structured to follow the most "natural" sequence of words when
two or more sequences are possible. For example, THROW THE GOLDEN EGGS TO
THE TROLL will be understood by the AGT parser, whereas THROW TROLL THE
EGGS will not be understood -- even though it is understandable to most
humans as equivalent. Similarly, you should avoid the verb "USE", such as
USE THE KEY TO UNLOCK THE DOOR. This command should be entered simply as
UNLOCK THE DOOR WITH THE KEY.
NOTE: Player's input commands will be shown in all caps throughout this
document.
21
STANDARD LEVEL VERBS
Standard level games have a fixed set of verbs -- although these may all be
supplemented by additional synonyms. Professional level games have all of
the standard level verbs plus they can have additional verbs that are
defined uniquely for each game. The standard level verbs and the form of
their commands are shown below:
Meanings of notation:
[required word]
{optional word}
| (means OR, i.e., alternative words)
Verbs that do not require nouns
===============================
N,S,E,W,NE,NW,SE,SW,U,D,
NORTH,SOUTH,EAST,WEST,NORTHEAST,NORTHWEST,SOUTHEAST,
SOUTHWEST,UP,DOWN
ENTER | GO [IN | INTO]
EXIT | LEAVE (* directions *)
SCORE (* display score and status *)
QUIT | Q (* end game *)
INVENTORY | I (* list things player is carrying and wearing *)
SCREAM | SHOUT | YELL (* make noise *)
WAIT (* waste a turn *)
BRIEF | VERBOSE (* change description mode *)
L | LOOK (* repeat full description *)
SAVE | RESTORE {GAME} (* save and restore game status *)
HELP | H (* ask for help *)
AGAIN | G (* repeat last command entered *)
SCRIPT (* echo all output to both printer (LP1:) and screen *)
UNSCRIPT (* send all output to screen only *)
Verbs that require nouns (and perhaps objects)
==============================================
LIST | SHOW [EXITS] (* list visible exits *)
THROW | CAST | DUMP [noun]
{[AT | TO | IN | INTO | ACROSS | INSIDE] [noun]}
ATTACK | KILL | FIGHT | HIT [creature] {[WITH] [noun]}
DROP | PUT DOWN [noun | ALL]
GET | TAKE | PICK UP [noun | ALL]
OPEN [noun] {[WITH] [noun]}
CLOSE | SHUT [noun]
LOCK [noun] {[WITH] [noun]}
UNLOCK [noun] {[WITH] [noun]}
EXAMINE | CHECK | INSPECT | LOOK AT | LOOK IN [noun]
READ [noun]
EAT [noun]
DRINK [noun]
PUT | PLACE [noun]
[IN | WITH | INSIDE | INTO | NEAR | BEHIND |
22
BESIDE | ON | UNDER] [noun]
PUSH | TOUCH [noun] {[WITH] [noun]}
TURN [noun] {ON | OFF}
TURN {ON | OFF} [noun]
PULL [noun]
PLAY {WITH} [noun]
LIGHT [noun]
EXTINGUISH | PUT OUT [noun] (* synonym is "EXT" *)
SHOOT | FIRE [noun] [AT] [creature]
SHOOT | FIRE [creature] [WITH] [noun]
PUT ON | WEAR [noun | ALL]
TAKE OFF | REMOVE [noun | ALL]
ASK [creature] [ABOUT] [noun]
TALK [TO | WITH] [creature] {[ABOUT] [noun]}
TELL [creature] [ABOUT] [noun]
SOME GENERAL COMMENTS ABOUT COMMANDS
Figuring out what words work in a game is part of the "challenge" of some
adventure games. The usual directions are understood by AGT games (N, S,
E, W, NE, NW, SE, SW, UP, and DOWN; in some cases, ENTER or EXIT might also
be appropriate). Other events might also cause you to change location: if
you detonate a nuclear warhead, for example, you'll likely be immediately
transported somewhere far, far away.
You can try to TAKE or GET most things that are in a room with you; you
should EXAMINE or LOOK AT most visible nouns as well, whether or not you
are carrying them. You can DROP or THROW anything you're carrying. Eating
and drinking are often permitted, but eating strange things is usually
dangerous. If something seems to be closed or locked, you can try to open
or unlock it -- but it may require some special kind of key.
There's no penalty for incorrect words: if the game doesn't understand a
word, it gives you another chance and doesn't count the invalid input as a
turn.
If you try to do something foolish like EAT THE CHAIR or GET THE BUILDING,
the game will give you an appropriate response like "Eat the chair? You
must be kidding!" or "The building can not be taken".
ABBREVIATIONS AND SPECIAL KEYS
All of the directions can be abbreviated by using one or two key letters.
For example, N for NORTH, SW for SOUTHWEST, U for UP, etc. You can also
abbreviate EXAMINE as EX (e.g., EX BOOK). To turn out a light, you can
EXTINGUISH it, and EXTINGUISH can be abbreviated as EXT (e.g., EXT LAMP).
Other acceptable abbreviation are L for LOOK, I for INVENTORY, G for AGAIN,
H for HELP and Q for QUIT.
23
It is also possible to use the function keys and the cursor keys (in
combination with the Alt key) in lieu of many frequently used commands and
directions as follows:
F1 -- GET Alt-Up Arrow -- NORTH
F2 -- DROP Alt-Down Arrow -- SOUTH
F3 -- EXAMINE Alt-Right Arrow -- EAST
F4 -- READ Alt-Left Arrow -- WEST
F5 -- OPEN Alt-Home -- NORTHWEST
F6 -- CLOSE Alt-End -- SOUTHWEST
F7 -- INVENTORY Alt-Pg Up -- NORTHEAST
F8 -- LOOK Alt-Pg Dn -- SOUTHEAST
F9 -- SCORE Alt-Gray "-" Key -- UP
F10 -- HELP Alt-Gray "+" Key -- DOWN
Alt-Ins -- ENTER
Alt-Del -- EXIT
If at any time during the game the player needs to be reminded of what the
function and cursor keys stand for, hitting the ? key followed by <ENTER>
will produce a diagram of what each cursor and function key means.
RE-DEFINABLE FUNCTION KEYS
As explained above, the function keys have been predefined to stand for
several of the most frequently used commands. Now, by giving the command
DEFINE, you may re-define any of the function keys to give any input
command you wish. For example, in a game you might find it useful to
re-define one of the function keys to give the command KILL ORC WITH AXE or
GIVE CANDY TO BABY.
Hitting the '?' key (during the game) will display a diagram of keys and
their current definitions.
NEW INPUT "EDITOR" WITH "OOPS" FEATURE
The Master's Edition of AGT has a much improved input command editor than
that found as part of the Classic Edition. Now it is possible to edit
(using the cursor keys, and the delete, insert and backspace keys) either
the command you are currently entering or your previous command. For
example, if you are entering a command and you notice that you have typed
THORW ROPE by mistake, you can use the left arrow key to move the cursor
over to the mistake and correct it to THROW ROPE.
Also, there is now an OOPS command that will allow you to recall and edit
your previous command.
24
SPECIAL WORDS
Certain words have special meanings to AGT games. SCORE will let you see
how much progress you've made and will give you an idea how much of the
game you've seen so far. QUIT will permit you to stop the game and return
to DOS. SAVE will allow you to save the current game status, and RESTORE
will restore a previously-saved game. AGAIN (or its abbreviation G) will
cause the game to respond as if the previous command had been entered
again.
In addition, AGT also allows the use of SCRIPT to echo all of the game's
output to your printer (as well as the screen). UNSCRIPT may be used to
turn off the printer output.
As you move around through the game, you'll notice that the game provides a
long text description of each room only when you first enter the room. To
see the full description again, type LOOK or L or hit the F8 function key.
The game doesn't keep these long text descriptions in memory, but instead
reads them from disk each time it needs them. If you don't like this
delay, you can suppress the long text by using the BRIEF command. VERBOSE
will bring them back.
Further, in AGT it is possible to issue commands for HELP or alternatively
hit the F10 key. Be warned, however, that some game designers might feel
that the situation does not deserve any help or, worse yet, some deviate
designers might actually give the player a hint that is a little
misleading.
NOUNS
While the list of verbs is generally similar from game to game, all the
nouns change every time. One game might be filled with weapons and
creatures, while another might contain many keys and locks. Most nouns are
unique: you probably won't find more than one "gold key," but you might
find a "brass key," an "access card," and an "entry pass." The game only
understands an adjective if it is correctly followed by the matching noun:
if TAKE RED FLUTE is valid, the game will not try to guess what you meant
by TAKE RED or TAKE RED INSTRUMENT or TAKE THE RED ONE. It will accept
TAKE FLUTE, but not TAKE BLUE FLUTE.
With some verbs, nouns are optional. For example, NORTH is quite clear by
itself, and any "valid" words following it will be ignored completely. EAT
needs a noun of some kind, preferably an edible one. And some things may
not be possible unless you specify a tool: UNLOCK PADLOCK may not be
acceptable, while UNLOCK THE PADLOCK WITH THE BRASS KEY may work fine.
25
NOISE WORDS
The words "THE", "MY", "ITS", "A" and "AN" are ignored; so are friendly
words like "PLEASE" and "NOW." This way, PLEASE PUT A RED ROSE AND MY NOTE
ON THE SMALL TABLE NOW can be understood, while the game may be quite
confused by PLEASE YOUR MOTHER.
PREPOSITIONAL PHRASES
In some cases, the preposition need not be followed by an object (TURN THE
GAS STOVE ON is fine), but often the game will be puzzled unless you
provide one. For example, UNLOCK THE PADLOCK WITH or PLACE THE BOOK BESIDE
just won't do.
COMMAND LINE OPTIONS
In order to accommodate as many hardware systems as possible, it is
possible to enter a "/B" option on the command line that invokes your
adventure game. This causes the game to use the BIOS for all output,
rather than writing directly to the screen memory locations (which is
considerably faster and AGT's default mode of operation). Some clones may
require this option. Also, some multi-tasking environments (specifically,
DESQview) need this option to allow an AGT game to run in its own "window".
If you find that an AGT game causes strange behavior on your screen, you
should try this option. For example, to play the game QUEST using this
option, you would start the game from the DOS prompt with "MRUN QUEST /B".
There is one additional command line option available. If you wish the
player's input to be in lower case, rather than AGT's default mode of upper
case, use the option "/L". For example, to play CAVE with lower case
player input, start the game from the DOS prompt with "MRUN CAVE /L".
26
PART 2: HOW TO WRITE AN ADVENTURE GAME
INTRODUCTION: WHY SHOULD I WRITE MY OWN ADVENTURE GAME?
Here are a few good reasons:
* Imagine your office as an adventure game. Imagine the wonderful
descriptions you could provide for your co-workers' offices, the
analogies you could make for the delivery people, and the
thinly-veiled insults of your boss you could include. If such an
adventure game scenario were written in reasonable taste, it
could serve as a well-deserved diversion on a Friday afternoon.
Of course, if it's written in poor taste, and your insults aren't
veiled enough, it could be your last Friday.
* Maybe you are trying to teach someone something. Perhaps you
want them to learn about computers. Maybe you want to guide them
through many screens of tutorials. If you could write the text
as an adventure game, and make learning a game, the game players
might learn faster and even have fun doing it. An excellent
example of this is a series of spreadsheet templates called
Templates of Doom which has introduced Lotus 1-2-3 (in the guise
of an adventure game) to thousands of new spreadsheet users.
Another excellent example is a game entitled Brainscape which
teaches the anatomy of the human brain by letting the player (who
has been reduced to microscopic size) explore the various
"locations" of the brain in search of human growth hormone and
other "treasures" -- so the he can be restored to normal size.
* Or maybe you're well-equipped with a great imagination and you
want to develop a game that will rival the ones you've bought in
stores or played with friends. Perhaps this is your chance to
prove your fiction-writing abilities.
* Or last, but not least, because writing adventures is even more
fun than playing them.
HOW AN AGT ADVENTURE GAME WORKS
AN OVERVIEW
When a player begins to play an AGT game, the first thing the program does
is look on the disk for a title file (indicated by a .TTL file extension),
which should contain the name of the game, the author's name, and perhaps a
copyright statement. Each line in the file is displayed centered on the
screen.
AGT also posts its copyright notice just below the game writer's title
information. If, for some reason, there is no file with a .TTL extension,
27
the AGT copyright information is displayed by itself. The title screen,
with the author's information and AGT's, stays on the screen while the
program initializes all its data arrays and records and reads the various
compiled data file.
If the game's .AGT file contains some text preceded by the keywords INTRO
or INTRODUCTION and ended with the keyword END_INTRO, that text is
displayed at the beginning of the game. It cannot be re-read during the
game.
In addition to the INTRO section of the .AGT file, there can also be an
instruction file with a .INS extension. If such a file exists for the
adventure being played, before actual play begins AGT will ask the player
if he/she would like instructions. If the answer if yes, this file will be
displayed.
Once all the data has been read and the player has had an opportunity to
read the game's instructions (if any), the program puts the player into the
game's starting location. AGT then prints the long text description for
the starting location and the player is asked what to do.
Each time the player types in a command and <ENTER>, the program sends the
input line to the "parse" module. The parser takes the input line, breaks
it into separate words, and tries to locate an addressee (if the command is
being directed to another character), a verb, a noun, a preposition, and
another noun as the object of the preposition. It does this by eliminating
extra words like "THE" and "PLEASE"; and by checking and then eliminating
adjectives. It returns up to five words: addressee, verb, noun,
preposition, and an object of the preposition. (If any of these elements
is missing, the "empty string" ('') is returned in its place.)
If an invalid word is found by the parser, it informs the user, indicating
what part of speech AGT expected and which specific input command word it
didn't recognize. Otherwise, the program then calls the execute module;
this section selects a procedure to call based on the verb (THROW, TAKE,
EAT, MOVE, etc.). Depending on the procedure's own checking, the noun,
preposition and object might be rejected as invalid or, in some cases,
ignored partly or completely and an appropriate "error" message will be
given For example, "EAT CASTLE" would typically cause the "error" message:
"It is impossible to eat the castle."
There are two ways a player can be moved to a new room. One is by
specifically trying to do so. Moving east is generally accomplished by
typing EAST or E or hitting the Right Arrow cursor key. If the player
tries to move in a direction that is not allowed, AGT will inform him that
such a move is impossible.
The other way to move is by meeting a set of special requirements that the
game's author has defined as a "special." The special might be defined, in
plain language, as "if the player is in the sauna, and he turns the faucet,
then move him to another room X." That other room X might be anything.
One possibility is that it may be a room with a similar or identical
28
description, but with a new exit or without an old one. It might even be
the same room, but by executing the "special," the program displays several
lines of text.
In this case, the special text might be "You turn on the faucet, and
scalding hot water pours onto your feet. You scream in agony and kick the
faucet, which is turned off." If the author was cruel, the "special" here
might move the player to a new room called "hell" and be told "As you turn
the faucet, scalding hot water pours out onto your legs. You scream in
agony, but the faucet won't shut off. In minutes, you are scalded to
death. You awaken in purgatory, where Satan tells you that your punishment
for killing the lizard (something the player did earlier to get here) will
be boiling in oil for eternity." The new room description would describe a
vat of boiling oil, provide no exits, and include the keyword GAME_END to
end the game.
For relatively simple adventure games (i.e., Standard Level games),
"Specials" are the way you do almost anything unusual. Of course, a
special can be used to move a player to a new room (i.e., TOUCH MIRROR
might cause the player to fall through the looking-glass and into a new
room). But specials also allow a room to be "changed" in the player's view
-- this is accomplished by actually moving the player to a new, but similar
room. If you want an airlock to close one door and open another, you use a
"special" which moves the player to a 'new' airlock with a different exit.
If you want a player to 'teleport,' you use a special. If you want to
player to be surprised by some action but not moved (i.e., PLAY STEREO
could lead to "Beethoven's Fifth plays loudly, awakening the neighbors.
Someone pounds loudly on the ceiling"), use a special. More examples of
"Specials" will be given later.
CREATING YOUR SOURCE DATA FILES WITH WORD PROCESSORS
When creating your source data files for your own AGT game, you must use a
text editor (I recommend QEdit -- a wonderful shareware text editor) or
word processor which creates plain ASCII or TEXT files with a true carriage
return at the end of each line. Lines longer than 80 characters, WordStar
or WordPerfect document files, will cause AGT to abort! The best
rule-of-thumb is to use the MS-DOS "TYPE" command to view the file. If it
looks normal, it's probably OK for AGT. If words split at the end of the
line and strange characters appear, it's probably not OK for AGT.
THE "MECHANICS" OF WRITING YOUR GAME FILES
LABELS AND AGTLABEL
The Master's Edition of AGT uses labels rather than numbers -- similar to
the way the utility AGTNUM works. AGTNUM is a utility that is provided as
a part of the Classic Edition of AGT.
29
A utility, named AGTLABEL, can be used to convert your old/normal (i.e.,
Classic Edition) game source files to files that use labels instead of
numbers. By the way, be sure to use an .OVR file to preserve the meanings
of all of your game's flags, counters, variables, etc. Read the
AGTLABEL.DOC file for details.
The .AGT file looks very much like the files it replaced. The main
difference is that it uses text labels instead of numbers for rooms, nouns,
and the like. The labels are enclosed in delimiters, which are braces [ ]
by default. (This can be changed.) Labels may consist of any ASCII
characters (even whitespace characters), except the closing delimiter. For
example, the following labels are all legal (and unique):
[bridge]
[the captain's quarters]
[transporter pad number 6]
[ transporter pad number 6 ]
[!@#$%^&*()]
[[[[[[]
[!]
[ ]
[ ]
The null label [] is not allowed. MCOMPILE, the Master's Edition's game
compiler, is insensitive to case by default, so [bridge] and [BRIDGE] are
considered identical.
When MCOMPILE parses the .AGT file, it assigns appropriate numbers to the
labels. When the output files are written, the numbers are substituted for
the labels. (The .AGT file is not changed by MCOMPILE.)
LABEL DEFINITIONS
When MCOMPILE encounters a label, it must determine what type of item the
label refers to (room, message, flag, etc.). For some items, the normal
item definition gives this information. Consider this example:
ROOM [sickbay]
Sickbay
EXIT [corridor]
END_ROOM
ROOM_DESCR [sickbay]
This is the sickbay, where the regulars are cured of all their ills
and the extras meet slow, painful deaths.
END_ROOM_DESCR
In this case, the word "ROOM" at the beginning of the line tells MCOMPILE
that [sickbay] is a label for a room. Labels for nouns, creatures,
messages, and questions are determined in the same way.
30
STANDARD LEVEL GAME FILES
Each Standard Level games can have up to three files: A title file (e.g.,
ALICE.TTL), an instruction file (e.g., ALICE.INS), and a data file
(ALICE.AGT). Each of these file types will be explained in separate
sections to follow.
TITLE FILES
If there is a file with a .TTL extension, that file is displayed first
before the actual game play begins. The contents of this file will be
displayed centered on a cleared screen. For example, the title file for
the ALICE IN WONDERLAND game contained in the ALICE.TTL file is:
The Adventures of Alice
Who
Went Through the Looking-Glass
And
Came Back
Though Not Much Changed
Based on characters created by Lewis Carroll
Game and Text Copyright 1986 D.A. Asherman
This would actually be centered on the screen as follows:
The Adventures of Alice
Who
Went Through the Looking-Glass
And
Came Back
Though Not Much Changed
Based on characters created by Lewis Carroll
Game and Text Copyright 1986 D.A. Asherman
Optionally, the title information can be included in the game's .AGT file
by doing the following:
TITLE
The Adventures of Alice
Who
Went Through the Looking-Glass
And
Came Back
Though Not Much Changed
Based on characters created by Lewis Carroll
Game and Text Copyright 1986 D.A. Asherman
END_TITLE
31
SETTING SCREEN COLORS
AGT sets the screen colors to be used during the adventure automatically.
If the game is being played on a color monitor, the screen output is quite
colorful. Specifically, the default screen colors will be:
Normal text color is Cyan
High lighted text color is Yellow
Background color is Black
Reverse text color is Red
Reverse background color is Light Gray
These colors cause the normal screen output to be shown as "Cyan on Black",
while the player's input is shown as "Yellow on Black", and the status line
at the top of the screen is shown as "Red on Light Gray".
These default colors can be changed to specific different colors in the
first line of the .TTL file. For example, if you wanted to change the
color combinations to normal output of "White on Blue", and player input of
"Yellow on Blue", and the status line of "Black on Cyan", then you are
specifying:
Normal text color is White
High lighted text color is Yellow
Background color is Blue
Reverse text color is Black
Reverse background color is Cyan
This could be accomplished by putting the following line as the first line
of the .TTL file:
COLORS WHITE YELLOW BLUE BLACK CYAN
If you are playing the game on a monochrome monitor, most of the screen
output will be "White on Black", i.e., the normal monochrome output for
your monitor. The only exceptions will be the player input which will be
shown high-lighted and the status line on the top of the screen which will
be shown in reverse, i.e., "Black on White". On monochrome monitors, this
basic monochrome color combination will be used automatically regardless of
what may have been specified in the COLORS command in the first line of the
.TTL file.
It is also possible for the player to change the screen color combination
by giving input during the game. For example, if the player inputs:
COLORS YELLOW GREEN CYAN BLACK LIGHTGRAY
during the game, the screen will immediately change to "Yellow on Cyan",
with the player's input shown as "Green on Cyan", and the status line
displayed as "Black on Light Gray" -- if the game is being played on a
color monitor. If the game is being played on a monochrome monitor, the
above player input would have no effect. Other player color commands
32
allowed are:
COLORS MONO
which changes the screen to a monochrome color combination - even on a
color monitor, and:
COLORS DEFAULT
which will return the screen to AGT's default color combination --
depending upon the type of monitor the game is currently being played upon.
INSTRUCTIONS FILES
If there is a file with the correct filename and the suffix .INS, then AGT
will ask the player if he wished to read the instructions for the game. If
the response is Y or YES, the filename.INS file will be displayed a screen
at a time with a pause between screens. If the player responds with N or
NO, then the instructions will be skipped and the game will begin normally
in the starting room location.
If there is no .INS file, then the instruction prompt will not appear and
play will begin without any instructions.
Optionally, the instructions can be included in the game's .AGT file by
doing like the following:
INSTRUCTIONS
The instruction text goes here.
END_INSTRUCTIONS
THE WORK-HORSE .AGT FILE
Adventure games are really just a special kind of data base application.
The game driver (for AGT, this is MRUN.EXE) just accesses the adventure
data base to retrieve data based on the player's commands. This is much
like how a "standard" data base application might display all employees in
the marketing department with salaries over a certain amount after getting
a query from the data base user. For Standard Level AGT games, the data
base is contained in the .AGT file. This file is the real work-horse file
for AGT adventure games. The most important data elements in an AGT game
are three large data arrays: the game's ROOMS, NOUNS, and CREATURES. Each
of these data types will be explained in separate sections that follow.
33
ROOMS
The room specification in the .AGT data file is quite simple:
Required:
|<-----significant----->|<------ignored------------------------>|
|
ROOM [label] <-- [label for the Room], i.e., its AGT
"name"
Room Name <-- short room name (up to 30 characters),
that will be shown on the status
line (do not include comments!)
{optional characteristics}
END_ROOM
Optional characteristics: <-- optional but at least one is
strongly recommended
|<---significant--->|<------ignored------------------------>|
|
{direction} [Room label] <-- Room label is the room to be found in
that direction. The default is
[none] or zero.
{any one of 12 directions can be
specified, from the list:
NORTH NORTHEAST UP
SOUTH SOUTHEAST DOWN
EAST NORTHWEST ENTER
WEST SOUTHWEST EXIT}
SPECIAL [Room label] <-- optional, Room label is a room name.
{If present, the current definition
must include KEY xxx and there must
be a SPECIAL [Room label] definition}
KEY [Noun label] <-- Noun label is for the noun that
{activates special [Room label]}
LIGHT [Noun label] <-- Noun label for a light that is a noun
used to light up the room OR the
value 1 for ("any light"). The
default is [none] or no light is need
for the room.
POINTS xxx <-- xxx is number of points player is
awarded just for getting here.
Default is 0.
LOCKED_DOOR <-- default is FALSE. If TRUE, AGT
will act as if there is a locked
door that cannot be opened in
the room and give various
appropriate messages if player
tries to do something to the
34
door.
PLAYER_DEAD <-- if this line is in the definition,
the player dies as soon as he or she
enters the room.
GAME_END <-- if this line is in the definition,
the game ends as soon as the player
enters the room (the room_descr
is displayed, then the score).
(Player loses game here.)
GAME_WIN <-- if this line is in the definition,
the game ends as soon as the player
enters the room (the room_descr
is displayed, then the score).
(Player wins game here.)
ROOM_SYNONYMS <-- default is NONE. Room synonyms are
indicated in the .AGT file as:
ROOM_SYNONYMS MAGIC_WORD XYZZY SESAME
ROOM_SYNONYMS CHANGE_LOCATION CLIMB
ROOM_SYNONYMS PLAY SHOW DISPLAY FLASH
These cause the first word (which must
be a valid verb) to be substituted
whenever the player enters one of the
words following the first word in that
room. For example, if the player
entered SHOW, DISPLAY, or FLASH
(above), AGT would act as if the word
PLAY (which is a "special") was
entered and react accordingly. There
can only be one room synonym
specification in each room.
PICTURE [Picture label] <-- Picture label for a PCX format picture
file associated with this ROOM.
To be explained in a later section.
It is recommended that at a minimum, one exit from each room be provided;
otherwise the player will be stuck in the room until he quits. Of course,
that direction might be a special -- which will be explained in a later
section.
A room description should also be provided in .AGT file:
ROOM_DESCR [Room label]
Some text, any number of lines, about the room.
END_ROOM_DESCR
This room description will be what is printed whenever the player enters
the room or gives the command to LOOK.
35
HELP MESSAGES
An optional HELP message may also be provided for each room:
HELP [Room label]
Some text, any number of lines, gives a HELP message for this room.
END_HELP_DESCR
If you don't enter a specific HELP message for a room, the default message
if the player asks for HELP is "Sorry, but you are on your own here."
Here is a more complete example of how a room might be specified in the
.AGT file:
ROOM [Top of the Cliff]
Top of Cliff
NORTH [North of Cliff Top]
SOUTH [South of Cliff Top]
WEST [West of Cliff Top]
END_ROOM
ROOM_DESCR [Top of the Cliff]
You are standing near the edge on the top of a tall cliff. To the
east is a sheer drop of several thousand feet. To the north, west and
south are paths that lead down the side of the mountain.
END_ROOM_DESCR
HELP [Top of the Cliff]
Be careful, don't go too near the edge!
END_HELP_DESCR
NOUNS
Nouns are necessarily more complex than rooms. They are specified in the
following format, listed with the possible values (and defaults):
|<-----significant----->|<------ignored------------------------>|
|
NOUN [label] <-- Label is the AGT name for this noun
Name <-- one-word name of the noun
Adjective <-- one-word adjective
Short one-line description of the noun
{other characteristics go here}-
END_NOUN
36
Other characteristics (optional):
SIZE nn <-- nn is a number from 1 to 99+
Default is 1.
WEIGHT nn <-- nn is a number from 1 to 99+
Default is 1.
UNMOVABLE <-- default is movable (carryable)
LOCATION [Room label] <-- Room label is AGT name for the "room"
where this noun is located. It may
be located in a room, inside another
noun, being carried, or worn.
READABLE <-- default is "not readable"
{if READABLE then TEXT [label]
must also be defined}
CLOSABLE <-- default is "not closable"
OPEN <-- default is "closed"
{if open, then it can hold something}
{if closed, it can not hold something}
LOCKABLE <-- default is not lockable
LOCKED <-- default is unlocked
KEY [Noun label] <-- default is 0
Noun label is the AGT name for the
noun that unlocks this noun --
if it's lockable.
EDIBLE <-- default is inedible
DRINKABLE <-- default is undrinkable/solid
POISONOUS <-- default is nonpoisonous
{predictable effect if poisonous
edible/drinkable noun is eaten}
ON <-- default is 'off'
PUSHABLE <-- default is not pushable
{PUSH_DESCR nn recommended but
not required if it is pushable}
PULLABLE <-- (ditto, PULL_DESCR nn)
PLAYABLE <-- (ditto, PLAY_DESCR nn)
TURNABLE <-- (ditto, TURN_DESCR nn)
IS_LIGHT <-- default is NOT is_light
(IS_LIGHT -> illuminates any room
defined as LIGHT 1 or LIGHT
[label] where [label] is this noun
POINTS <-- default is 0 (points awarded to player
if object is being carried,
present or in the "treasure" room
at game_end)
GAME_WIN <-- default is FALSE. Player wins game
if TRUE when he get this noun.
CAN_SHOOT <-- default is can't shoot (Can the
weapon be used to shoot a creature?
If not, it must be thrown.)
NUM_SHOTS <-- default is 0 (how many bullets/
charges are there initially?
decremented each time the noun is
37
fired.)
WEARABLE <-- default is not wearable
POSITION <-- default in NONE. If the game designer
wishes to have a noun's original
position as "(behind the tree)"
he would have:
POSITION behind the tree
in the .AGT file. The verbs
PUT/PLACE and GET/TAKE change the
noun's position.
SINGULAR <-- default is SINGULAR. The only
alternative is PLURAL. AGT
verbs/pronouns will be singular
or plural depending upon this
value.
NOUN_SYNONYMS <-- default is NONE. If the .AGT file had
NOUN_SYNONYMS GOLD COIN COINS
then all of these words would be
accepted as valid synonyms for
this noun. Of course, the
"official" NAME will also work.
PICTURE [Picture label] <-- Picture label for a PCX format picture
file associated with this NOUN.
To be explained in a later section.
Note: To 'spice up' the game, you might want to put things inside other
things initially, so the player has to open everything to be sure s/he
doesn't miss anything important. Be logical, though: a refrigerator seems
likely to be open-able, but a crabapple probably ought to be 'closed' and
'unclosable' and thus unable to contain something else.
Similar to the complete room descriptions, there is a way to specify a
lengthy description of a noun by using a NOUN_DESCR in the .AGT file. When
the player gives the command to EXAMINE the noun, this description will be
displayed on the screen.
TEXT
If a noun is readable, the description that is printed whenever the player
gives the command to READ it is contained in a TEXT description in the .AGT
file. Thus, the following would be a valid set of definitions:
NOUN [Small Red Book]
Book
Red
There is a small red book here.
WEIGHT 1
SIZE 3
LOCATION [Top of the Cliff]
READABLE
NOUN_SYNONYMS Cover Title
END_NOUN
38
NOUN_DESCR [Small Red Book]
The red book is quite thin, and has a hard cover. There is writing on
the book's cover.
END_NOUN_DESCR
TEXT [Small Red Book]
The title of the book is "The Wisdom of Ronald Reagan." The pages are
all blank.
END_TEXT
MULTIPLE NOUNS WITH THE SAME NAME
AGT allows multiple nouns with the same name. The parser examines the
current room and player environment and assumes that if only one noun with
a particular name is in the room then that must be the noun that the player
meant as the NOUN or OBJECT of his command. If there is more than one noun
with the same name in the room, the parser gives an "error" message and
asks the player to be more specific about which NOUN (or OBJECT) he means.
For example, if there are three kinds of trees in the "room" and the player
had entered the command to EXAMINE TREES, the parser would ask for the
clarification: "Which 'TREES', the OLIVE TREES or the OAK TREES or the PINE
TREES?" The player could then enter any response with one of the proper
adjectives to specify which trees were meant, i.e., any of these responses
would tell the parser that the OAK trees were correct:
THE OAK TREES
EXAMINE THE OAKS
OAK
THE OAKS, YOU OAF!!
If the player still doesn't enter a response with one of the proper
adjectives, a message is given that asks the player to re-enter his command
using the NOUN's adjective to clarify which NOUN is meant. This means that
if there are two or more nouns with the same name, their adjectives MUST BE
unique, i.e., you can have a RED BOWL and a GREEN BOWL, but the game should
not contain two RED BOWLs!
PUSH, PULL, TURN, AND PLAY DESCRIPTIONS
Similar to TEXT descriptions if a noun is readable, you may also give
unique descriptions if a noun is described as being pushable, playable,
turnable, or pullable and the player takes one of those actions with the
noun. These descriptions are included in the .AGT file as a PUSH_DESCR,
PULL_DESCR, TURN_DESCR and PLAY_DESCR. They will be displayed only if the
player takes the specified action AND that action does not activate a
SPECIAL for the current room. If there is no description provided, a
standard ("nothing happens" or something equally appropriate) message is
provided.
For example, if you want to generate messages whenever the player gives the
39
commands to PLAY RADIO or to TURN ON RADIO or TURN DIAL, you could set up
the following in the .AGT file:
NOUN [Portable Radio]
Radio
Portable
There is a large "ghetto blaster" portable radio here.
MOVABLE
WEIGHT 10
SIZE 10
NOUN_SYNONYMS GHETTO BLASTER DIAL DIALS KNOB KNOBS
PLAYABLE
TURNABLE
END_NOUN
NOUN_DESCR [Portable Radio]
The radio is barely portable. It weighs about 47 pounds and must be
carried with both hands. It has many dials and knobs.
END_NOUN_DESCR
PLAY_DESCR [Portable Radio]
As you turn on the radio, you hear a song by "Duran." After a few
moments, you become bored with the music and you turn the radio off.
END_PLAY_DESCR
TURN_DESCR [Portable Radio]
As you turn the dial on the radio, you hear the Beatles singing
"Yesterday". This sounds like a good station and you stop turning the
dial. The music sounds nice and you sing along softly.
END_TURN_DESCR
EATING, DRINKING, AND DYING
Any object defined as EDIBLE can be eaten. Any object defined as DRINKABLE
can be drunk. And any object defined as POISONOUS will kill the player if
s/he eats or drinks it. POISONOUS has no effect if the noun is neither
edible nor drinkable. In most situations, it is considered poor sport to
make completely non-threatening and logically edible things poisonous; it
is likewise questionable to make packages of rat poison edible but
non-poisonous.
When a noun is eaten or drunk it normally disappears (into the player's
stomach -- naturally). The only exception to this is when the noun is
unmovable. This makes it possible for the player to drink from a lake
without having all the water (or the lake itself) disappear.
40
WEIGHT AND SIZE
Those values are there for a reason!! No player can lift an object heavier
than 100, even if it's defined as MOVABLE. Likewise, objects whose size is
more than 100 are too awkward to be carried. The total weight the player
can carry is 100, so the player cannot carry two 60-weight objects at once.
Total size limit is also 100. It is considered poor sport to assign large
weight values to feathers and low values to large slabs of steel, but cruel
game writers are able to do so. Likewise, a game will be less baffling if
small objects (pens, tin cans) have small size values and large ones
(desks, cars) are larger.
VERY, VERY IMPORTANT NOTE: Size is also very important when dealing with
"containers". A container will only be able to contain things whose total
size is less than the size of the container. For example, if you have a
knapsack whose size is 10, it will be able to hold a flashlight of size 2,
a sandwich of size 1, and long rope of size 6. If the player tries to put
something else (e.g., a compass of size 3) into the knapsack, he/she will
get a message that "The compass will not fit into the knapsack".
Confusion about sizes and containers is the single greatest source of phone
calls and letters about suspected "bugs" in AGT.
LIGHT AND DARKNESS
If a room has a LIGHT value other than 0 (the default), the room will
appear pitch black if the player wanders in empty-handed. There are two
"types" of lights and two types of darkness. A noun may be defined as
being a light by specifying the word IS_LIGHT in its definition; in this
case, it will light any dark room defined as LIGHT 1. The light value of 1
in a room definition means that any light will make the room visible. Of
course, these "general-purpose" lights must be turned on to light the room,
and thus all LIGHTs can be TURNed ON and OFF (or LIGHTed and EXTINGUISHed).
If the LIGHT value is other than 1 (i.e., LIGHT [Torch]), only the noun
with the matching AGT "name," i.e., [Torch], will make the room's contents
visible. This is useful if the darkness comes from something other than an
absence of light: for example, a fan might be the only object that makes a
smokey room clear enough to see in. A special-purpose light need not be
defined as a light (i.e., it doesn't have to be defined IS_LIGHT), nor does
it have to be on, to work as a light in a room with that noun as a LIGHT.
A noun can function as a special-purpose light for more than one room, but
each room can only be lit by one special-purpose light. (A room with a
LIGHT value of 1 will be lit by ANY noun defined as IS_LIGHT.)
CREATURES
Any living thing is identified as a 'creature', and can be either
'friendly' or 'hostile'. Friendly creatures are quite passive; hostile
creatures are not quite as friendly. It is recommended that provisions be
made for a weapon to kill any hostile creatures. For fairness, that weapon
41
should be accessible by the player before s/he meets the hostile creature.
Players should be discouraged from wild and unwarranted killing: i.e., they
ought not kill friendly creatures. If no weapon will kill the creature
(i.e., if you leave or specify WEAPON as the default value 0), the player
cannot kill it. For friendly creatures, you should not lead the player on
by making the weapon something unexpected: if the player kindly offers a
jelly bean to the friendly creature, it ought not be fatal. Only one
weapon can kill any given creature, but the same weapon might be used to
kill many creatures.
The format in the .AGT file for Creatures, like rooms, are relatively
simple:
|<-----significant----->|<------ignored------------------------>|
|
Required:
CREATURE [Label] <-- Label is the AGT name for the creature
Name <-- one word name
Adjective <-- one word adjective
Short one-line description of creature.
{optional characteristics}
END_CREATURE
Optional:
LOCATION [Room label] <-- Room label is the creature's location
{default is 0 or [Nowhere]}
WEAPON [Noun label] <-- Noun label is the AGT name weapon
that kills this creature.
{default is 0 or [none]}
HOSTILE <-- default is friendly
THRESHOLD n <-- {n is number of times a hostile
creature can be unsuccessfully
attacked before it and kills the
player - default 3}
TIME_THRESH n <-- {n is number of turns player can be
in the same room with the creature
before it kills the player - default
value is infinite, or disabled}
POINTS nn <-- nn is the number of points player
gets for having this creature in the
current room, i.e., for "capturing"
or "rescuing" the creature.
{default is 0}
GROUPMEMBER <-- default is NOT a GroupMember. If a
creature is specified as a GROUPMEMBER
then it will automatically follow the
player from location to location once
they meet.
42
GENDER <-- default is THING. GENDER may also be
specified as MAN or WOMAN. GENDER
causes pronouns and verbs to be used
that are appropriate to the specific
creature. THINGs are ferocious and
referred to as "IT". MANs are less
ferocious and are referred to as
"HE" and "HIM". WOMANs are "SHE"
and "HER".
CREATURE_SYNONYMS <-- default is NONE. If the .AGT file had
CREATURE_SYNONYMS BOB BILLY then all
of these names would be accepted as
valid synonyms for the creature.
Of course, the "official" NAME will
also work.
PICTURE [Picture label] <-- Picture label for a PCX format picture
file associated with this CREATURE.
To be explained in a later section.
NOTE: A player cannot exit a room containing a hostile creature. When
killed, creatures are relocated to LOCATION 0, i.e., [Nowhere].
Friendly/non-hostile creatures have no effect on the (Standard Level)
game's outcome -- they just add a little "spice" to the game.
For example, to define a female Froobious Bandersnatch in room [Jungle],
which can be killed with noun [Big Gun], we could use the following
specifications in the .AGT file:
CREATURE [Froobious Bandersnatch]
Bandersnatch
Froobious
There is a mommy froobious bandersnatch, looking for her cubs.
LOCATION [Jungle]
WEAPON 205
THRESHOLD 2
TIME_THRESH 5
WOMAN
HOSTILE
CREATURE_SYNONYMS BEAST
END_CREATURE
The thresholds specify that you can try to attack the bandersnatch twice
(unsuccessfully) or be in the room with the bandersnatch for 5 turns,
before the beast kills you. The player will not be able to leave the room
if the Bandersnatch is present, because she is hostile, until the creature
has been killed (with weapon [Big Gun]). To use the weapon to kill the
creature, the player would FIRE THE GUN AT THE BANDERSNATCH or SHOOT THE
BEAST WITH THE GUN, if the weapon is a gun, or THROW the weapon AT the
creature or KILL the creature WITH the weapon, if the weapon is not a gun.
The complete EXAMINE description might be contained in the .AGT file as:
43
CREATURE_DESCR [Froobious Bandersnatch]
The bandersnatch is snorting and drooling. It is a large female and
she appears to have misplaced her cubs, which makes her very un-
pleasant and very dangerous. She seems to harbor few honorable
intentions towards you.
END_CREATURE_DESCR
TALK AND ASK MESSAGES
CREATURES can now have messages that will be given in response to a TALK TO
or ASK CREATURE ABOUT XXXXXX input commands. These are similar to the
PUSH, PULL, TURN, etc., messages for NOUNs.
Here is an example of how you might define these messages:
CREATURE [Bart Simpson]
Kid
Obnoxious
There is an obnoxious kid here leaning against a skate board.
LOCATION [NoWhere]
MAN
CREATURE_SYNONYMS Bart Simpson
PICTURE [Bart2 pic]
END_CREATURE
CREATURE_DESCR [Bart Simpson]
The kid still looks familiar. He is resting against a skateboard. As
you look at him he says "I'm Bart Simpson. Who the hell are you,
Dude?" You decide to ignore him.
END_CREATURE_DESCR
TALK_DESCR [Bart Simpson]
"I don't talk to people from your generation! Like stooonnnee aage!
Get real, Dude.!"
END_TALK_DESCR
ASK_DESCR [Bart Simpson]
"Do I look like I am someone who know or cares about $OBJECT$? Do I?
Do I really? Get real, Dude.!"
END_ASK_DESCR
GROUPS OF CREATURES
Creatures can be designated as a member of the "Group" by using the
GROUPMEMBER specification. All group members in the current location will
automatically move with the player when he/she moves to another location.
However, their group status will not effect other aspects of their behavior
during the game, i.e., they can still be talked to or killed as
individuals. Probably the best known example of an adventure creature
following the player once they meet is the Robot Floyd who is the player's
44
constant companion in the Infocom adventure games Planetfall and its sequel
Stationfall. The group can have several members, so this feature could be
used to beam down a "landing party" consisting of the player, Spock, Sulu,
McCoy and Scotty and have them explore the planet as a group in a Star Trek
adventure.
Later in this manual, we will introduce a variety of meta-commands that
enable the game designer to test the status of the group and to manipulate
the group in many ways, i.e., add or subtract members, disband the group,
send the group off to another location, etc.
SPECIALS
To 'activate' the special, the player must 'do something' to the noun
specified as the room's KEY. This can include turning it, pushing it,
pulling it, or playing it (depending on what can be done to the noun as
defined). If the proper action is taken on the noun while in the room, the
player will be relocated to the room specified in the SPECIAL line and the
SPECIAL nn text will be displayed. (If the Special points to the current
room, the only effect apparent to the reader will be the display of the
SPECIAL text.)
For example, to enter the house (by going to the entry hall -- ROOM [Entry
Hall]) by pushing the door bell on the porch (ROOM [Porch]) could be done
with the following special:
ROOM [Porch]
Front Porch
.
.
.
SPECIAL 14 [Entry Hall]
KEY [Door Bell]
END_ROOM
ROOM_DESCR [Porch]
You are standing on the front porch of a large mansion. The doors are
about 10 feet high.
END_ROOM_DESCR
NOUN [Door Bell]
Bell
Door
Beside the door in a door bell.
.
.
PUSHABLE
UNMOVABLE
LOCATION [Front Porch]
NOUN_SYNONYMS doorbell
END_NOUN
45
SPECIAL [Entry Hall]
You boldly push the door bell. Deep inside the house, you hear some
chimes that sound vaguely like Big Ben. After a few minutes, the door
is opened by a butler dressed in a black morning coat. He says "Good
morning, Sir. I will tell the Master that you have arrived." With
that, he disappears down the hall. You are left alone in the entry
hall of the house.
END_SPECIAL
ROOM [Entry Hall]
Entry Hall
NORTH [End of Hall]
.
.
END_ROOM
ROOM_DESCR [Entry Hall]
The entry hall is long and narrow. You can see open doors at the end
of the hall to the north. The front doors are behind you to the
south.
END_ROOM_DESCR
"SPECIAL" SPECIALS
AGT has two "special" specials: the verbs MAGIC_WORD and CHANGE_LOCATION.
These words are used in conjunction with a room synonym declaration to
create a "special" for any words the game designer may wish to use (i.e.,
you are not restricted to PULL, PUSH, TURN and PLAY). For example, the
designer may specify that XYZZY and MAGIC_WORD are synonyms in a particular
room -- so that if the player gives the command XYZZY in that room, it
causes a "special" for that room which might send the player to another
room with an appropriate "special" messages being written. CHANGE_LOCATION
works the same way except it requires a specific NOUN that is the "key" to
the "special" to be present in the room. For example, the game designer
might make SHOW a synonym for CHANGE_LOCATION in particular room and make
the noun PASS the "key" to the "special" in that room, then whenever the
player gives the command SHOW THE PASS TO THE GUARD (in the particular
room), the "special" would be executed and a message like "The guard
examines your security pass and finds it in order. He opens the steel door
and allows you to enter the vault, where you find...."
NOTE: In AGT, each room may have only one special. So, you will not be
able to have a MAGIC_WORD and another special in the same room. (You could,
however, achieve similar results using meta-commands.)
For example, in order to be able to define a special for CLIMB TREE or
SCALE TREE to cause the player to go from room [Dark Forest] to room [Top
of Oak Tree] with a special message, the game designer could use the
following specifications in his data file:
46
ROOM [Dark Forest]
Dark Forest
.
.
SPECIAL [Top of Oak Tree]
KEY [Oak Tree]
ROOM_SYNONYMS CHANGE_LOCATION CLIMB SCALE
END_ROOM
NOUN [Oak Tree]
tree
oak
There is a large oak tree at the edge of the clearing.
.
.
UNMOVABLE
LOCATION [Dark Forest]
END_NOUN
SPECIAL [Top of Oak Tree]
You manage to climb up to the top of the oak tree.
END_SPECIAL
ROOM [Top of Oak Tree]
Top of Oak Tree
.
.
DOWN [Dark Forest] <-- can exit by going DOWN
END_ROOM
MAGIC_WORD works the same way except, the KEY for the room must be zero.
For example, if you wish to allow the player to go from room [Emperor's
Tomb] to room [Outside Tomb Entrance] when he gives the commands SESAME,
SHAZAM or ABRACADABRA you would do it as follows:
ROOM [Emperor's Tomb]
Emperor's Tomb
.
.
SPECIAL [Outside Tomb Entrance]
KEY 0
ROOM_SYNONYMS MAGIC_WORD SESAME SHAZAM ABRACADABRA
END_ROOM
SPECIAL [Outside Tomb Entrance]
By saying the magic word $VERB$, you are suddenly transported to the
outside of the Emperor's Tomb. You are very lucky to have escaped,
because the air in the tomb was almost gone.
END_SPECIAL
47
ROOM [Outside Tomb Entrance]
Outside Tomb Entrance
.
.
END_ROOM
In this example, the SPECIAL message uses a very convenient and helpful
feature of AGT, namely $VERB$. This causes the original verb to be
repeated back in the message, i.e., if the command was SHAZAM, then the
special message would be "By saying the magic word SHAZAM, you are suddenly
transported..." Similarly, in AGT, the game designer may also have the
NOUN, the noun's ADJECTIVE, the PREPOSITION and the OBJECT of the commands
repeated back in messages by specifying $NOUN$, $ADJECTIVE$, $PREPOSITION$
and $OBJECT$ within the message text. If a command is being addressed to a
character in the adventure, e.g., SCOTTY, BEAM ME UP, the character's name
may also be echoed back in a message by using $NAME$.
IMPORTANT NOTE: The $-words are case-sensitive. For example, if you use
$NAME$, you will get the name echoed back to the player in the game in all
caps. If you use $Name$, you will get the first letter of the name
capitalized and the remainder in lower case. If you use $name$, you will
get the name displayed in all lower case letters. These same case rules
also apply to the other $-words, i.e., $Verb$ will cause the verb to be
repeated back with its first letter capitalized and the other letters lower
case.
CREATING A TYPICAL ROOM
Let's suppose that your game contains a bedroom, connected to a closet, a
bathroom, and a hallway. In the bedroom are a lamp, a bed, a dresser, a
mirror, and a werewolf.
First, you want to define the room itself:
ROOM [Master Bedroom]
Master Bedroom
WEST [hallway]
EAST [bathroom]
NORTHEAST [closet]
END_ROOM
A description of the room is appropriate here:
ROOM_DESCR [Master Bedroom]
This is the master bedroom, where Mommy and Daddy usually sleep.
Plainly visible in the room are a bed, a dresser, a lamp, and a large
wall mirror. The room smells horrible, as if a large, unclean animal
had been here recently.
END_ROOM_DESCR
48
Note that this description mentions the nouns that are initially in the
room. This is OK, since all of the nouns are UNMOVABLE, but if they could
be taken by the player, they should not be described in the room
description since they may not be there if the player should return.
That werewolf is begging to be described, too:
CREATURE [Werewolf]
Werewolf
Black
There is a menacing black werewolf here.
LOCATION [Master Bedroom]
WEAPON [Blow gun] <-- Noun [Blow gun] will kill it
HOSTILE <-- ever met a friendly werewolf?
END_CREATURE
CREATURE_DESCR [Werewolf]
The werewolf is about the size of a small horse. Its matted fur
stinks, and a sickening smell emerges from its open mouth, through
which you can see sharp, large teeth.
END_CREATURE_DESCR
A HELP message might be given as follows:
HELP [Master Bedroom]
The werewolf looks dangerous. Perhaps, you should get out of here as
fast as you can.
END_HELP
Finally, each noun within the room ought to be defined and described:
NOUN [Bed]
Bed
Large
There is a large (king-size) bed here.
LOCATION [Master Bedroom]
UNMOVABLE
END_NOUN
NOUN_DESCR [Bed]
The bed is quite ordinary.
END_NOUN_DESCR
NOUN [Dresser]
Dresser
Wooden
There is a large wooden dresser here.
LOCATION [Master Bedroom]
CLOSABLE
CLOSED
UNMOVABLE
END_NOUN
49
NOUN_DESCR [Dresser]
The wooden dresser looks pretty much like most wooden dressers.
END_NOUN_DESCR
NOUN [Lamp]
Lamp
Small
There is a lamp on the dresser.
LOCATION [Master Bedroom]
UNMOVABLE
END_NOUN
NOUN_DESCR [Lamp]
The small table lamp is pink and has a green shade.
END_NOUN_DESCR
NOUN [Strange Mirror]
Mirror
Strange
There is a wall-size mirror here.
LOCATION [Master Bedroom]
UNMOVABLE
END_NOUN
NOUN_DESCR [Strange Mirror]
As you gaze into the mirror, you sense something unusual about it. It
seems to shimmer, and your reflection seems somehow unreal, as if the
mirror weren't really there at all.
END_NOUN_DESCR
Hmm. That mirror seems rather interesting. Maybe you could make a
"special" out of it. For example: when the player touches it, s/he is sent
to room [Cavern], the mystic cavern of the Wizardess. To do so, you need
to add a "special" to room [Master Bedroom] and specify the mirror as its
key, and you need to make the mirror touchable. (Note: "touch" and "push"
are synonyms -- but, you should use the word "push," not the word "touch,"
in your definitions.)
ROOM [Master Bedroom]
Master Bedroom
WEST [hallway]
EAST [bathroom]
NORTHEAST [closet]
SPECIAL [Cavern] <-- Special goes to room [Cavern]
KEY [Strange Mirror] <-- Special activated by touching mirror
END_ROOM
50
NOUN [Strange Mirror]
Mirror
Strange
There is a wall-size mirror here.
LOCATION [Master Bedroom]
UNMOVABLE
PUSHABLE <-- Here's how we'll activate the special
END_NOUN
The player will see room [Cavern]'s description when s/he gets there, but
the SPECIAL text for room [Cavern] will be displayed first:
SPECIAL [Cavern]
You reach out to touch the mirror, and are shocked to find that your
fingers vanish through the surface. Before you can react, you feel
yourself drawn forward through the mirror, and into a black nothing-
ness. You look back to try to see the mirror, but everything is
black.
You are falling, but not very quickly -- it's almost as if you are
floating. As you fall, your eyes begin to adjust to the darkness.
Then, suddenly, you land on a soft cushion of some sort. As you rest
on the cushion, your eyes adjust to the very dim light of this new
room.
END_SPECIAL
(Note that usually, you'd want to have a PUSH_DESCR prepared for when the
player touches a noun when it doesn't activate a special, but the mirror
can't be moved so it will always activate a special when Touched.)
"INVISIBLE" NOUNS
Occasionally, you will want to have a noun that does not have a separate
description line when you see the room's description, i.e., you want to
have an "invisible" noun. The most common instance of these is an
UNMOVABLE noun whose description is incorporated in the room description.
This is accomplished by having the first word in the "one-line" description
of the noun be the word "INVISIBLE." For example, below is an invisible
bunch of toys which can be EXAMINEd and PLAYed with, but its basic
description is contained within the room's description.
ROOM [Santa's Workshop]
Santa's Workshop
EAST [Bunkhouse]
WEST [Garage]
SOUTH [Gift Wrapping Room]
NORTH [Outside Workshop]
END_ROOM
51
ROOM_DESCR [Santa's Workshop]
This is Santa's Workshop. Not many people have laid their eyes on
this room. All around you is a clutter of toys, in various stages of
development, and tools of all descriptions. To the north there is a
door. Doors also lie to the south, east and west. Work benches line
all four walls. Above each bench is a peg board full of hooks. Tools
hang from the hooks. The tops of the benches are covered with an
array of items, from scraps of building materials, the odd nail and
screw, paint brushes, cans of paint, some open and some closed, to
blueprints and plans of toys. The floor is cluttered with toys.
These toys represent just about every stage of development possible.
In fact the clutter on the floor is so bad, that you have to kick a
path in order to move about the room.
END_ROOM_DESCR
NOUN [Invisible Toys]
toys
many
INVISIBLE -- description in room description
UNMOVABLE
LOCATION [Santa's Workshop]
PLAYABLE
PLURAL
NOUN_SYNONYMS toy sleds toboggans skates skis dolls trains car cars
END_NOUN
NOUN_DESCR [Invisible Toys]
This is what Santa's part of Christmas is all about...TOYS! There are
so many, that it's hard to begin to describe what you see. The first
thing you notice is that there seems be a lot more than when you were
around. The world's population must have doubled in the few short
years of your retirement. The sleds and toboggans have the 'New and
Improved' look. There's not much change in the design and style of
the skates and skis, just better materials to work with. Now the
dolls are a different story. You see your standard 'cry-and-wet' doll,
rag dolls, the so-called fashion doll and the new 'vegetable-patch'
doll. The biggest change in the dolls is the talking dolls. Computer
chips are a miracle-come-true. These dolls have real voices...nothing
tinny about the quality of the sound. From the number of them here,
you would guess that at least 4 out of 5 good girls are going to find
one of these little gems under their Christmas Tree tomorrow morning.
Over in the corner you spy the electric trains. Santa and his 'toy
architects' have left this design alone. They look the same and
operate the same. The next thing you ogle over are the racing cars
sets. The cars are sleek and fast! Not to mention the slick surface
of the track. Too bad you have a mission. You'd love to sit and
pretend you're A. J. Foyt. The little ones will be pleased that
Santa's elves have made up the latest stuffed toys. Alf seems to be
the most popular. You really don't have much time to look at all the
toys. You have a mission, remember? One last quick scan of the room,
just to make sure that the usually rocking horses and bicycles are
present and accounted for.
52
END_NOUN_DESCR
PLAY_DESCR [Invisible Toys]
Sorry, but you don't have time to play with the toys. You have to
help Santa make Christmas a success this year.
END_PLAY_DESCR
Notice, that the toy noun must be UNMOVABLE for this scenario to work the
way it should.
SCORING
The player's progress in the game is reported in two ways: the number of
rooms visited, and the number of points currently held. The player
receives the defined number of points for visiting each room (default point
value is 0), and for possessing (i.e., carrying, wearing or in the current
room or in the treasure room) each noun (or creature with points) when
scoring is done. The point defaults for both nouns and creatures are zero.
Players get no points for having eaten something, since objects which are
eaten or drunk are removed from the game.
For best results, it is best to assign a point value to each room which the
player arrives at after solving some puzzle. It's also wise to award a few
points for out-of-the-way rooms. Objects should only have point values if
they can reasonably be expected to be carried at the end of game -- if an
object is too heavy to be lifted or moved, it's not logical to assign it a
point value.
OTHER DATA ITEMS IN THE .AGT FILE
INTRODUCTION or INTRO TEXT
In the .AGT file, you can include some introductory remarks by using the
header INTRO or INTRODUCTION and ending these remarks with END_INTRO.
These kinds of remarks are particularly useful for telling the player what
has happened prior to his arrival in the game's starting room. The
introductory text is displayed during the game's initialization and cannot
be re-read later. It also cannot be skipped over. For example, you would
include intro material in the .AGT file by doing something like the
following:
INTRODUCTION
The introductory text goes here.
END_INTRO
STARTING ROOM
You must specify a starting room location within your in the .AGT file.
53
For example, if the .AGT file had:
STARTING_ROOM [At the end of the road]
then the game would start in room [At the end of the road].
RESURRECTION_ROOM
You can now specify a room to have the player resurrected in. The starting
room is the default resurrection location, but you now specify an
alternative room. For example, by putting the following line in your .AGT
file, you can cause the player to be resurrected in room number [Inside
Small Building]:
RESURRECTION_ROOM [Inside Small Building]
MAX_LIVES
You can also specify the number of times the player can be resurrected in
the game. For example, by putting the following in the .AGT file, you
would set the number of player lives to 5:
MAX_LIVES 5
The default is 3 lives. If you set MAX_LIVES to zero, the player will
never be resurrected.
TREASURE ROOM
Normally, the player only gets points for visiting rooms and for possessing
treasures (i.e., nouns or creatures with value). However, many classic
adventure games use a convention that required the player to bring his
various treasures to a "Treasure Room". Probably, the best example of this
is the Well House in the original "Colossal Cave" adventure. AGT adds this
feature by allowing the game designer to specify a treasure room in the
.AGT file as:
TREASURE_ROOM [Inside Well House]
Normally, there is no treasure room. This option is only activated if a
statement like the above appears in the .AGT file.
VERB SYNONYMS
To specify verb synonyms, simply create a AGT definition starting with VERB
(alone on a line) and ending with END_VERB (alone on a line). For example:
54
VERB
KILL STAB CHOP
ATTACK STRANGLE CHOKE THROTTLE
UP CLIMB ASCEND
END_VERB
In the above example, if the player types STAB THE DWARF WITH THE KNIFE,
AGT will translate the sentence to KILL THE DWARF WITH THE KNIFE and
attempt to do so. Synonyms do not replace the original verb, e.g., the
verb KILL would also work. Likewise, if the player types CLIMB the game
will execute the sentence as if the player had typed UP -- which means that
CLIMB DOWN would be translated to UP DOWN which would, of course, confuse
the game somewhat and generate an error message which might, in turn,
confuse the player.
Because the verb synonyms are not actually user-defined verbs, you should
think carefully about the possible uses of words you add, to make sure the
player won't be confused by the meaning of a word.
WARNING: It is NOT possible to define a synonym for a synonym. For
example, the following entry would generate an error message:
VERB
ATTACK CHOKE
CHOKE STRANGLE <-- "Verb not recognized - Line ignored"
END_VERB
Verb synonyms defined as those above are "global" in that they apply in
each room of the game. On the other hand, room synonyms apply only in the
particular room for which they are defined. Room synonyms take precedence
over global synonyms. For example, you could define CHOKE to be a synonym
for ATTACK globally (as above), then define CHOKE to be a synonym for PULL
in a particular room. If you were in that room, CHOKE would be treated
like the verb PULL; outside of that room CHOKE would be treated as if you
had input the verb ATTACK.
PLAYER_DEAD
A ROOM can contain a PLAYER_DEAD specification that will cause the player
to die when he or she first enters the room (and after the description is
displayed on the screen). An example of how this feature might be used is
as follows:
ROOM [In the frigid water]
You have drowned!
PLAYER_DEAD
END_ROOM
55
ROOM_DESCR [In the frigid water]
Now you've done it! You've slid off the floe into the frigid water.
Your life passes before your eyes. They say drowning is not such a
bad way to go, but whoever said that must have drowned in warm water.
Your frozen little body bobs to the surface for a second then flips
upside down and you sink to the bottom of the ocean. You're dead!
END_ROOM_DESCR
GAME_WIN
Acquiring all the points defined in the game doesn't let the player "win,"
and winning isn't even related to points. If you define a room as
GAME_WIN, then the player wins the game upon entering the room, and the
game ends and the final score is displayed. It is usually desirable to
make that room very difficult to enter and not let the player get there
unless he or she has done everything else there is to do.
The room description is displayed, so you should put your congratulatory
description there. For example:
ROOM [End of the Rainbow]
End of the Rainbow
GAME_WIN
POINTS 50
END_ROOM
ROOM_DESCR [End of the Rainbow]
At long last, you have reached the end of the rainbow. The pot of
gold lies at your feet. You have won the game!!
END_ROOM_DESCR
Note that is also possible to win the game when a specific Noun is
acquired. This is done be putting a GAME_WIN in the Noun's specification.
GAME_END
If you desire to have the game end, without having the player win, you can
use a GAME_END in the room definition. When this is done, the game will
end when the player enters the room and the final score is displayed. The
room description is also displayed, so you should put any final comments to
the player in the room description. For example:
ROOM [End of the trail]
End of the trail
GAME_END
END_ROOM
56
ROOM_DESCR [End of the trail]
You have reached the end of the trail. There is no turning back.
Sorry, but your adventure is OVER!
END_ROOM_DESCR
PAGE PAUSES
Normally, the game pauses after every 22 lines of text (so that the player
can read it), and the player then hits <CR> to read more. As you play-test
your game, you might try to adjust your paragraph or line spacing so that
the page breaks don't come at awkward spots and confuse the player. This
is probably most important in the title screen and the INSTRUCTION and
INTRO texts; it is less controllable in the individual room descriptions.
ORDER OF DEFINITIONS
AGT doesn't require that the definitions be in any specific order within
the data files. Definitions can be freely mixed throughout your data
files. You'll probably want to group items together that logically belong
together. That's how the sample games were written. The order of
definitions in the file has no effect on game performance, as long as each
definition is properly structured.
HOW TO INCLUDE COMMENTS IN YOUR AGT DATA FILES
Within your data file, you'll probably want to include comments which won't
be processed by the game itself, so you'll be able to understand why you
did certain things.
In general, AGT treats anything it doesn't understand as a comment. Thus,
if you have a paragraph of text in between definitions, AGT will usually
ignore it.
BEWARE: If one of the lines in the paragraph begins with a keyword like
"noun" or "text," AGT will probably decide that it's the beginning of a
definition and get confused.
To avoid this, you can use a nonsense word to start each line of a comment:
words like "REM" (for remark) are useful since they also clearly state what
the line is.
AGT ignores most punctuation completely, so using "comment" indicators like
"(*" and "*)" or { and } at the beginning of a line won't help. However,
using these kinds of comment indicators will make your game files easier to
read. AGT usually only sees alphabetic characters ('a'..'z' and 'A'..'Z')
or the digits ('0'..'9').
You can put comments on lines which contain a keyword or a keyword and a
number; don't include comments on lines which contain a full-line
57
description.
Example of properly-commented definitions:
ROOM [Master Bedroom]
Master Bedroom
EAST [bathroom]
NORTHEAST [closet]
SPECIAL [cavern]
KEY [Strange Mirror] <-- Special activated by touching mirror
END_ROOM
NOUN [Strange Mirror]
Mirror
Strange (isn't there a better adjective?)
There is a wall-size mirror here.
LOCATION [Master Bedroom] (in the Master Bedroom)
rem: the player finds this mirror in the master bedroom,
rem: and gets to the Cavern by touching it. The player
rem: can only return if s/he has the magic amulet, and
rem: will need the soap from the bathroom to kill the
rem: demon on the bridge.
UNMOVABLE (not very useful if the player can take it!)
PUSHABLE <-- Here's how we'll activate the special
END_NOUN
Below is an example of a badly-commented definition:
ROOM [Master Bedroom]
Master Bedroom
WEST [hallway]
(If the player decides to enter the bathroom to the
west, s/he will find the 32 gold pieces.)
EAST [bathroom]
NORTHEAST [closet]
SPECIAL [Cavern] <-- Special goes to room [Cavern]
KEY [Strange Mirror] <-- Activated by touching mirror
(The player gets to the mystic cavern by means of a
key special, activated by noun [Magic Mirror])
END_ROOM
In the above example, the second full comment line begins with the keyword
"WEST" and contains the number 32, so AGT might decide that WEST should
lead to room 32, changing the game! The last line before the END_ROOM
could confuse AGT and redefine the key number (to 233). That comment line
is also plainly incorrect, since it says "[Magic Mirror]" instead of
"[Strange Mirror]."
There are several other ways to sprinkle comments throughout your game
source files. Any line in the file that begins with either a ! mark or ;
in column 1 of the line will be treated as a comment and ignored by
MCOMPILE. In addition, you may use the #COMMENT directive to place notes
58
or remarks anywhere in the source file, even in the middle of game text, so
long as the comment begins and ends on its own line(s). MCOMPILE will
completely disregard these comments, and they will not appear in any output
files.
The #COMMENT directive has two forms: a single-line form and a multi-line
form. The two forms look like this:
#COMMENT This is a single-line comment.
#COMMENT
This is a multi-
line comment.
#END_COMMENT
Note that MCOMPILE tells the difference between single- and multi-line
directives by the presence or absence of text following the directive
keyword.
CREATING A FINAL COMPILED VERSION
To make a playable copy of your game -- named YOURGAME for purposes of
illustration -- just follow the steps laid out in the section entitled
"QUICK START FOR CREATING A READY-TO-PLAY GAME" earlier in the manual.
However substitute the name YOURGAME wherever you see the name SQUYNCH.
Later in this manual, you will learn that you may also want to include
various picture, sound, music and font files with your game as part of the
"finished" package.
And remember to NEVER, NEVER erase or delete your source game file,
YOURGAME.AGT!!
59
PART 3: USING META-COMMANDS IN PROFESSIONAL LEVEL ADVENTURE GAMES
Before discussing meta-commands in detail, it is convenient to present a
quick overview of other changes in Professional Level games. The principal
changes are the addition of custom user-defined verbs and Maximum_Score to
the .AGT file (NOTE: everything else about the .AGT files as previously
presented still applies in Professional Level games).
CUSTOM USER-DEFINED VERBS
Custom user-defined verbs are defined very much like "Verb Synonyms". For
example, the following lines in the .AGT file will define several new verbs
(and synonyms):
VERB
Dummy_Verb1 KISS HUG LOVE CARESS
Dummy_Verb2 GO CLIMB CROSS
Dummy_Verb3 CUT CHOP BREAK CRACK BUST
Dummy_Verb4 JUMP LEAP
Dummy_Verb5 SEARCH FIND
END_VERB
AGT adds 50 "dummy verbs" (Dummy_Verb1 ... Dummy_Verb50) to the list of
valid verbs. These dummy verbs are then redefined as if they had synonyms
in statements like the ones above. These user-defined verbs are then used
in meta-commands to specify new conditional tests and appropriate actions.
For example, the following meta-commands (in the .AGT file) would allow the
player to CLIMB a tree and to CROSS a bridge:
COMMAND CLIMB TREE
InRoom [sturdy oak tree]
GoToRoom [in branches at top of oak tree]
PrintMessage [You climb up to the top of the tree.]
DoneWithTurn
END_COMMAND
COMMAND CROSS BRIDGE
AtLocation [West side of bridge]
GoToRoom [East side of bridge]
PrintMessage [You walk across the bridge to the other side.]
DoneWithTurn
END_COMMAND
COMMAND CROSS BRIDGE
AtLocation [East side of bridge]
GoToRoom [West side of bridge]
PrintMessage [You walk across the bridge to the other side.]
DoneWithTurn
END_COMMAND
60
The above meta-commands could also have been done by CHANGE_LOCATION
specials. However, custom verbs and meta-commands can also be used to
create more unusual situations, like these meta-commands for processing the
user's input to KISS or HUG something:
COMMAND KISS PRINCESS
InRoom [Princess]
AtLocation [Bridal Suite of palace]
PrintMessage [The princess melts into your strong arms, etc.]
PlusScore [Bonus for Kiss]
WinGame
DoneWithTurn
END_COMMAND
COMMAND KISS PRINCESS
InRoom [Princess]
NOT AtLocation [Bridal Suite of palace]
PrintMessage [The princess pushes you away coyly, "Not here!"]
DoneWithTurn
END_COMMAND
COMMAND KISS TROLL
InRoom [Ugly Troll]
PrintMessage [The troll kills you!]
KillPlayer [That will teach you to KISS THE TROLL!!]
DoneWithTurn
END_COMMAND
COMMAND KISS ANY
NOUNpresent ; NOUN (whatever it is) is here.
PrintMessage [You try to $verb$ the $noun$ for awhile.]
MinusScore 10 ; penalty for sick mind
DoneWithTurn
END_COMMAND
COMMAND KISS ANY
PrintMessage [The $adjective$ $noun$ isn't here!]
MinusScore 10 ; penalty for sick mind
DoneWithTurn
END_COMMAND
Meta-commands are processed in the order encountered in the .AGT file, so
the last two KISS ANY commands represent "default" commands and would be
activated only if you weren't trying to KISS, HUG, etc. the PRINCESS or the
TROLL. For example, if you gave the input "KISS THE BLARNEY STONE", the
game would respond with "You try to kiss the stone for a while" or "The
Blarney stone isn't here!" depending upon if the Blarney stone is present
at your current location or not.
61
MAXIMUM_SCORE
AGT allows the score to be manipulated via meta-language commands. For
example, using meta-language commands, one could adjust the score whenever
the player:
-- Accepts a hint
-- Solves a particularly difficult puzzle
-- Gives the correct answer to a riddle
-- Performs a daring and/or noble act
The score can be manipulated either positively or negatively in this way.
Since in AGT you may add (or subtract) points from your score via your
deeds, the maximum score for the game will often be different from the sum
of the scores for visiting rooms and possessing objects. In this
situation, you will need to specify a maximum score for the game in the
.AGT file. For example, to have a maximum score of 350 points for the game
you would put the following statement in the game's .AGT file:
MAXIMUM_SCORE 350
MESSAGES
The Master's Edition allows you to have up to 700 messages that are used by
various meta-language commands. The format for each message is straight-
forward text as follows:
MESSAGE [As you speak, the vault door opens]
As you $verb$ into the microphone, the security door slides open
noiselessly. You hurry into the vault. The door closes behind you.
END_MESSAGE
In any message, the game designer can use $VERB$, $NOUN$, $ADJECTIVE$,
$PREPOSITION$, $OBJECT$ and $NAME$ wherever he wants to have the original
verb, the noun, the noun's adjective, the preposition, the objective of the
preposition or the name of the person the command is addressed to (if any)
echoed back in a message. $VERB$ uses the original verb which is input by
the player, not the verb for which it may be a synonym, e.g., if SPEAK is a
synonym for TALK and you input the verb SPEAK, the above MESSAGE [As you
speak, the vault door opens] would output "As you speak into the
microphone..."
IMPORTANT NOTE: The $-words are case-sensitive. For example, if you use
$NAME$, you will get the name echoed back to the player in the game in all
caps. If you use $Name$, you will get the first letter of the name
capitalized and the remainder in lower case. If you use $name$, you will
get the name displayed in all lower case letters. These same case rules
also apply to the other $-words, i.e., $Verb$ will cause the verb to be
repeated back with its first letter capitalized and the other letters lower
case.
62