home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / rec / arts / intfict / 947 < prev    next >
Encoding:
Text File  |  1992-11-23  |  17.0 KB  |  384 lines

  1. Newsgroups: rec.arts.int-fiction
  2. Path: sparky!uunet!munnari.oz.au!comp.vuw.ac.nz!gnat
  3. From: gnat@kauri.vuw.ac.nz (Nathan Torkington)
  4. Subject: Adventure Authoring Systems FAQ
  5. Nntp-Posting-Host: kauri.vuw.ac.nz
  6. Message-ID: <GNAT.92Nov24083214@kauri.kauri.vuw.ac.nz>
  7. Reply-To: Nathan.Torkington@vuw.ac.nz
  8. Organization: Contract to CSC, Victoria Uni, Wellington, New Zealand
  9. Sender: news@comp.vuw.ac.nz (News Admin)
  10. Date: Mon, 23 Nov 1992 20:32:14 GMT
  11. Followup-To: rec.arts.int-fiction
  12. Lines: 370
  13.  
  14. Archive-name: games/adventure-systems
  15. Maintained-by: Nathan.Torkington@vuw.ac.nz <Nathan Torkington>
  16.  
  17. ----------------------------------------
  18.  
  19. This is a list of systems that can be used to author adventure games.
  20. Information about TADS, ADVSYS, ADL, OASYS and ALAN can be found here.
  21.  
  22. Where possible, pointers to existing information (such as books,
  23. magazine articles, and ftp sites) are included here, rather than
  24. rehashing that information again.
  25.  
  26. If you haven't already done so, now is as good a time as any to read
  27. the guide to Net etiquette which is posted to news.announce.newusers
  28. regularly.  You should be familiar with acronyms like FAQ, FTP and
  29. IMHO, as well as know about smileys, followups and when to reply by
  30. email to postings.
  31.  
  32. This FAQ is currently posted to rec.arts.int-fiction.  I hope to have
  33. it posted to news.answers later.  All posts to news.answers are
  34. archived, and will then possible to retrieve the last posted copy via
  35. anonymous FTP from pit-manager.mit.edu as
  36. /pub/usenet/news.answers/games/adventure-systems.  Those without FTP
  37. access should send e-mail to mail-server@rtfm.mit.edu with "send
  38. usenet/news.answers/finding-sources" in the body to find out how to
  39. get archived news.answers posts by e-mail.
  40.  
  41. This FAQ was mostly written by Nathan Torkington, with numerous
  42. contributions by readers of rec.arts.int-fiction.  Credits appear at
  43. the end.  Comments and indications of doubt are enclosed in []s in the
  44. text.  Each section begins with forty dashes ("-") on a line of their
  45. own, then the section number.  This should make searching for a
  46. specific section easy.
  47.  
  48. If you suffer loss in any way, shape or form from the use of
  49. information in this file, then Nathan Torkington expressly declaims
  50. responsibility for it.  It's your own damn fool fault if you go broke,
  51. detonate your computer or eat broccoli as a result of anything you
  52. read here.
  53.  
  54. Contributions, comments and changes should be directed to
  55.     Nathan.Torkington@vuw.ac.nz
  56.  
  57. ----------------------------------------
  58. List of Answers
  59.  
  60. 1    What to look for in a system
  61. 2    Writing your own adventure
  62. 3    TADS
  63. 4    ALAN
  64. 5    ADVSYS
  65. 6    ADL
  66. 7    OASYS
  67. Z    Credits
  68.  
  69. ----------------------------------------
  70. 1    What to look for in a system
  71.  
  72.  --> Sample adventures, written using the system.  This will make
  73. learning how to program the system easy.  It will also show you the
  74. workarounds for any clumsiness in the language.
  75.  
  76.  --> The ability to handle non-player characters.  This means that
  77. players should be capable of being addressed, eg "amy, take the cat"
  78. should be a valid command to type.  Players should be capable of
  79. having turns in the background (to allow movement, thieving, etc).
  80.  
  81.  --> The ability to handle events that occur independent of players
  82. actions (often called fuses and daemons).  Fuses are scheduled events,
  83. such has having the bomb detonate three turns after the fuse is lit.
  84. Daemons are routines that are called once every move.
  85.  
  86.  --> Documentation.  You need, at least, a reference page.  Sample
  87. code helps, and a full explanation of the order that routines are
  88. called by the game kernel (eg ADL calls the following for each direct
  89. object: the actor's action, the verb's preaction, the indirect
  90. object's action, the direct object's action, then finally the verb
  91. action.  If any one of these procedures returns a true value, then
  92. that procedure is assumed to have completed the command handling for
  93. that direct object, and processing continues for the next direct
  94. object.  After all the direct objects are handled this way, the room's
  95. action is called and the kernel continues).
  96.  
  97.  --> Distribution mechanism.  Is the game code fully yours to use?  Do
  98. you have to pay a fee for commercial distribution?  For shareware
  99. distribution?  For free distribution?  Are you obligated to offer the
  100. source code to the game interpreter as well as your compiled
  101. adventure?
  102.  
  103.  --> Is it object oriented?  If so, you will probably have an easier
  104. time of writing your adventure -- text adventure worlds lend
  105. themselves to object orientation better than some other forms of
  106. simulation.  Of course, learning the subtleties of the OO method might
  107. be harder than writing your game using a traditional (non-OO) system.
  108.  
  109.  --> Is the game language functional or procedural?  That is, does the
  110. language look like LISP (lots of parentheses) or a kind of cross
  111. between BASIC and C (curly braces {} are a dead giveaway for C
  112. lookalikes).  You might have to learn a whole new programming style if
  113. you write your adventure in a language style that you are unfamiliar
  114. with.
  115.  
  116. ----------------------------------------
  117. 2    Writing your own adventure
  118.  
  119. Dave Librik posted Dave's Quick Guide To Getting Started with TADS,
  120. which was so good that I've generalised it to cover most adventure
  121. systems.
  122.  
  123. Above all else, the key to learning how to write adventures is to
  124. start writing one.  Practice not only makes perfect, but
  125. trial-and-error makes passable too.  You will need the following:
  126.  
  127.  --> a language/kernel reference manual for your adventure system.
  128.      You might have to register your system to get this.
  129.  --> printouts of sample adventures.  Staple each printout, so the
  130.      printouts won't get lost or confused.  Also print out any
  131.      standard libraries that the system comes with (eg adv.t in TADS
  132.      or standard.adl in ADL).
  133.  
  134. Now:
  135.  --> familiarise yourself with the basics of the language.  Subtleties
  136.      (syntax details, daemons, fuses) should be left for later -- just
  137.      the basic ideas of objects, inheritance (if your language is OO),
  138.      printing text.  It might help if you already knew a language in
  139.      the same style (procedural or functional) as the language you
  140.      will have to program in.
  141.  --> read the sample adventures.  Get a feel for how items and rooms 
  142.      are defined.  This step is fairly important -- you will write
  143.      most of your adventures by strategically stealing the way someone
  144.      else has written theirs (software professionals call this "code
  145.      reuse" -- we call it laziness).
  146.  --> make a copy of one of the simpler sample adventures.  Take out
  147.      all the stuff specific to that adventure (rooms, players,
  148.      objects, etc) and just leave the verbs, the initialisation code,
  149.      and the definition of the player's character.  Now start writing
  150.      your own adventure.  Start simple -- a couple of rooms and some
  151.      objects to take.
  152.  --> add more complicated things.  For ideas of things to add, it
  153.      helps to have played some adventures.  Try adding code for doors,
  154.      containers, other actors, new verbs, fancy verbs that need
  155.      indirect objects.  Use the sample adventures that came with the
  156.      system as a reference for using things.
  157.  --> if the sample adventure you modified included standard code for
  158.      players or startup (std.t in TADS), then include those libraries
  159.      and customise them to your taste (you should have no trouble
  160.      reading and understanding the code by now).  Add any of your own
  161.      initialisation code to this.
  162.  --> when you want to start making significant changes to the
  163.      behaviour of the adventure, you will have to change any standard
  164.      libraries that your adventures includes (standard.adl in ADL,
  165.      adv.t in TADS).  Whenever you make a change, comment at the top
  166.      of the file why you make the change, and exactly what you
  167.      changed.  This is so that when your later adventures need any of
  168.      the features you have added, it will be easy to add them.  It
  169.      also helps when newer releases of the adventure system arrive --
  170.      you can make the changes to the new standard library with minimal
  171.      hassle.
  172.  --> now realise that what you have written is a practice game.  It
  173.      probably wasn't well laid out, or well planned, or even
  174.      consistent.  To write your Real Adventure, you will have to go
  175.      through some serious Design and Implementation.
  176.  
  177. ----------------------------------------
  178. 3    TADS
  179.  
  180. TADS stands for "Text Adventure Development System".  It is available
  181. for MSDOS, Atari ST and Macintosh computers at the moment.  It is
  182. available via anonymous FTP as
  183.     msdos.archive.umich.edu:msdos/games/adventure/tads.zip
  184.     mac.archive.umich.edu:mac/game/gameutil/tads1.2.cpt.hqx
  185.     atari.archive.umich.edu:atari/Games/Tads/tads.lzh
  186. but these are not the latest versions (at the time of writing).  The
  187. latest version, TADS 2.0, features virtual memory, expanded C-like
  188. syntax, improved documentation and an improved debugger.
  189.  
  190. TADS is released by High Energy Software, and is shareware.  Shareware
  191. games can (and have) been written using TADS, and commercial
  192. distribution of games written using TADS seems allowable.  TADS
  193. consists of a compiler (which converts the source code to adventures
  194. into TADS game code) and an interpreter (which reads the TADS game
  195. code produced by the compiler and lets users play the game).
  196.  
  197. Registered users get a form of the interpreter which can be combined
  198. with the game code file to form a single executable for distribution.
  199. The interpreter is licensed for shareware use, you don't have to pay a
  200. penny if you distribute your games via shareware.  If you plan to sell
  201. it commercially, contact Mike Roberts for information on getting the
  202. rights.
  203.  
  204. The TADS language is declarative and object-oriented.  It appears very
  205. C-like, and the syntax shouldn't be too difficult to learn by people
  206. who know C or Pascal.  The language provides a basic syntax, some text
  207. manipulation and support for object-oriented programming.  The
  208. interpreter provides parsing, question-and-response I/O format, and
  209. activation of the appropriate methods in objects depending on what the
  210. player types.  The language has support for actors, fuses and daemons.
  211.  
  212. TADS comes with the source to a trivial adventure, and source to an
  213. Infocom quality game ("Ditch-Day Drifter").  On registration of the
  214. package, a manual can be obtained.  The manual for v1.* is very good
  215. (although it doesn't explain well the contents of the standard library
  216. file, adv.t).  The v2.0 manual is apparently twice the size of v1.
  217.  
  218. The prices for versions < 2.0 are:
  219.  TADS shareware fee: 25.00
  220.    Includes printed TADS Author's Manual, the
  221.    current TADS software on specified media,
  222.    plus the source code for "Ditch Day
  223.    Drifter," a complete sample game.
  224.  Deep Space Drifter: 10.00
  225.    Includes "Deep Space Drifter" on the disk
  226.    media specified above, plus a complete map
  227.    of the game and the DSD Hint Book.
  228.  California residents please add 7% sales tax.
  229.  
  230. The price of v2.0 is US$40 (+ California sales tax for California
  231. residents, $3 for shipping and handling within the US and Canada, or
  232. $8 for internaational e-mail).  If you register "Deep Space Drifter"
  233. at the same time, the total is only US$50 (plus sales and shipping).
  234. For more information, contact:
  235.  --> BBS:        415 493 2420 (set modem to 14400-N-8-1)
  236.  --> CompuServe: 73737,417
  237.  --> GEnie:      M.ROBERTS10
  238.  --> Internet:   73737,417@compuserve.com
  239.  --> US Mail:    High Energy Software, PO Box 50422, Palo Alto, CA
  240. 94303.
  241.  
  242. ----------------------------------------
  243. 4    ALAN
  244.  
  245. The Alan System is a special purpose language for creating interactive
  246. fiction or text adventures. It consists of a compiler which compiles
  247. Alan source to an intermediate form and an interpreter that interprets
  248. such an intermediate form.
  249.  
  250. The Alan language was designed to give the maximum functionality from
  251. as little code-writing as possible.  This means:
  252.  --> the system provides default behaviour for many things (which the
  253.      author can override).
  254.  --> the system directly supports locations, objects, actors and
  255.      other concepts natural to the domain of interactive fiction.
  256.  --> the author can extend the allowable input of the player, and
  257.      connect actions to that input.
  258.  
  259. It is also a safe language in the sense that extensive compile-time
  260. checking makes it nearly impossible to produce a game that crashes or
  261. behaves inconsistently.
  262.  
  263. The language is declarative and very close to English. It supports
  264. fuses and daemons by use of events, and is object-inspired (all
  265. declarations are local to entities, but no inheritance).
  266.  
  267. The Alan System is request-ware. The complete system is available
  268. without charge through electronic mail.  Send a message with a single
  269. line:
  270.     SEND INFO
  271. to
  272.     alan-request@softlab.se
  273. for more information.
  274.  
  275. The complete distribution includes the compiler, the documentation, a
  276. 100+ page manual in plain text and postscript versions, some examples
  277. and the interpreter with debugging support.  The interpreter can be
  278. redistributed with your games, so this seems to open the way for
  279. commercial and shareware release.
  280.  
  281. The current version of Alan is 2.4 which runs on Sun/UNIX, Amigas, PCs
  282. (MSDOS and OS/2) and VAX/VMS.  A major revision of the manual is
  283. planned, and a larger game is also being worked on for release.
  284.  
  285. The authors may be contacted at:
  286.  
  287.     alan-request@softlab.se        pseudo-mail-server for deliveries
  288.     thoni@softlab.se
  289.     gorfo@ida.liu.se
  290.  
  291. ----------------------------------------
  292. 5    ADVSYS
  293.  
  294. ADVSYS (ADVenture SYStem) was written by David Betz, and the latest
  295. version (1.2) is dated 1986.  This package consists of LaTeX and ASCII
  296. documentation, C source code for the compiler and interpreter, and the
  297. source code for several sample adventures (as well as a demonstration
  298. library).  It was written up in Byte magazine [reference here].
  299.  
  300. The language is LISP-like, and object-oriented.  The game has no
  301. knowledge of the difference between actors, objects, locations, etc --
  302. all this must be present in the game code.  As such, the runtime
  303. library is rather more complex that might be desired.  Actors, fuses
  304. and daemons can all be implemented easily.
  305.  
  306. There is [somewhere] a library of code developed by the (now-defunct)
  307. ADVSYS mailing list.  This provides rather better code than the
  308. library distributed with ADVSYS, and includes containers and limits to
  309. containment.
  310.  
  311. The documentation says "Permission is hereby granted for unrestricted
  312. non-commercial use".  You might have to contact David Betz to ask
  313. about commercial and shareware distribution.
  314.  
  315. ADVSYS was posted to comp.sources.games, and appeared in volume 2.  It
  316. can, therefore, be found on any FTP site that archives it.  Two such
  317. FTP sites are:
  318.     ftp.uu.net:/usenet/comp.sources.games/volume2/advsys
  319.     wuarchive.wustl.edu:/usenet/comp.sources.games/volume02/advsys
  320.  
  321. ----------------------------------------
  322. 6    ADL
  323.  
  324. ADL (Adventure Design Language) was written by Ross Cunniff and Tim
  325. Brengle.  The package posted to comp.sources.games consists of plain
  326. ASCII documentation, C source for a compiler, interpreter and
  327. debugger, and several sample adventures (ranging from the complex to
  328. the very simple) which illustrate the various features of ADL.
  329.  
  330. ADL is a declarative, semi-object-oriented language.  It has the
  331. concept of methods (procedures that are attached to objects) but not
  332. inheritance.  This means that an object-oriented style of programming
  333. will be rather inhibited.
  334.  
  335. The language recognises actors, locations and objects as being
  336. distinct.  Fuses and daemons are supported in the language.  A
  337. standard library comes with the package, that gives a firm foundation
  338. to write games on.
  339.  
  340. The documentation is very close to being excellent, and contains a
  341. full language reference.  The documentation doesn't appear to contain
  342. any guide to distribution of anything but the source code.  Therefore
  343. it may be legal to distribute the compiled interpreter with your game.
  344. For more information, you should contact the authors at:
  345.  
  346.         USMAIL: Ross Cunniff
  347.                 636 La Grande, #7
  348.                 Sunnyvale, CA 94087
  349.  
  350. ----------------------------------------
  351. 7    OASYS
  352.  
  353. OASYS stands for Object-Oriented Adventure System.  It was distributed
  354. in comp.binaries.ibm.pc in 1992, and is available from any FTP site
  355. which archives cbipc.  It was written by Russell Wallace, who is
  356. reachable via e-mail as RWALLACE@vax1.tcd.ie.
  357.  
  358. The package has documentation, two sample adventures, C source for the
  359. compiler and interpreter, and MS-DOS binaries for the compiler and
  360. interpreter.  The source is missing an include file (Russell will
  361. provide it on request) and shouldn't be very difficult to port to non
  362. MS-DOS systems.
  363.  
  364. The language is declarative, and object-oriented.  The parser doesn't
  365. appear to support indirect objects, and forces the player to type the
  366. adjectives along with the noun ("ceramic key" must be typed, even if
  367. there are no other keys accessable).  This may be fixed later.
  368.  
  369. Actor support is provided, and players can issue commands to other
  370. actors.  [fuses?  daemons?]
  371.  
  372. There don't appear to be any legal restrictions, so you can probably
  373. distributed compiled interpreters with your commercial/shareware/free
  374. games.
  375.  
  376. ----------------------------------------
  377. Z    Credits
  378.  
  379. Nathan Torkington (Nathan.Torkington@vuw.ac.nz), David Librik
  380. (librik@cory.Berkeley.EDU), Dave Bagget (dmb@case.ai.mit.edu), Thomas
  381. Nilsson (thoni@ida.liu.se), and the documentation for the various
  382. systems mentioned here.
  383.  
  384.