home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: rec.arts.int-fiction
- Path: sparky!uunet!munnari.oz.au!comp.vuw.ac.nz!gnat
- From: gnat@kauri.vuw.ac.nz (Nathan Torkington)
- Subject: Adventure Authoring Systems FAQ
- Nntp-Posting-Host: kauri.vuw.ac.nz
- Message-ID: <GNAT.92Nov24083214@kauri.kauri.vuw.ac.nz>
- Reply-To: Nathan.Torkington@vuw.ac.nz
- Organization: Contract to CSC, Victoria Uni, Wellington, New Zealand
- Sender: news@comp.vuw.ac.nz (News Admin)
- Date: Mon, 23 Nov 1992 20:32:14 GMT
- Followup-To: rec.arts.int-fiction
- Lines: 370
-
- Archive-name: games/adventure-systems
- Maintained-by: Nathan.Torkington@vuw.ac.nz <Nathan Torkington>
-
- ----------------------------------------
-
- This is a list of systems that can be used to author adventure games.
- Information about TADS, ADVSYS, ADL, OASYS and ALAN can be found here.
-
- Where possible, pointers to existing information (such as books,
- magazine articles, and ftp sites) are included here, rather than
- rehashing that information again.
-
- If you haven't already done so, now is as good a time as any to read
- the guide to Net etiquette which is posted to news.announce.newusers
- regularly. You should be familiar with acronyms like FAQ, FTP and
- IMHO, as well as know about smileys, followups and when to reply by
- email to postings.
-
- This FAQ is currently posted to rec.arts.int-fiction. I hope to have
- it posted to news.answers later. All posts to news.answers are
- archived, and will then possible to retrieve the last posted copy via
- anonymous FTP from pit-manager.mit.edu as
- /pub/usenet/news.answers/games/adventure-systems. Those without FTP
- access should send e-mail to mail-server@rtfm.mit.edu with "send
- usenet/news.answers/finding-sources" in the body to find out how to
- get archived news.answers posts by e-mail.
-
- This FAQ was mostly written by Nathan Torkington, with numerous
- contributions by readers of rec.arts.int-fiction. Credits appear at
- the end. Comments and indications of doubt are enclosed in []s in the
- text. Each section begins with forty dashes ("-") on a line of their
- own, then the section number. This should make searching for a
- specific section easy.
-
- If you suffer loss in any way, shape or form from the use of
- information in this file, then Nathan Torkington expressly declaims
- responsibility for it. It's your own damn fool fault if you go broke,
- detonate your computer or eat broccoli as a result of anything you
- read here.
-
- Contributions, comments and changes should be directed to
- Nathan.Torkington@vuw.ac.nz
-
- ----------------------------------------
- List of Answers
-
- 1 What to look for in a system
- 2 Writing your own adventure
- 3 TADS
- 4 ALAN
- 5 ADVSYS
- 6 ADL
- 7 OASYS
- Z Credits
-
- ----------------------------------------
- 1 What to look for in a system
-
- --> Sample adventures, written using the system. This will make
- learning how to program the system easy. It will also show you the
- workarounds for any clumsiness in the language.
-
- --> The ability to handle non-player characters. This means that
- players should be capable of being addressed, eg "amy, take the cat"
- should be a valid command to type. Players should be capable of
- having turns in the background (to allow movement, thieving, etc).
-
- --> The ability to handle events that occur independent of players
- actions (often called fuses and daemons). Fuses are scheduled events,
- such has having the bomb detonate three turns after the fuse is lit.
- Daemons are routines that are called once every move.
-
- --> Documentation. You need, at least, a reference page. Sample
- code helps, and a full explanation of the order that routines are
- called by the game kernel (eg ADL calls the following for each direct
- object: the actor's action, the verb's preaction, the indirect
- object's action, the direct object's action, then finally the verb
- action. If any one of these procedures returns a true value, then
- that procedure is assumed to have completed the command handling for
- that direct object, and processing continues for the next direct
- object. After all the direct objects are handled this way, the room's
- action is called and the kernel continues).
-
- --> Distribution mechanism. Is the game code fully yours to use? Do
- you have to pay a fee for commercial distribution? For shareware
- distribution? For free distribution? Are you obligated to offer the
- source code to the game interpreter as well as your compiled
- adventure?
-
- --> Is it object oriented? If so, you will probably have an easier
- time of writing your adventure -- text adventure worlds lend
- themselves to object orientation better than some other forms of
- simulation. Of course, learning the subtleties of the OO method might
- be harder than writing your game using a traditional (non-OO) system.
-
- --> Is the game language functional or procedural? That is, does the
- language look like LISP (lots of parentheses) or a kind of cross
- between BASIC and C (curly braces {} are a dead giveaway for C
- lookalikes). You might have to learn a whole new programming style if
- you write your adventure in a language style that you are unfamiliar
- with.
-
- ----------------------------------------
- 2 Writing your own adventure
-
- Dave Librik posted Dave's Quick Guide To Getting Started with TADS,
- which was so good that I've generalised it to cover most adventure
- systems.
-
- Above all else, the key to learning how to write adventures is to
- start writing one. Practice not only makes perfect, but
- trial-and-error makes passable too. You will need the following:
-
- --> a language/kernel reference manual for your adventure system.
- You might have to register your system to get this.
- --> printouts of sample adventures. Staple each printout, so the
- printouts won't get lost or confused. Also print out any
- standard libraries that the system comes with (eg adv.t in TADS
- or standard.adl in ADL).
-
- Now:
- --> familiarise yourself with the basics of the language. Subtleties
- (syntax details, daemons, fuses) should be left for later -- just
- the basic ideas of objects, inheritance (if your language is OO),
- printing text. It might help if you already knew a language in
- the same style (procedural or functional) as the language you
- will have to program in.
- --> read the sample adventures. Get a feel for how items and rooms
- are defined. This step is fairly important -- you will write
- most of your adventures by strategically stealing the way someone
- else has written theirs (software professionals call this "code
- reuse" -- we call it laziness).
- --> make a copy of one of the simpler sample adventures. Take out
- all the stuff specific to that adventure (rooms, players,
- objects, etc) and just leave the verbs, the initialisation code,
- and the definition of the player's character. Now start writing
- your own adventure. Start simple -- a couple of rooms and some
- objects to take.
- --> add more complicated things. For ideas of things to add, it
- helps to have played some adventures. Try adding code for doors,
- containers, other actors, new verbs, fancy verbs that need
- indirect objects. Use the sample adventures that came with the
- system as a reference for using things.
- --> if the sample adventure you modified included standard code for
- players or startup (std.t in TADS), then include those libraries
- and customise them to your taste (you should have no trouble
- reading and understanding the code by now). Add any of your own
- initialisation code to this.
- --> when you want to start making significant changes to the
- behaviour of the adventure, you will have to change any standard
- libraries that your adventures includes (standard.adl in ADL,
- adv.t in TADS). Whenever you make a change, comment at the top
- of the file why you make the change, and exactly what you
- changed. This is so that when your later adventures need any of
- the features you have added, it will be easy to add them. It
- also helps when newer releases of the adventure system arrive --
- you can make the changes to the new standard library with minimal
- hassle.
- --> now realise that what you have written is a practice game. It
- probably wasn't well laid out, or well planned, or even
- consistent. To write your Real Adventure, you will have to go
- through some serious Design and Implementation.
-
- ----------------------------------------
- 3 TADS
-
- TADS stands for "Text Adventure Development System". It is available
- for MSDOS, Atari ST and Macintosh computers at the moment. It is
- available via anonymous FTP as
- msdos.archive.umich.edu:msdos/games/adventure/tads.zip
- mac.archive.umich.edu:mac/game/gameutil/tads1.2.cpt.hqx
- atari.archive.umich.edu:atari/Games/Tads/tads.lzh
- but these are not the latest versions (at the time of writing). The
- latest version, TADS 2.0, features virtual memory, expanded C-like
- syntax, improved documentation and an improved debugger.
-
- TADS is released by High Energy Software, and is shareware. Shareware
- games can (and have) been written using TADS, and commercial
- distribution of games written using TADS seems allowable. TADS
- consists of a compiler (which converts the source code to adventures
- into TADS game code) and an interpreter (which reads the TADS game
- code produced by the compiler and lets users play the game).
-
- Registered users get a form of the interpreter which can be combined
- with the game code file to form a single executable for distribution.
- The interpreter is licensed for shareware use, you don't have to pay a
- penny if you distribute your games via shareware. If you plan to sell
- it commercially, contact Mike Roberts for information on getting the
- rights.
-
- The TADS language is declarative and object-oriented. It appears very
- C-like, and the syntax shouldn't be too difficult to learn by people
- who know C or Pascal. The language provides a basic syntax, some text
- manipulation and support for object-oriented programming. The
- interpreter provides parsing, question-and-response I/O format, and
- activation of the appropriate methods in objects depending on what the
- player types. The language has support for actors, fuses and daemons.
-
- TADS comes with the source to a trivial adventure, and source to an
- Infocom quality game ("Ditch-Day Drifter"). On registration of the
- package, a manual can be obtained. The manual for v1.* is very good
- (although it doesn't explain well the contents of the standard library
- file, adv.t). The v2.0 manual is apparently twice the size of v1.
-
- The prices for versions < 2.0 are:
- TADS shareware fee: 25.00
- Includes printed TADS Author's Manual, the
- current TADS software on specified media,
- plus the source code for "Ditch Day
- Drifter," a complete sample game.
- Deep Space Drifter: 10.00
- Includes "Deep Space Drifter" on the disk
- media specified above, plus a complete map
- of the game and the DSD Hint Book.
- California residents please add 7% sales tax.
-
- The price of v2.0 is US$40 (+ California sales tax for California
- residents, $3 for shipping and handling within the US and Canada, or
- $8 for internaational e-mail). If you register "Deep Space Drifter"
- at the same time, the total is only US$50 (plus sales and shipping).
- For more information, contact:
- --> BBS: 415 493 2420 (set modem to 14400-N-8-1)
- --> CompuServe: 73737,417
- --> GEnie: M.ROBERTS10
- --> Internet: 73737,417@compuserve.com
- --> US Mail: High Energy Software, PO Box 50422, Palo Alto, CA
- 94303.
-
- ----------------------------------------
- 4 ALAN
-
- The Alan System is a special purpose language for creating interactive
- fiction or text adventures. It consists of a compiler which compiles
- Alan source to an intermediate form and an interpreter that interprets
- such an intermediate form.
-
- The Alan language was designed to give the maximum functionality from
- as little code-writing as possible. This means:
- --> the system provides default behaviour for many things (which the
- author can override).
- --> the system directly supports locations, objects, actors and
- other concepts natural to the domain of interactive fiction.
- --> the author can extend the allowable input of the player, and
- connect actions to that input.
-
- It is also a safe language in the sense that extensive compile-time
- checking makes it nearly impossible to produce a game that crashes or
- behaves inconsistently.
-
- The language is declarative and very close to English. It supports
- fuses and daemons by use of events, and is object-inspired (all
- declarations are local to entities, but no inheritance).
-
- The Alan System is request-ware. The complete system is available
- without charge through electronic mail. Send a message with a single
- line:
- SEND INFO
- to
- alan-request@softlab.se
- for more information.
-
- The complete distribution includes the compiler, the documentation, a
- 100+ page manual in plain text and postscript versions, some examples
- and the interpreter with debugging support. The interpreter can be
- redistributed with your games, so this seems to open the way for
- commercial and shareware release.
-
- The current version of Alan is 2.4 which runs on Sun/UNIX, Amigas, PCs
- (MSDOS and OS/2) and VAX/VMS. A major revision of the manual is
- planned, and a larger game is also being worked on for release.
-
- The authors may be contacted at:
-
- alan-request@softlab.se pseudo-mail-server for deliveries
- thoni@softlab.se
- gorfo@ida.liu.se
-
- ----------------------------------------
- 5 ADVSYS
-
- ADVSYS (ADVenture SYStem) was written by David Betz, and the latest
- version (1.2) is dated 1986. This package consists of LaTeX and ASCII
- documentation, C source code for the compiler and interpreter, and the
- source code for several sample adventures (as well as a demonstration
- library). It was written up in Byte magazine [reference here].
-
- The language is LISP-like, and object-oriented. The game has no
- knowledge of the difference between actors, objects, locations, etc --
- all this must be present in the game code. As such, the runtime
- library is rather more complex that might be desired. Actors, fuses
- and daemons can all be implemented easily.
-
- There is [somewhere] a library of code developed by the (now-defunct)
- ADVSYS mailing list. This provides rather better code than the
- library distributed with ADVSYS, and includes containers and limits to
- containment.
-
- The documentation says "Permission is hereby granted for unrestricted
- non-commercial use". You might have to contact David Betz to ask
- about commercial and shareware distribution.
-
- ADVSYS was posted to comp.sources.games, and appeared in volume 2. It
- can, therefore, be found on any FTP site that archives it. Two such
- FTP sites are:
- ftp.uu.net:/usenet/comp.sources.games/volume2/advsys
- wuarchive.wustl.edu:/usenet/comp.sources.games/volume02/advsys
-
- ----------------------------------------
- 6 ADL
-
- ADL (Adventure Design Language) was written by Ross Cunniff and Tim
- Brengle. The package posted to comp.sources.games consists of plain
- ASCII documentation, C source for a compiler, interpreter and
- debugger, and several sample adventures (ranging from the complex to
- the very simple) which illustrate the various features of ADL.
-
- ADL is a declarative, semi-object-oriented language. It has the
- concept of methods (procedures that are attached to objects) but not
- inheritance. This means that an object-oriented style of programming
- will be rather inhibited.
-
- The language recognises actors, locations and objects as being
- distinct. Fuses and daemons are supported in the language. A
- standard library comes with the package, that gives a firm foundation
- to write games on.
-
- The documentation is very close to being excellent, and contains a
- full language reference. The documentation doesn't appear to contain
- any guide to distribution of anything but the source code. Therefore
- it may be legal to distribute the compiled interpreter with your game.
- For more information, you should contact the authors at:
-
- USMAIL: Ross Cunniff
- 636 La Grande, #7
- Sunnyvale, CA 94087
-
- ----------------------------------------
- 7 OASYS
-
- OASYS stands for Object-Oriented Adventure System. It was distributed
- in comp.binaries.ibm.pc in 1992, and is available from any FTP site
- which archives cbipc. It was written by Russell Wallace, who is
- reachable via e-mail as RWALLACE@vax1.tcd.ie.
-
- The package has documentation, two sample adventures, C source for the
- compiler and interpreter, and MS-DOS binaries for the compiler and
- interpreter. The source is missing an include file (Russell will
- provide it on request) and shouldn't be very difficult to port to non
- MS-DOS systems.
-
- The language is declarative, and object-oriented. The parser doesn't
- appear to support indirect objects, and forces the player to type the
- adjectives along with the noun ("ceramic key" must be typed, even if
- there are no other keys accessable). This may be fixed later.
-
- Actor support is provided, and players can issue commands to other
- actors. [fuses? daemons?]
-
- There don't appear to be any legal restrictions, so you can probably
- distributed compiled interpreters with your commercial/shareware/free
- games.
-
- ----------------------------------------
- Z Credits
-
- Nathan Torkington (Nathan.Torkington@vuw.ac.nz), David Librik
- (librik@cory.Berkeley.EDU), Dave Bagget (dmb@case.ai.mit.edu), Thomas
- Nilsson (thoni@ida.liu.se), and the documentation for the various
- systems mentioned here.
-
-