home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / games / interactive-fiction / authoring / part2 < prev    next >
Encoding:
Text File  |  2000-10-19  |  83.9 KB  |  1,820 lines

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!nycmny1-snh1.gtei.net!news.gtei.net!newsfeed.mathworks.com!sunqbc.risq.qc.ca!cyclone2.usenetserver.com!news-out.usenetserver.com!cyclone1.usenetserver.com!news-west.usenetserver.com.POSTED!not-for-mail
  2. Message-ID: <raif-faq2_971856602@faq.davidglasser.net>
  3. From: glasser@iname.com (David Glasser)
  4. Newsgroups: rec.arts.int-fiction,rec.games.int-fiction,rec.answers,news.answers
  5. Subject: [rec.arts.int-fiction] Interactive Fiction Authorship FAQ (2/3)
  6. Approved: news-answers-request@MIT.EDU
  7. Followup-To: rec.arts.int-fiction
  8. Organization: ifMUD: http://ifmud.port4000.com:4001/
  9. Summary: This posting describes the Usenet newsgroup rec.arts.int-fiction,
  10.          and Interactive Fiction Authorship in general.
  11. X-Disclaimer: Approval for postings in *.answers is based on form, not content.
  12. Lines: 1799
  13. X-Abuse-Info: Please be sure to forward a copy of ALL headers
  14. X-Abuse-Info: Otherwise we will be unable to process your complaint properly
  15. X-Complaints-To: support@usenetserver.com
  16. NNTP-Posting-Date: Wed, 18 Oct 2000 04:10:42 EDT
  17. Date: Wed, 18 Oct 2000 08:10:42 GMT
  18. Xref: senator-bedfellow.mit.edu rec.arts.int-fiction:71765 rec.games.int-fiction:51797 rec.answers:61905 news.answers:194130
  19.  
  20. Archive-name: games/interactive-fiction/authoring/part2
  21. Posting-Frequency: monthly
  22. URL: http://www.davidglasser.net/raiffaq/
  23. Copyright: (c) 1999 David Glasser
  24.  
  25.         [rec.arts.int-fiction] Interactive Fiction Authorship FAQ (2/3)
  26.                                        
  27.    Maintained by David Glasser (glasser@iname.com)
  28.    This chunk contains part 4 of the raif FAQ.
  29.      _________________________________________________________________
  30.    
  31. Part 4: Programming IF
  32.      _________________________________________________________________
  33.      _________________________________________________________________
  34.    
  35.   4.1: How do I become an IF author?
  36.   
  37.    Write some interactive fiction. This is done with an authoring system,
  38.    such as those described below. Most systems comprise of a specialized
  39.    interactive fiction language with which you write the source code for
  40.    your game, a compiler which turns your source code into a playable
  41.    gamefile, and an interpreter which is what is used to play the
  42.    gamefile produced by the compiler.
  43.    
  44.    However, quite a few people write their own system in C or BASIC or
  45.    another language, either focused solely around a single game or as an
  46.    expandable language. It is easier to use a pre-made system, and they
  47.    will offer more portability. It will also stop you from having to
  48.    remake the wheel. However, if you want to make your own system,
  49.    nobody's going to stop you (well, they shouldn't, at least). It would
  50.    probably be a good idea to look at the current systems to get a basic
  51.    idea of what to do.
  52.    
  53.    With the advent of Glk, making your own systems portable is easier. If
  54.    you are writing in C, take a look at Glk. If you use it for your input
  55.    and output, it will make your game a lot more portable. It is simple
  56.    and powerful. However, it can't do everything. See [What is Glk?: 4.5]
  57.    for details.
  58.    
  59.    It is generally agreed upon that much work on a game is done before
  60.    any source code is written. There are many and varied approaches to
  61.    this design and planning stage, and it is difficult to recommend any
  62.    one method (and this is hardly the right place). Several people have
  63.    written documents on this very subject. These may be found in the
  64.    IF-Archive, in the directory /if-archive/info/ . Of particular note
  65.    are Graham Nelson's (graham@gnelson.demon.co.uk) "The Craft of
  66.    Adventure" and Gerry Kevin Wilson's (whizzard@pobox.com) "Whizzard's
  67.    Guide to Text Adventure Authorship." The filenames for these are
  68.    Craft.Of.Adventure.* (where * is one of the various formats that it
  69.    has been translated into) and authorship-guide.{base, sup1, sup2}.
  70.    Also, there are many excellent articles on game theory and design in
  71.    the 'zine "XYZZYnews" [What 'zines exist?: 6.5] .
  72.    
  73.    You really ought to betatest your game before releasing it to the
  74.    general public. Usually, when betatesting a game, the author sends the
  75.    game out to her betatesters, who work as hard as possible to find
  76.    bugs, writing flaws, and any other problems with the game and send the
  77.    author reports. You can find betatesters by posting on the IF
  78.    newsgroups (but see [What topics are appropriate here?: 2.2] for
  79.    details on how to post betatester requests), by asking on ifMUD (see
  80.    [Are there any IF-related chat spaces?: 6.4] ), or by using Lucian
  81.    Smith and Liza Daly's IF Betatester page. Using their (free, of
  82.    course) service, the author sends them a game which can be downloaded
  83.    and tested by any of their registered betatesters (which anybody can
  84.    sign up to be). More information on this service can be found at
  85.    <http://www.textfire.com/beta.html>.
  86.    
  87.    You can also find betatesters among your friends and other people who
  88.    have not played IF before; though such a betatester can be useful, it
  89.    is *very* important that you have at least one or two betatesters from
  90.    the "IF community" (r*if, ifMUD, TextFire Beta, etc). Only somebody
  91.    who knows IF well will know where bugs are most likely to crop up.
  92.      _________________________________________________________________
  93.    
  94.   4.2: Who's going to appreciate my work; who cares about IF anyway?
  95.   
  96.    As it turns out, quite a lot of people. Interactive fiction regularly
  97.    achieves respectable rankings on the "Internet PC Games Charts"
  98.    <http://www.worldcharts.com/> and has been as high as #3. Indeed,
  99.    there were five interactive fiction games in the 1996 Year-end
  100.    Download Top 40, the highest romping in at #12 (beating Doom), making
  101.    these games some of the most popular non-commercial computer games in
  102.    the world.
  103.    
  104.    The six winning entries from the 1995 IF competition [What sort of
  105.    events does the IF community do?: 2.6] were published by Activision on
  106.    their recent CD-ROM release, "Masterpieces of Infocom" (July 1996),
  107.    which has sold surprisingly well. Activision also uses the Inform
  108.    authoring system as a prototyping tool for some of their large
  109.    graphical games (such as "Zork: Grand Inquisitor"), and used an Inform
  110.    Zork game (by G. Kevin "Whizzard" Wilson, Marc Blank and Mike Berlyn)
  111.    as a promotion for Z:GI.
  112.    
  113.    Specifically, the readership of the two rec.*.int-fiction newsgroups
  114.    make up a faithful audience. Popular games such as "Curses" have been
  115.    played by quite possibly thousands of people worldwide. In this
  116.    specific case, the game has been downloaded at least 2000 times from
  117.    two sites (more from other sites, but figures are unavailable),
  118.    published on at least 4 CDs (probably more without the author's
  119.    permission) and as a cover disc of two magazines with circulation in
  120.    the 10000s, and included in commercial packages.
  121.    
  122.    Mike and Muffy Berlyn have started a company, Cascade Mountain
  123.    Publishing, that, among other things, sells IF. It is doing quite
  124.    well. More information can be found at
  125.    <http://www.cascadepublishing.com/>.
  126.      _________________________________________________________________
  127.    
  128.   4.3: What about copyright; how can I protect my work?
  129.   
  130.    I'm not a legal expert, so you might want to look at such websites as
  131.    the U.S. Copyright Office Home Page <http://lcweb.loc.gov/copyright/>
  132.    and the Public Record Office of England and Wales
  133.    <http://www.pro.gov.uk/>.
  134.    
  135.    You should include in your game (perhaps in the response to the HELP
  136.    command) something saying that you own the copyright on the game, and
  137.    giving a distribution policy: for example, you may not want to to be
  138.    distributed for charge, you may not want it distributed at all, or you
  139.    may not care.
  140.    
  141.    On a somewhat related topic, you should ask John Francis
  142.    (jfrancis@dungeon.engr.sgi.com) to list you in the file
  143.    /if-archive/info/author-list.txt at the IF-Archive. You can give him
  144.    your email address and the distributability status of your game or
  145.    other IF product.)
  146.    
  147.    On another somewhat related topic, getting commercially sold games,
  148.    even if they are no longer available, for free is illegal unless the
  149.    copyright owner has specifically decided to allow distribution. There
  150.    is no such thing as "abandonware": just because a game or program is
  151.    no longer sold does not make it legal for you to distribute it. On the
  152.    other hand, most people are in favor of getting copyright owners to
  153.    freely distribute abandoned programs, but that choice is up to the
  154.    owner. This specifically covers most of the Infocom games, but see
  155.    [Where can I find Infocom games?: 6.7] for more information on that.
  156.      _________________________________________________________________
  157.    
  158.   4.4: What authoring systems are available?
  159.   
  160.    Though some people simply write their adventures in C, BASIC, and
  161.    other general languages, this tends to lead to a lot of remaking of
  162.    the wheel and problems with parsers. Most IF authors choose to use a
  163.    specialized IF authoring system. Descriptions of them are below.
  164.    
  165.    Tier (i) contains the most popular systems; posts about them are
  166.    common on raif, and even the least-used one has at least a game or two
  167.    each year. It contains Hugo, Inform, TADS, and ALAN. These are all
  168.    good systems, with Inform and TADS the most popular and ported.
  169.    
  170.    Tier (ii) contains systems that are either waning in popularity, or
  171.    have not started waxing yet, though they are being supported by
  172.    authors. It contains AGT, Quest, and SUDS.
  173.    
  174.    Tier (iii) mostly consists of old systems that never really caught on.
  175.      _________________________________________________________________
  176.    
  177.    Tier (i)
  178.    
  179.    The most popular and/or powerful, these are currently used by a large
  180.    number of people; many posts to rec.arts.int-fiction concern these
  181.    systems and their use; games produced with these systems are
  182.    guaranteed a relatively large audience.
  183.    
  184.    Hugo
  185.           /if-archive/programming/hugo/
  186.           
  187.    Version/Release
  188.           2.5.02a lib 2.5.02.1, with a 3.0 beta.
  189.           
  190.    Author
  191.           Kent Tessman (general@generalcoffee.com).
  192.           
  193.    Platforms
  194.           Acorn RISC OS, Amiga, BeOS, MS-DOS, Unix (i.e., Linux, SunOS,
  195.           etc., with pre-built executables for Linux), OS/2, Win95/NT,
  196.           and any Glk-supporting platform [What is Glk?: 4.5] including
  197.           the Macintosh.
  198.           
  199.    Support
  200.           The author intends to continue supporting Hugo indefinitely,
  201.           and is developing further releases of the compiler/engine
  202.           package. He will take e-mail and respond to posts. In his own
  203.           words, he will contribute "anything I can offer" to the
  204.           product. Messages specific to Hugo are posted to
  205.           rec.arts.int-fiction from time to time.
  206.           
  207.    Programming Knowledge
  208.           Owes its origins to Inform, C, and BASIC. It is thus
  209.           object-oriented, has a straight-forward syntax, and an effort
  210.           has been made to keep programming as free of punctuation and
  211.           confusing formatting as much as possible. Much low-level
  212.           (assembly) programming is done within the system itself (so the
  213.           user needn't worry about it).
  214.           
  215.    Features/Limitations
  216.           As of v2.4 Hugo supports graphics (in JPEG format) and multiple
  217.           tiled windows. It also has music in MOD, S3M, MP3, MIDI, and XM
  218.           format and sound in WAV format. The standard sound package
  219.           (which the DOS and Windows ports use) allows 32 channels. Full
  220.           multimedia support is available in the Windows/DOS, BeOS, and X
  221.           Windows ports. As of v3.0, Hugo even supports movies in MPEG or
  222.           AVI format. The compiler allows precompiled headers. Features
  223.           include global events, object-linked events, object/character
  224.           scripts, hierarchical inheritance and the ability to use
  225.           objects as classes, dynamic run-time dictionary creation,
  226.           multiple-turn undo, and (practically) unlimited game file size
  227.           due to indexed addressing. Hugo allows the programmer to fully
  228.           manipulate the interpretation of the input line prior to engine
  229.           parsing.
  230.           
  231.    Documentation and Game Sources
  232.           The "Hugo Programming Manual" covers many of Hugo's features
  233.           and there is an extensively annotated tutorial game, "Vault of
  234.           Hugo." Currently available game source code include ports of
  235.           "Adventure" and "Pirate Adventure", and the author's own
  236.           full-length games, "Spur", "Guilty Bastards", and "Down", and a
  237.           shell-game to build on.
  238.           
  239.    Online Documentation
  240.           N/A
  241.           
  242.    Web Pages
  243.           Hugo - An Interactive Fiction Authoring System
  244.           <http://www.generalcoffee.com/>
  245.           Jerry's Hugo Site
  246.           <http://cub.kcnet.org/~jnichols/hugo/ifpage.html>
  247.           
  248.    Debugging Features
  249.           The Hugo Debugger, HD, is a full-featured source(ish)-level
  250.           debugger, which allows code search, watch expressions,
  251.           breakpoints, and so on. The HugoFix library is a suite of
  252.           debugging routines allowing the user to monitor, set, and check
  253.           almost every aspect of a game at run-time.
  254.           
  255.    Source
  256.           C.
  257.           
  258.    License
  259.           Freeware, so long as it is distributed in an unmodified manner.
  260.           Games produced by a user are the property of that author, and
  261.           may be freely distributed. Only if the game (including any
  262.           included libraries from Hugo) or the Hugo engine is intended
  263.           for distribution in any commercial manner (shareware or
  264.           otherwise) must Kent Tessman be contacted for permission.
  265.           
  266.    Quick Pros and Cons
  267.           As it is slightly newer than Inform and TADS, less people are
  268.           using it and the Glk-based port to Macintosh doesn't have all
  269.           the graphics and sounds perks (yet). On the bright side, it is
  270.           quite powerful and offers advanced sound and graphics
  271.           capabilities. Mac users are very very grateful for the Glk
  272.           port, which is quite nice in the non-multimedia areas.
  273.      _________________________________________________________________
  274.    
  275.    Inform
  276.           /if-archive/infocom/compilers/inform6/
  277.           
  278.    Version/Release
  279.           6.21. Library 6/10. (Also, 6.21(G0.32) for glulx is in beta.)
  280.           
  281.    Author
  282.           Graham Nelson (graham@gnelson.demon.co.uk). Glulx features by
  283.           Andrew Plotkin (erkyrath@eblong.com).
  284.           
  285.    Platforms
  286.           Acorn RISC OS, BeOS, Macintosh, Atari ST (latest release 5.4,
  287.           may be unsupported), Amiga, IBM PC (on pre-386, release 5.5
  288.           only), Linux, OS/2, UNIX, VMS (for DEC VAX or Alpha), and EPOC
  289.           (the Psion 5/Revo/7 handhelds). The ZMachine interpreters
  290.           needed to play Inform games compiled for the ZMachine (that is,
  291.           those that don't use glulx) are available for these platforms
  292.           and many more.
  293.           
  294.    Support
  295.           The author fixes library bugs whenever they are reported, and
  296.           issues updates about every three months. The compiler is
  297.           updated approximately twice a year, and the documentation is
  298.           now in its 3rd edition (with an update May 1997). Feedback from
  299.           users is welcomed. There are a large number of relevant posts
  300.           to rec.arts.int-fiction.
  301.           
  302.    Programming Knowledge
  303.           Compiles a largely object oriented language, reminiscent of C.
  304.           A quite sophisticated parser is supplied, which can be entirely
  305.           invisible to the designer but is highly programmable if need
  306.           be. The library is itself written in Inform and is relatively
  307.           easy to modify.
  308.           
  309.    Features/Limitations
  310.           Produces files in the `Z-machine' format, as used by Infocom.
  311.           Thus Inform games can be played on any of the many publicly
  312.           available `Z-machine' interpreters. A standard library is
  313.           supplied; it is possible to replace library routines. The
  314.           run-time format does now permit dynamic object creation.
  315.           Low-level programming is provided for, including a full
  316.           assembler.
  317.           
  318.           The parser can be supplied with a language definition file
  319.           allowing Inform games to be played in non-English languages.
  320.           Translations of Inform have been made into German, Spanish,
  321.           Italian and Renaissance English, with several others in
  322.           development. These translations are linked from Graham Nelson's
  323.           website (see below).
  324.           
  325.           A system called "Blorb", for convenient attachment of sound
  326.           effects and modern-quality graphics, has now been fully
  327.           implemented by Kevin Bracey's "Zip2000" interpreter.
  328.           
  329.           An alternate version can compile to the "Glulx" format, which
  330.           allows advanced I/O capalities and removes many of the
  331.           ZMachine's arbirtrary size restrictions.
  332.           
  333.    Documentation and Game Sources
  334.           The main manual is the "Designer's Manual"; the "Technical
  335.           Manual" documents very dry internals; the "Specification of the
  336.           Z-Machine" defines the run-time format and the standard for
  337.           interpreters (an alternative to this last document is "The
  338.           Z-machine, and How To Emulate It"). A handful of game sources
  339.           are available. The Inform Translator's Manual documents
  340.           language definition files. The Designer's Manual should shortly
  341.           be available as a printed book, thanks to Cascade Mountain
  342.           Publishing; see <http://www.cascadepublishing.com/>.
  343.           
  344.    Online Documentation
  345.           The Z-Machine Standards Document 1.0
  346.           <http://www.gnelson.demon.co.uk/zspec/index.html>
  347.           The Inform Designer's Manual (3rd edition, updated)
  348.           <http://www.gnelson.demon.co.uk/dman/index.html>
  349.           
  350.    Web Pages
  351.           Inform 6: A Compiler For Interactive Fiction
  352.           <http://www.gnelson.demon.co.uk/inform.html>
  353.           The Inform Library Patch Site
  354.           <http://adamcadre.ac/inform.html>
  355.           Inform Page (somewhat old)
  356.           <http://www.duke.edu/~srg3/IFprogramming/inform.html>
  357.           Inform Programming (old, outdated)
  358.           <http://www.doggysoft.co.uk/inform/>
  359.           The Informary - a quick reference summary
  360.           <http://homepages.tesco.net/~roger.firth/informary/>
  361.           Inform for New Writers, David Cornelson
  362.           <http://www.placet.com/int-fiction/>
  363.           Inform for Beginners, Jeff Johnson
  364.           <http://www.geocities.com/SiliconValley/Heights/8200/contents.h
  365.           tm>
  366.           Glulx: A 32-Bit Virtual Machine for IF
  367.           <http://www.eblong.com/zarf/glulx/>
  368.           
  369.    Debugging Features
  370.           Can print tracing information for calls to routines and a suite
  371.           of debugging verbs is included in the library: these monitor
  372.           timers, daemons, actions, the object tree, messages between
  373.           objects, the parser's internal workings and the like, and give
  374.           the tester supernatural powers to travel and move things
  375.           around. The library can also record and play back scripts of
  376.           commands. Tools such as TXD (a disassembler) and Infodump (an
  377.           inspector of objects, dictionary and grammar) are publicly
  378.           available.
  379.           
  380.           As of Inform 6.21, you can compile your games with "Infix"
  381.           debugging mode. This allows the author to use a variety of
  382.           debugging verbs to examine and change the game's state in a way
  383.           similar to the programming of Inform itself. You can trace
  384.           references to a routine or object.
  385.           
  386.           Inform can also produce a file of information useful to any
  387.           debugging tool, with, for example, Z-machine PC positions
  388.           assigned to every statement of source code.
  389.           
  390.           There are some help-tools to configure various text editors to
  391.           Inform, too; the Technical Manual provides an algorithm for
  392.           syntax-colouring Inform code which is used in several of these.
  393.           
  394.    Source
  395.           ANSI C.
  396.           
  397.    License
  398.           Freeware. The author retains copyright of the compiler in order
  399.           to prevent commercial exploitation, but (subject only to mild
  400.           restrictions) is prepared to let people sell games produced by
  401.           Inform.
  402.           
  403.    Quick Pros and Cons
  404.           It is the most highly ported authoring system, and is quite
  405.           popular. It is very powerful; some of the very advanced
  406.           techniques are difficult to understand, though. Though it has a
  407.           few more ports than TADS, HTML-TADS' graphics and sound support
  408.           are both more powerful and more usable (at the current time)
  409.           than Inform's. Also, the ZMachine suffers from the fact that
  410.           extraordinarily large (and I mean really really big) games do
  411.           not fit in it. However, for a normal-sized, text-only game that
  412.           doesn't do extraordinarily complicated hacks (most games fit
  413.           this description), Inform's problems do not hurt at all, and
  414.           the glulx virtual machine fixes some of these problems.
  415.      _________________________________________________________________
  416.    
  417.    TADS (Text Adventure Development System)
  418.           /if-archive/programming/tads/
  419.           
  420.    Version/Release
  421.           Version 2.5.2.
  422.           
  423.    Author
  424.           Michael Roberts (mjr_ at hotmail dot com).
  425.           
  426.    Platforms
  427.           Acorn RISC OS (interpreter only), AmigaDOS, Atari ST/TT/Falcon,
  428.           DECStation, Linux, Macintosh, MS-DOS (also GO32 DOS extender
  429.           version for 386+), NeXT, OS/2, SGI Iris/Indigo, SunOS & Sun 3.
  430.           
  431.    Support
  432.           Posts to rec.arts.int-fiction dealing with all manner of TADS
  433.           queries are not uncommon, and there are many third-party
  434.           programming examples and utilities, including WorldClass and
  435.           Pianosa, complete replacement libraries.
  436.           
  437.    Programming Knowledge
  438.           Uses a high-level, largely object-oriented language very
  439.           reminiscent of Pascal or C.
  440.           
  441.    Features/Limitations
  442.           Provides virtual memory support, permitting games much larger
  443.           than your computer's physical memory. Full multiple inheritance
  444.           is supported, and incremental changes can be made to library
  445.           files so one can include the standard library and override bits
  446.           of it piece by piece. Objects may be created at run-time
  447.           (dynamic object creation). TADS also provides multiple UNDO,
  448.           routines for general-purpose file I/O, and "user exits" that
  449.           let one link in code compiled with other languages (such as C).
  450.           
  451.           TADS allows you to write your game using HTML TADS, which
  452.           allows you to add styled text, still graphics, sound, and MIDI
  453.           music to your TADS games. Rather than relying on some
  454.           proprietary markup language, HTML TADS uses standard HTML, the
  455.           language used to mark up Web pages, for which documentation is
  456.           readily available. (However, HTML TADS doesn't need a web
  457.           browser or the Internet: it uses HTML but isn't a Web-based
  458.           system.) HTML TADS also supports ISO Latin-1 character sets, so
  459.           accented letters are easily added.
  460.           
  461.           At the time of writing, HTML TADS interpreters are only
  462.           available for Windows 95/98/NT and Macintosh. However, a game
  463.           written in HTML TADS is still fully playable (minus graphics
  464.           and sound, of course) with character-based TADS runtimes that
  465.           have been updated to at least version 2.2.6.
  466.           
  467.           The Windows port of TADS 2.5 and up comes with "Visual
  468.           Workbench", an integrated development environment including the
  469.           compiler, debugger, runtime, and an editor. It can even create
  470.           self-enclosed executable installater programs for Windows for
  471.           your TADS games.
  472.           
  473.    Documentation and Game Sources
  474.           TADS' comprehensive manual is available in TeX, PDF and HTML
  475.           formats, although the HTML version is the most current. At the
  476.           moment, TADS documentation is a little scattered between the
  477.           TADS manual (<http://www.tela.bc.ca/tela/tads-manual/>), the
  478.           TADS Parser Manual in
  479.           /if-archive/programming/tads/manuals/tads_pm.zip , and the HTML
  480.           TADS Revision Notes, available with HTML TADS. Neil K. Guy is
  481.           working on updating the main TADS manual to include the
  482.           information from the Parser Manual. Lastly, you might want to
  483.           look at the slightly outdated but still useful TADS Tip Sheet
  484.           at
  485.           <http://www.tela.bc.ca/tela/tads-manual/tads-tip-sheet.html>.
  486.           
  487.           In addition to the manual the full source for a medium-sized
  488.           game, Ditch Day Drifter, is available from the usual sources.
  489.           The source code for many other games, from small and simple to
  490.           huge and complex, is also readily available.
  491.           
  492.           Mark Engelberg has written a tutorial for TADS. It can be found
  493.           on the IF-Archive as
  494.           /if-archive/programming/tads/manuals/TADSTutorial.zip .
  495.           
  496.    Online Documentation
  497.           TADS Author's Manual
  498.           <http://www.tela.bc.ca/tela/tads-manual/>
  499.           TADS Manuals directory on the IF-Archive
  500.           /if-archive/programming/tads/manuals/
  501.           
  502.    Web Pages
  503.           The TADS Page
  504.           <http://www.tela.bc.ca/tela/tads/>
  505.           The TADS Programming Page
  506.           <http://www.df.lth.se/~mol/progtads.html>
  507.           WorldClass Programming Page
  508.           <http://www.df.lth.se/~mol/progtadsworldclass.html>
  509.           
  510.    Debugging Features
  511.           TDB is a full-featured source-level debugger. It allows
  512.           single-stepping through your source, the setting of breakpoints
  513.           at specific lines, and the examination and alteration of
  514.           variables in your program.
  515.           
  516.    Source
  517.           C.
  518.           
  519.    License
  520.           Freeware.
  521.           
  522.    Quick Pros and Cons
  523.           It is very popular and powerful powerful. It has better
  524.           graphics support than Inform/ZMachine, and HTML TADS is
  525.           available on the Mac (which is not the case for graphical
  526.           Hugo). Its library is very object-oriented, which may be a good
  527.           or bad thing, depending on who you are. It has slightly less
  528.           ports than Inform/ZMachine, especially to ancient computers
  529.           like the C64 and small computers like the PalmPilot. On the
  530.           other hand, the reason is can't run on the PalmPilot is that it
  531.           allows games of any size whatsoever, which is good if your game
  532.           needs to be huge.
  533.      _________________________________________________________________
  534.    
  535.    ALAN (Adventure LANguage system)
  536.           /if-archive/programming/alan/
  537.           
  538.    Version/Release
  539.           2.8, with various correction levels for different platforms.
  540.           
  541.    Authors
  542.           Thomas Nilsson (thomas.nilsson@progindus.se) and G÷ran Forslund
  543.           (gorfo@ida.liu.se).
  544.           
  545.    Platforms
  546.           Amiga, Macintosh, MS-DOS (currently only 386+), sun4 (Solaris1,
  547.           SunOS 4.1), sun4 (Solaris2, SunOS 5.x). A HP-UX version of 2.8
  548.           is upcoming, though a 2.7 version exists. There is also a Glk
  549.           [What is Glk?: 4.5] version, but because ALAN's source is not
  550.           freely available, it is a little harder to compile your own Glk
  551.           versions than you would with the other IF systems.
  552.           
  553.    Support
  554.           As a non-profit project author support may vary, although the
  555.           authors will endeavor to act on bug reports sent by e-mail.
  556.           Most ALAN questions on raif will be answered by other ALAN
  557.           users.
  558.           
  559.    Programming Knowledge
  560.           Uses a very high-level language. With an easy-to-learn syntax
  561.           and semantics, ALAN takes a descriptive view of the concepts of
  562.           adventure authoring. There are no variables, subroutines or
  563.           other traditional programming constructs. A general statement
  564.           which describes the ALAN philosophy is that a game's author
  565.           should not need to program, only describe, what the player will
  566.           see.
  567.           
  568.    Features/Limitations
  569.           Actors may be scripted and rules are evaluated between each
  570.           actors turn which can trigger actions. Events can be triggered
  571.           by objects, actors or locations. Expansion of the parser syntax
  572.           is simple. ALAN lacks actor interaction and inheritance
  573.           (although a prototype of v3.0 supports this). General verbs can
  574.           be overridden both for locations and objects on which they are
  575.           invoked. There is support for multinational character input.
  576.           
  577.    Documentation and Game Sources
  578.           The manual, available separately in PostScript, HTML, and ASCII
  579.           formats, contains a lot of detail on all aspects of IF
  580.           authorship from a beginner's level upwards. A few examples of
  581.           ALAN source are available, including the source to the games
  582.           "Saviour" and "Skipping Breakfast".
  583.           
  584.    Online Documentation
  585.           ALAN Adventure Language Manual
  586.           <http://welcome.to/alan-if/>
  587.           
  588.    Web Page
  589.           The Alan Home Pages
  590.           <http://welcome.to/alan-if/>
  591.           
  592.    Debugging Features
  593.           The debugger currently supports viewing (but not altering) of
  594.           most data, tracing of significant parts of the execution and
  595.           single-stepping though compiled code.
  596.           
  597.    Source
  598.           The source is only available to porters, through the authors.
  599.           
  600.    License
  601.           Freeware. The interpreter may be freely distributed with
  602.           compiled games for commercial purposes (i.e., no fee or
  603.           royalties are required if you start to sell games).
  604.           
  605.    Quick Pros and Cons
  606.           It isn't as powerful as the other Tier (i) systems. However, it
  607.           is apparently easier to learn. Its ports to some systems, such
  608.           as MacOS, are not wonderful or completely up-to-date, but work
  609.           is being done on them.
  610.      _________________________________________________________________
  611.    
  612.    Tier (ii)
  613.    
  614.    Intermediate popularity and new systems, these do not appeal to quite
  615.    as large an audience as those in tier (i) or are less powerful; there
  616.    are infrequent posts to rec.arts.int-fiction dealing with these
  617.    systems and their use; occasionally games are produced using these
  618.    systems.
  619.      _________________________________________________________________
  620.    
  621.    AGT (Adventure Game Toolkit)
  622.           /if-archive/programming/agt/
  623.           
  624.    Version/Release
  625.           Version 1.7 (may vary between platforms). But if you want to
  626.           use AGT, use MAGX and AGiliTy instead of the original. Please.
  627.           
  628.    Authors
  629.           David Malmberg (73435.1277@compuserve.com) and Mark Welch
  630.           (markwelch@ca-probate.com).
  631.           
  632.    Platforms
  633.           Amiga, Atari ST, Macintosh, MS-DOS, Windows. There seem to be
  634.           many different versions for different platforms.
  635.           
  636.    Support
  637.           No technical support from the authors (i.e., no new versions).
  638.           Posts to rec.arts.int-fiction are not uncommon.
  639.           
  640.    Programming Knowledge
  641.           Uses a meta-language similar to English. Standard Level games
  642.           can be created with no prior programming knowledge.
  643.           
  644.    Features/Limitations
  645.           Creates Standard Level games ("require no programming
  646.           experience (honestly!), only a fertile imagination") or
  647.           Professional Level games. There are limitations on the number
  648.           of locations (200) and animate/inanimate objects (100 each) in
  649.           a game. As AGT is no longer supported by the authors there will
  650.           be no future upgrades/bug-fixes. It is not nearly as powerful
  651.           as the Tier (i) systems, and many games are unportable from
  652.           DOS.
  653.           
  654.           There is also now two programs, MAGX and AGiliTy, which are
  655.           more portable and less buggy than the original AGT programs.
  656.           However, they do not improve the language itself much.
  657.           
  658.    Documentation and Game Sources
  659.           The documentation available on the Internet is out-of-date in
  660.           regard to author support (which no longer applies) and
  661.           licensing details (AGT is now freeware). Included is the source
  662.           for a small game, Crusade. Other source for some two dozen
  663.           games is publicly available. Mark Welch has 50-100 copies of
  664.           the final "Master's Edition" printed manual and would invite
  665.           suggestions from AGT users on how he might disseminate them at
  666.           no charge. He *does not* have the "Master's Edition" source
  667.           code though.
  668.           
  669.    Online Documentation
  670.           N/A
  671.           
  672.    Web Page
  673.           AGT Home Page
  674.           <http://www.markwelch.com/agt.htm>
  675.           MAGX webpage
  676.           <http://www.ltlink.com/~jgoemmer/magx.html>
  677.           AGT-authors mailing list page
  678.           <http://www.ltlink.com/~jgoemmer/agt.html>
  679.           
  680.    Debugging Features
  681.           A few basic debugging commands (such as MOVEPLAYER and
  682.           LISTROOMS) to be used at run-time.
  683.           
  684.    Source
  685.           Turbo Pascal 4.0/5.0/5.5/6.0. Magx and AGiliTy are written in
  686.           ANSI C.
  687.           
  688.    License
  689.           Freeware. Games produced with AGT are freely distributable in
  690.           whatever manner you choose.
  691.           
  692.    Quick Pros and Cons
  693.           I really wish I could put more pros here. When AGT was first
  694.           released, ages ago, it was an improvement over what little IF
  695.           creation software existed at the time. However, there really is
  696.           nothing it can do that Inform or TADS can't easily do, and
  697.           unlike the tier (i) systems, it is not expandable. That is a
  698.           key point: in Inform, Hugo, and TADS, you can basically get it
  699.           to do what you want, at least in terms of the internal world
  700.           (if not multimedia output). This is not the case for AGT. It is
  701.           poorly ported. And, though some claim it to be easy to learn,
  702.           others find AGT source incomprehensible. You can write a good
  703.           game in AGT. It's much easier if you just use a different
  704.           system.
  705.      _________________________________________________________________
  706.    
  707.    Quest
  708.           /if-archive/programming/quest/
  709.           
  710.    Version/Release
  711.           2.14.
  712.           
  713.    Author
  714.           Alex Warren (alex@axesoftware.co.uk).
  715.           
  716.    Platforms
  717.           Windows 95/98/NT4.
  718.           
  719.    Support
  720.           All technical questions can be emailed to
  721.           support@axesoftware.co.uk. Bug reports can be emailed to
  722.           bugreport@axesoftware.co.uk. Other enquiries can be directed to
  723.           enquiries@axesoftware.co.uk. The author will try his best to
  724.           give an answer to any questions you may have.
  725.           
  726.    Programming Knowledge
  727.           None required. Quest comes with full documentation on the "ASL"
  728.           programming language used. This is an easy-to-use language
  729.           without much in the way of confusing syntax, designed with
  730.           ease-of-use in mind.
  731.           
  732.    Features/Limitations
  733.           Pretty much unlimited in any way; memory is allocated
  734.           dynamically, so in theory games of any size could be created.
  735.           Easy-to-use interface; built-in multimedia support for WAV and
  736.           various image file formats (including BMP, GIF, and JPEG);
  737.           save/load facility; text formatting; built-in support for
  738.           items, characters, objects, selections, string and numeric
  739.           variables, conditional statements, and user-defined commands;
  740.           error checking. Its built-in library isn't as advanced as some
  741.           of the Tier (i) systems in terms of IF capability, but it
  742.           allows more graphical Win32 power than them. Users can use QDK,
  743.           the Quest Development Kit, to create Quest games without any
  744.           programming.
  745.           
  746.    Documentation and Game Sources
  747.           ASL programming language reference and small sample game
  748.           included in Quest download.
  749.           
  750.    Online Documentation
  751.           Included in the Quest download.
  752.           
  753.    Web Page
  754.           Quest
  755.           <http://www.axesoftware.co.uk/quest/>
  756.           
  757.    Debugging Features
  758.           String variables can be viewed at run-time; various warning
  759.           messages outputted to a log file when errors are encountered.
  760.           
  761.    Source
  762.           Not available.
  763.           
  764.    Licence
  765.           "Free shareware". You can use the Quest runtime free of charge,
  766.           but you are encouraged to register for 10 UK pounds (US$20) via
  767.           cheque or credit card. For this, you get the compiler, which
  768.           allows you to make your own games without distributing the
  769.           source code to them. The free version of Quest is capable of
  770.           running games from both uncompiled ASL source code and CAS
  771.           compiled game code.
  772.      _________________________________________________________________
  773.    
  774.    SUDS
  775.           <http://www.sudsystem.freeserve.co.uk/>
  776.           
  777.    Version/Release
  778.           SUDS Player: 1.0.6.0. SUDS Constructor: 1.0.6.7.
  779.           
  780.    Author
  781.           Andy Elliot (suds@kagi.com).
  782.           
  783.    Platforms
  784.           Windows 95/98/NT.
  785.           
  786.    Support
  787.           The author will continue to improve and develop SUDS for the
  788.           foreseeable future in the light of feedback and functionality
  789.           requests, both of which are welcome. SUDSystems endeavours to
  790.           respond to all queries and suggestions within a maximum of five
  791.           business days.
  792.           
  793.    Programming Knowledge
  794.           Aimed at writers rather than coders, SUDS requires little or no
  795.           programming knowledge, although it does demand the ability to
  796.           think logically. SUDS enables users to build sophisticated
  797.           event-driven procedures via a simple Cut and Paste mouse-driven
  798.           interface. Syntax and construction of commands is handled
  799.           automatically by the program. Design environment is modelled on
  800.           object-oriented development packages such as Visual Basic.
  801.           
  802.    Features/Limitations
  803.           Games are designed in the SUDS Constructor, which outputs the
  804.           game as a single file. Games can be installed and run in the
  805.           SUDS Player without compilation. Games are wholly text,
  806.           although a "welcome" graphic can be specified. However,
  807.           keyboard entry is replaced with a simple cursor-driven mouse
  808.           interface: there is no parser and games consist of putting
  809.           together words on the screen, like in the LucasArts graphical
  810.           adventure games. A graphical map is automatically maintained
  811.           during play, and players can add their own notes to each
  812.           location. Event-driven procedures are triggered by player
  813.           actions or between-turns housekeeping. There is a dedicated
  814.           conversation interface with a drag-and-drop tree editor. The
  815.           map editor is wholly graphical. You can have up to 32767 of
  816.           each of Objects, Scenery, People, and Rooms. The map size is
  817.           unlimited. Unfortunately, because code is not edited as textual
  818.           source, you cannot export code to share with others.
  819.           
  820.    Documentation and Game Sources
  821.           In addition to the documentation packaged with the
  822.           applications, FAQs and information on upgrades are available on
  823.           the SUDS website.
  824.           
  825.    Online Documentation
  826.           Included in the SUDS download.
  827.           
  828.    Web Page
  829.           SUDS
  830.           <http://www.sudsystem.freeserve.co.uk/>
  831.           
  832.    Debugging Features
  833.           The SUDS Player contains fully integrated debugging features
  834.           which can be enabled from the Constructor for a game. These
  835.           include the ability to report on the attributes of every game
  836.           item and all system variables, to move the player to any
  837.           location, and to take or drop any item. An in-game procedure
  838.           monitor gives the ability to view procedures, step through
  839.           code, skip over individual code lines or procedures, evaluate
  840.           conditions, and pre-decide the result of decision points.
  841.           
  842.    Source
  843.           Borland Delphi (Object Pascal) using a Paradox 7 database.
  844.           
  845.    Licence
  846.           The SUDS Player is freeware: there is no fee for installation
  847.           or use. However, the SUDS Constructor is shareware: if you
  848.           intend to continue using it to create a text adventure you must
  849.           register. The main benefits of registering are that you receive
  850.           notification of (free) software updates and game releases (if
  851.           you wish) and your support issues take precedence over those
  852.           who have not paid. Registration also deactivates the nagging
  853.           messages in the Constructor and enables your projects to run in
  854.           the SUDS Player without terminating in after 50 turns.
  855.           SUDS-format games must be released as freeware and cannot be
  856.           distributed for profit.
  857.           
  858.    Quick Pros and Cons
  859.           If you want a Windows-only program with a good IDE and
  860.           dialog-box-based programming instead of text-based programming,
  861.           and you do not mind that SUDS does not even have the pretense
  862.           of a parser and players simply point and click, SUDS is
  863.           probably the system for you: it shows every sign of being
  864.           written with care for that purpose. However, it isn't portable
  865.           outside Windows and doesn't have a parser like most IF, and to
  866.           create games using it costs a small fee, which is more than the
  867.           major IF systems.
  868.      _________________________________________________________________
  869.    
  870.    Tier (iii)
  871.    
  872.    Little current popularity, these are not generally popular; they often
  873.    cater to only a small number of platforms (usually only MS-DOS) and
  874.    may be less advanced or more specialized (such as handling graphics-
  875.    or multimedia-based games) than systems in the other tiers; games are
  876.    rarely produced with these systems.
  877.      _________________________________________________________________
  878.    
  879.    ADL (Adventure Definition Language)
  880.           /if-archive/programming/adl/
  881.           
  882.    Advent
  883.           /if-archive/programming/advent/
  884.           
  885.    Adventura
  886.           /if-archive/programming/adventura/
  887.           
  888.    AdvSys (Adventure System)
  889.           /if-archive/programming/advsys/
  890.           
  891.    AGIFG
  892.           /if-archive/programming/agifg/
  893.           
  894.    Archetype
  895.           /if-archive/programming/archetype/ A highly object-oriented,
  896.           bare-bones system.
  897.           
  898.    Aventuro
  899.           /if-archive/programming/aventuro/ A system in Esperanto.
  900.           
  901.    DROOL (Dave's Reworked Object Oriented Language)
  902.           /if-archive/programming/drool/
  903.           
  904.    Figment
  905.           /if-archive/programming/figment/
  906.           
  907.    GAGS (Generic Adventure Game System)
  908.           /if-archive/programming/gags/ The precursor to AGT.
  909.           
  910.    GameScape
  911.           /if-archive/programming/gamescape/
  912.           
  913.    GINAS (Generic Interactive Narrative Authoring System)
  914.           /if-archive/programming/ginas/ An experimental, lisp-like
  915.           system.
  916.           
  917.    GTAC (Graphic Text Adventure Creator)
  918.           /if-archive/programming/gtac/ Creates a complete playable
  919.           adventure game without losing the friendliness of the Acorn
  920.           Desktop.
  921.           
  922.    LADS (Levi's Adventure Development System)
  923.           /if-archive/programming/lads/ Produces games with a distinct
  924.           "Scott Adams" look and feel. The state of the art of IF
  925.           authoring systems is today well beyond this, yet LADS is still
  926.           a workable, if primitive, system in its own right.
  927.           
  928.    NMP (NM Parser)
  929.           /if-archive/programming/nmp/ A Spanish-language system.
  930.           
  931.    OASYS
  932.           /if-archive/programming/oasys/
  933.           
  934.    Questmaker
  935.           /if-archive/programming/questmaker/
  936.           
  937.    SINTAC (Sistema Integrado de Creacion de Aventuras Conversacionales)
  938.           /if-archive/programming/sintac/ A Spanish-language system.
  939.      _________________________________________________________________
  940.    
  941.    Unprocessed
  942.    
  943.    These systems are either new, or are experimental or beta-release
  944.    systems and as such may not have the popular and immediate appeal of
  945.    systems in other tiers. (In reality, it means that they have been
  946.    sitting in tier with this description since before I (David) started
  947.    maintaining the FAQ, and I do not really know what to do with them.)
  948.    
  949.    Adventure Builder
  950.           /if-archive/programming/advbuilder/
  951.           
  952.    Version/Release
  953.           2.0.
  954.           
  955.    Author
  956.           Alan Conroy (alan@accessone.com).
  957.           
  958.    Platforms
  959.           PC-DOS (v2.0 or later), MS-DOS (v2.0 or later), Windows (3.1 or
  960.           later).
  961.           
  962.    Support
  963.           Minimal, but it does exist. Support is entirely through e-mail
  964.           at this time. Bug reports and suggestions are solicited, and
  965.           response for issues with known work-arounds are timely. Issues
  966.           requiring updates/upgrades of the software are not.
  967.           
  968.    Programming Knowledge
  969.           No programming is required to create a game. However, some
  970.           programming is necessary if the game is to be customized (which
  971.           is nearly always the case). The programming language is a
  972.           non-conforming subset of Sirius, which is similar to Pascal and
  973.           BASIC. No knowledge of advanced programming techniques is
  974.           required in any case.
  975.           
  976.    Features/Limitations
  977.           Provides a source language compiler and linker for writing
  978.           routines, and a database compiler. Features include: up to 8191
  979.           nodes and 4096 items per game; memory caching of disk accesses;
  980.           on-line help; easy-to-use database definition language and
  981.           source language for writing routines; support for time, season,
  982.           weather, day, and earthquakes; ability to log game/debug
  983.           sessions; Linker and Librarian for large software projects.
  984.           
  985.    Documentation and Game Sources
  986.           Documentation consists of a Programmer's Reference manual,
  987.           Database Compiler Reference Manual, Primer, and Master Index.
  988.           Source code for the default handling of basic actions is
  989.           provided. Complete source code for the demonstration game is
  990.           included.
  991.           
  992.    Online Documentation
  993.           None, though electronic docs do exist that are not HTML.
  994.           
  995.    Web Page
  996.           ADVENTURE BUILDER
  997.           <http://www.accessone.com/~conroy/ab.html>
  998.           
  999.    Debugging Features
  1000.           Debugging tool built into the run-time system provides insight
  1001.           into the internal workings of the run-time system. A
  1002.           full-functioned source debugger is available for user-written
  1003.           (Sirius) code. The debugger allows setting breakpoints,
  1004.           watchpoints (breakpoints on changed data), examination of
  1005.           source code and variables, searching of source code,
  1006.           single-step, on-line help, and other minor features.
  1007.           
  1008.    Source
  1009.           Source to Adventure Builder is available only under license and
  1010.           in specific cases at this time.
  1011.           
  1012.    License
  1013.           Shareware. You may use it for personal enjoyment at no charge.
  1014.           If you sell, for profit, any byproduct of this software, you
  1015.           are REQUIRED to pay a $25.00 (US) one-time fee. Once this fee
  1016.           is paid, any number of games may be produced and sold
  1017.           royalty-free. Also you will be notified of any updates, you are
  1018.           eligible for discounts on updates, and your support issues will
  1019.           take precedence over those who have not paid. Adventure Builder
  1020.           is freely distributable to anyone and everyone so long as it is
  1021.           distributed in UNMODIFIED FORM and no fees, other than
  1022.           reasonable for the distribution media, are charged.
  1023.      _________________________________________________________________
  1024.    
  1025.    Rexx-Adventure
  1026.           /if-archive/programming/rexx-adventure/
  1027.           
  1028.    Version/Release
  1029.           1.0.
  1030.           
  1031.    Author
  1032.           Mike DeSanto (desantom@io.com).
  1033.           
  1034.    Platform
  1035.           OS/2 (2.1 or better, ReXX installed).
  1036.           
  1037.    Support
  1038.           Send e-mail to the author. At least two people other than the
  1039.           author are currently working on adventures, and an AGT to
  1040.           Rexx-Adventure converter is being researched by a third party.
  1041.           
  1042.    Programming Knowledge
  1043.           Minimal programming knowledge required.
  1044.           
  1045.    Features/Limitations
  1046.           Features object based adventure creation with a GUI interface.
  1047.           Object variables are totally user-definable and all ambiguity
  1048.           about what objects can be manipulated, and how they can be
  1049.           manipulated has been removed. There is currently no indirect
  1050.           object support and objects inside other objects can not be seen
  1051.           (i.e., water in a bottle), although these are respectively
  1052.           planned and already implemented for version 2. While movable
  1053.           windows are also implemented for version 2, they are not
  1054.           present currently (i.e., fixed screen layout).
  1055.           
  1056.    Documentation and Game Sources
  1057.           Documentation will soon be available in OS/2 .INF format.
  1058.           
  1059.    Online Documentation
  1060.           N/A
  1061.           
  1062.    Web Page
  1063.           Rexx-Adventure <http://www.io.com/~desantom/rad.html>
  1064.           
  1065.    Debugging Features
  1066.           Very Few.
  1067.           
  1068.    Source
  1069.           Watcom VX-REXX, available to porters from the author.
  1070.           
  1071.    License
  1072.           Freeware. Mike DeSanto retains the copyright and it may be
  1073.           distributed only in its original form. Authors may charge for
  1074.           their adventures on the condition that it is made very clear
  1075.           that the fee is for the adventure, and not for Rexx-Adventure.
  1076.      _________________________________________________________________
  1077.    
  1078.    A NOTE ON AUTHOR SUPPORT: While most authors are happy to accept email
  1079.    concerning their system please remember that reading and responding to
  1080.    email does take time. While bug reports, requests/suggestions for new
  1081.    features, etc. should be sent to the author directly, questions on how
  1082.    to implement a particular feature or operate a particular function
  1083.    should go to rec.arts.int-fiction, where time is not an issue. Bug
  1084.    reports for the authoring systems should probably be both emailed to
  1085.    the author, who can fix them, and posted to raif, so that other
  1086.    readers can realize that the bug exists. (Bug reports for games other
  1087.    than the Infocom ones should not be posted to rec.games.int-fiction,
  1088.    but rather emailed to the author. A bug in an authoring system can
  1089.    create bugs in other people's games; a bug in a game can't do that.)
  1090.    
  1091.    You should also realize that, especially if you are not paying for the
  1092.    system, the system authors have no "responsibility" to the community
  1093.    to update their program. There was once a nasty stir on raif in which
  1094.    a poster ordered Graham Nelson, who had been unable to read the
  1095.    newsgroup for a while for various reasons, to update Inform. Graham
  1096.    and the other authors have put a lot of hard work into their systems,
  1097.    and probably will continue to do so. But if they wanted to stop, they
  1098.    could. (After many messages asserting that point were posted, the
  1099.    thread died down. This was shortly followed by a new version of
  1100.    Inform.)
  1101.    
  1102.    A NOTE ON LICENSING: Games written with some authoring systems,
  1103.    notably Hugo, may not be distributed for money (shareware or
  1104.    commercial) without the system author's express consent. You should
  1105.    always read and abide by any and all licensing details relating to the
  1106.    system which you choose. If you do not like the licensing
  1107.    arrangements, use a different system. Of course, system authors are
  1108.    (usually) good human beings, and will probably say yes.
  1109.      _________________________________________________________________
  1110.    
  1111.   4.5: What is Glk?
  1112.   
  1113.    It is a standard for text-based I/O, designed by Andrew "zarf"
  1114.    Plotkin. Complete information can be found at
  1115.    <http://www.eblong.com/zarf/glk/>.
  1116.    
  1117.    Here is a brief description of it, plagiarized from LucFrench and
  1118.    Zarf's descriptions on raif:
  1119.    
  1120.    GLK is a spec for porting Input/Output code across platforms. In order
  1121.    to understand why it's necessary, one must understand a bit about I/O.
  1122.    
  1123.    A Unix machine has a different way of printing to the screen than a
  1124.    Mac, since one is primarily text based, and the other is a graphical
  1125.    windowing enviroment. As such, they have two *very* different ways of
  1126.    outputting data, particularly for some of the special effects that
  1127.    many high level IF systems need (e.g., a status line, picture, color,
  1128.    etc.).
  1129.    
  1130.    So, porting the I/O can be difficult. What Glk attempts to do is
  1131.    specify a set of calls to the Glk system that allows for easy porting
  1132.    across multiple platforms.
  1133.    
  1134.    The Glk calls are intended to be not only portable, but to be *easily*
  1135.    portable: abstracted in such a way that they give the interpreter
  1136.    maximum flexibility. This allows interpreters on different platforms
  1137.    to take advantage of particular UI features.
  1138.    
  1139.    A port of Dungeon, a scripting language, interpreters for the major IF
  1140.    languages, and a few demos have been ported to Glk. If you are writing
  1141.    an IF interpreter or similar program, consider using Glk. It'll make
  1142.    everyone happy.
  1143.      _________________________________________________________________
  1144.    
  1145.   4.6: What are VILE 0 ERRORS FROM HELL, and how should I avoid them in Inform?
  1146.   
  1147.    It is illegal on the ZMachine that Inform compiles to to do any of the
  1148.    following when x == 0 (nothing):
  1149.    
  1150. child(x), parent(x), sibling(x), etc
  1151. if (x has attribute)
  1152. if (x.property == ...)
  1153. give x attribute
  1154. x.property = ...
  1155. move x to y
  1156. move y to x
  1157. remove x
  1158.  
  1159.    ... or pretty much anything else which assumes x is a legitimate
  1160.    object.
  1161.    
  1162.    Some interpreters will ignore this, and either end up not messing up,
  1163.    or crash. In the former case, this means that you will falsely believe
  1164.    there is nothing wrong with your game. In the latter case, it, well,
  1165.    crashes.
  1166.    
  1167.    MaxZip, and some other Zip interpreters, will check and warn at these
  1168.    illegal statements.
  1169.    
  1170.    There is a bug in the Inform library (version 6/7) that will cause
  1171.    this in the HasLightSource function. You should patch this immediately
  1172.    if for some reason your are still using library 6/7.
  1173.    
  1174.    In the library file parserm, find the function HasLightSource. Near
  1175.    the top, there are the lines:
  1176.    
  1177.    if (i has enterable || IsSeeThrough(i)==1)
  1178.    {   objectloop (i in i)
  1179.            if (HasLightSource(i)==1) rtrue;
  1180.    }
  1181.  
  1182.    This should be
  1183.    
  1184.    if (i has enterable || IsSeeThrough(i)==1)
  1185.    {   objectloop (j in i)
  1186.            if (HasLightSource(j)==1) rtrue;
  1187.    }
  1188.  
  1189.    In other words, change two i's to j's.
  1190.    
  1191.    Library 6/8 and later fixes this and a few other uncommon V0EsFH.
  1192.    
  1193.    Much more information on the subject of VILE 0 ERRORS FROM HELL can be
  1194.    found at <http://www.eblong.com/zarf/vileerror.html>, thanks to Andrew
  1195.    Plotkin, who made everyone aware of this problem and helped with this
  1196.    article.
  1197.    
  1198.    As of Inform 6.20, VILE 0 ERRORS FROM HELL and other common Inform
  1199.    problems are caught at run-time by compiled-in checking routines.
  1200.    There is much rejoicing! Unfortunately, if this "strict" mode is
  1201.    turned off, Inform 6.20 (though not the newer 6.21 which should be
  1202.    used instead of 6.20) creates buggy code; and Library 6/8 in strict
  1203.    mode is too large to fit in a module, meaning that you can't create
  1204.    strict library modules. Inform 6.20 should *not* be used due to its
  1205.    bugs in non-strict mode: either stick with a lower version or upgrade
  1206.    to 6.21.
  1207.    
  1208.    Inform 6.20 and up also classifies objectloop errors as V0EsFH and
  1209.    catches them. These are another common cause of problems in Inform. As
  1210.    most Inform programmers know, objectloop (x) { ... } will run ... once
  1211.    for each object in the game, setting 'x' to that object. Here's the
  1212.    problem:
  1213.    
  1214. objectloop (foo in someobject)
  1215. {
  1216.    move foo to somewhereelse;
  1217. }
  1218.  
  1219.    You'd think this moves every object in someobject to somewhereelse.
  1220.    But it doesn't. This is becase objectloop(a in b) {...} is optimized.
  1221.    Instead of being equivalent to
  1222.    
  1223. objectloop(a)
  1224. {
  1225.    if (a in b)
  1226.    {
  1227.       ...
  1228.    }
  1229. }
  1230.  
  1231.    it is the same as
  1232.    
  1233. for (a = child(b); a ~= 0; a = sibling(a))
  1234. {
  1235.    ...
  1236. }
  1237.  
  1238.    In other words, it simply strolls along the object tree. If a is moved
  1239.    out of b, it will make the next a be equal to the sibling of the
  1240.    current a, which will not be what you want.
  1241.    
  1242.    The solution is, for the simple case of "move all children of foo to
  1243.    bar":
  1244.    
  1245. while (children(foo) ~= 0) move child(foo) to bar;
  1246.  
  1247.    For anything more complicated than that, use:
  1248.    
  1249. objectloop(a)
  1250. {
  1251.    if (a in b)
  1252.    {
  1253.       ...
  1254.    }
  1255. }
  1256.  
  1257.    The same problem can occur in the little-used 'x from object' and 'x
  1258.    near object' versions, though not in any other ones (such as 'x
  1259.    ofclass c'). Inform 6.20 and up will catch these at run-time.
  1260.      _________________________________________________________________
  1261.    
  1262.   4.7: How do I find bug fixes for Inform?
  1263.   
  1264.    Recent versions of Inform's library and compiler have introduced some
  1265.    annoying bugs and weird ways of parsing. Though Graham Nelson fixes
  1266.    these in new versions of the Inform library, between releases you can
  1267.    look at the official Inform Patch Site at
  1268.    <http://adamcadre.ac/inform.html>, maintained by Adam Cadre.
  1269.      _________________________________________________________________
  1270.    
  1271.   4.8: What editors can I use to write IF?
  1272.   
  1273.    There are many text editors that are useful for writing IF. The
  1274.    following list describes some of them. If you have any corrections or
  1275.    suggestions, feel free to email them to me. Most of the following
  1276.    descriptions were written by others; I'd like to thank everyone who
  1277.    helped me. However, I edited them, so any incorrect statements are
  1278.    probably my fault.
  1279.      * DOS/Windows (Win32-only (Windows 95, 98, and NT) unless specified)
  1280.        
  1281.      * Inform
  1282.        
  1283.      * Informer
  1284.        
  1285.      * Author: William J. Schlaer
  1286.      * /if-archive/programming/editors/InEdit10.zip
  1287.      * Informer is a text editor that can generate Inform code for
  1288.        objects, locations, routine, etc. It includes Inform syntax
  1289.        highlighting; it can run the Inform compiler from within the
  1290.        editor and captures error messages for viewing; can view code as
  1291.        graphical object tree or location map.
  1292.        
  1293.      Inform IDE
  1294.      * Author: Andrew Bault
  1295.      * <http://www.tiac.net/users/ajb/software.html>
  1296.      * Availability: free
  1297.      * With Inform IDE, instead of creating your program in a text editor
  1298.        as usual, you write code in a "browser" which shows the
  1299.        relationship of pieces of code to one another. You can import and
  1300.        export code with the normal text version of Inform source code.
  1301.        You can browse and modify objects and functions within
  1302.        hierarchical or alphabetical trees.
  1303.        
  1304.      IMForm
  1305.      * Author: Tim Middleton
  1306.      * /if-archive/programming/editors/imfb01.zip
  1307.      * IMForm is an ambitious and pretty IDE for Inform. However, it is
  1308.        unfinished. It is not recommended for use in writing Inform games,
  1309.        but is interesting to look at for anyone thinking about writing an
  1310.        IF IDE. It has been uploaded with source code for anybody who
  1311.        wants to to complete the project.
  1312.        
  1313.      TADS
  1314.      * TADS File Editor
  1315.        
  1316.      * Author: Satan's Mutt
  1317.      * /if-archive/programming/editors/tfe.zip
  1318.      * TFE is a conventional text editor with TADS syntax highlighting.
  1319.        It can run the TADS compiler and capture the compiler output to an
  1320.        editor window.
  1321.        
  1322.      General
  1323.      * Ultraedit
  1324.        
  1325.      * Author: Ian David Mead
  1326.      * <http://www.ultraedit.com/>
  1327.      * Platforms: Win32 and Windows 3.1
  1328.      * Availability: $30 shareware
  1329.      * Ultraedit is a programmer's text editor with configurable syntax
  1330.        highlighting that can be set up for any IF language. You can run a
  1331.        compiler from within editor and capture its output to a window for
  1332.        viewing. It has macros. You can create your own syntax
  1333.        highlighting config files. Giovanni Riccardi has created an Inform
  1334.        config file, available at
  1335.        /if-archive/programming/editors/ueditinf12.txt . Gunther Schmidl
  1336.        has created a Hugo config file, available at
  1337.        <http://x39.deja.com/getdoc.xp?AN=503974273&fmt=text>. Theodore
  1338.        Hwa's TADS config file is available at
  1339.        /if-archive/programming/editors/ueditTADSwordfile.txt .
  1340.        
  1341.      Programmer's File Editor (PFE)
  1342.      * Author: A. Phillips
  1343.      * /if-archive/programming/editors/pfe101i.zip (Win32)
  1344.      * /if-archive/programming/editors/pfe101.zip (Windows 3.1)
  1345.      * Availability: freeware
  1346.      * PFE is a programmer's text editor. It can run a compiler and
  1347.        capture output from it. It has macros. It is highly configurable.
  1348.        It matches paired characters. It remembers your cursor position in
  1349.        previous documents. It has no syntax highlighting, however. It
  1350.        interacts well with other programs, and can execute them, passing
  1351.        them the current file.
  1352.      * Note: the author of PFE decided to stop developing PFE in October
  1353.        1999; copies of PFE for both 32-bit and 16-bit Windows can now be
  1354.        found at the IF-Archive.
  1355.        
  1356.      TextPad
  1357.      * Author: ?
  1358.      * <http://www.textpad.com/>
  1359.      * Availability: $27 shareware
  1360.      * Platforms: Win32 and Windows 3.1
  1361.      * TextPad is a highly configurable text editor focused on
  1362.        programming. Some of its features include automatic indentation; a
  1363.        changeable tab size (4 or 8? The tab size Holy War continues...);
  1364.        word-wrap; macros (very handy sometimes); a "clip library" for
  1365.        saving related macros (many user-created clip libraries are
  1366.        available for download from the TextPad website); the ability to
  1367.        compare two files (like Unix diff); a user-extensible Tools menu
  1368.        where you can enter custom commands, such as calling a compiler or
  1369.        syntax-checker; the ability to sort lines in a file according to
  1370.        various user-definable criteria; line-break reformatting (a
  1371.        feature that is immensely useful when using cross-platform text
  1372.        files); and block highlighting and copying.
  1373.        
  1374.      FED
  1375.      * Author: Shawn Hargreaves
  1376.      * <http://www.talula.demon.co.uk/fed/>
  1377.      * Availability: Free (open source)
  1378.      * Platforms: MS-DOS, Linux
  1379.      * FED is an open-source folding text editor. It has an intuitive
  1380.        user interface, syntax highlighting, the ability to fold blocks of
  1381.        text out of sight, multi-level undo and redo, flexible wordwrap,
  1382.        binary and hex editing modes, macro recordings, and more. Plus, it
  1383.        has a built-in tetris game and screensaver: what more do you want?
  1384.      * Configuration files for TADS and ALAN by Stephen Griffiths are on
  1385.        the IF-Archive at /if-archive/programming/editors/alan.fed and
  1386.        /if-archive/programming/editors/tads.fed .
  1387.        
  1388.      Multi-Edit
  1389.      * Author: American Cybernetics
  1390.      * <http://www.amcyber.com/>
  1391.      * Availability: $199 commercial
  1392.      * Multi-Edit is a powerful text editor designed for use in multiple
  1393.        languages. It is able to determine which of its customized tools
  1394.        to use based on the language of your file. It integrates well with
  1395.        other programming tools including version control. It has a
  1396.        powerful extension language with the ability to call any DLL
  1397.        function including the Win32 API. It also contains many more
  1398.        powerful text-editing features. The $199 price includes a printed
  1399.        manual; you can also just download the executables from $129.
  1400.        Douglas Harter's Hugo template can be found on the IF-Archive at
  1401.        /if-archive/programming/editors/hugo.tpt .
  1402.        
  1403.      UED
  1404.      * Author: ?
  1405.      * <http://www.onlinebible.simplenet.com/> (see below)
  1406.      * Platforms: MS-DOS
  1407.      * Availability: freeware, probably
  1408.      * UED (not to be confused with UltraEdit) is a simple yet powerful
  1409.        text editor for DOS. It is distributed with Online Bible (which is
  1410.        freeware and available from the above URL). Since OB is freely
  1411.        redistributable, the author of this article assumes that UED is
  1412.        also; anyone who wants a copy can get it by emailing
  1413.        jonadab@bright.net, the author of this article, if they do not
  1414.        wish to download Online Bible. It is small: under 35K when
  1415.        compressed by ZIP. It has no IF-specific features, but its nice
  1416.        features include the ability to word-wrap; configure the margin;
  1417.        its speed (loads in no time flat even on an 8088); fairly smart
  1418.        paragraph reformatting (treats the first line of paragraph
  1419.        differently) that can be invoked on the current paragraph; the
  1420.        ability to cut/copy/paste groups of lines, standard ranges, or
  1421.        even rectangular blocks (very useful); loads up to nine files at
  1422.        once and can switch between them easily; can put two files on
  1423.        screen at once if desired. Its main limitation is that it can only
  1424.        handle about sixty-thousand lines of text at any one time. It does
  1425.        not come with any documentation, but (in the opinion of the author
  1426.        of this article), it does not need any, as it has a two minute
  1427.        learning curve and has no complicated commands.
  1428.        
  1429.      Microsoft Visual C++
  1430.      * Author: Microsoft
  1431.      * <http://msdn.microsoft.com/visualc/>
  1432.      * Availability: expensive
  1433.      * Microsoft Visual C++ is an expensive Integrated Development
  1434.        Environment (IDE) for C++. It contains, among many other things,
  1435.        an excellent programmer's text editor. However, I would never
  1436.        recommend purchasing it solely for the text editor, as it is far
  1437.        too expensive; if you already own a copy, however, you should give
  1438.        it a try as an IF editor.
  1439.        
  1440.      CodeWright
  1441.      * Author: Microsoft
  1442.      * <http://www.premia.com/products/codewright/>
  1443.      * Availability: $299 commercial
  1444.      * CodeWright is a commercial Windows text editor with many features.
  1445.        Though designed for editing text, it includes many powerful
  1446.        automation features such as autocompletion and template languages.
  1447.        Its features are mostly customizable.
  1448.        
  1449.      ScopeEdit
  1450.      * Author: Loginov Software
  1451.      * <http://www.loginov.com/>
  1452.      * Availability: $79 commercial
  1453.      * ScopeEdit is a unique text editor: it lets you structure your code
  1454.        into descriptive folding trees. In addition, it has syntax
  1455.        highlighting and a powerful macro language.
  1456.        
  1457.      Windows Notepad and DOS Edit
  1458.      * Author: Microsoft
  1459.      * Availability: comes with DOS/Windows
  1460.      * Windows Notepad and DOS Edit should be preinstalled on your
  1461.        DOS/Windows computer. They're usable, but a true programmer's
  1462.        editor is much better.
  1463.        
  1464.      Macintosh
  1465.      * ALAN
  1466.        
  1467.      * Starter for ALAN
  1468.        
  1469.      * Author: Tony Houlbrooke
  1470.      * /if-archive/programming/alan/Starter.hqx
  1471.      * Starter for ALAN is a Hypercard application that can help lay out
  1472.        your location map and objects and then generate Alan source code
  1473.        from it. It is not a real editor, though, and you need to edit the
  1474.        code with an editor after creating a skeleton with this.
  1475.        
  1476.      TADS
  1477.      * TADS Template
  1478.        
  1479.      * Author: Jared L. Reisinger
  1480.      * /if-archive/programming/tads/utils/tads-template-0.9.sit.hqx
  1481.      * TADS Template is a Hypercard application that can help lay out
  1482.        your location map and objects and then generate TADS source code
  1483.        from it. It is not a real editor, though, and you need to edit the
  1484.        code with an editor after creating a skeleton with this.
  1485.        
  1486.      General
  1487.      * MPW (Macintosh Programmer's Workshop)
  1488.        
  1489.      * Author: Apple Computer
  1490.      * <http://developer.apple.com/tools/mpw-tools/>
  1491.      * MPW has syntax-coloring support for Inform. It's a rather nice
  1492.        editor in its own right, and because it's also a Unix-like shell
  1493.        environment, it's (almost) totally customizable.
  1494.        
  1495.      Alpha
  1496.      * Author: Pete Keleher
  1497.      * <http://alpha.olm.net/>
  1498.      * Availability: $30 shareware
  1499.      * The Alpha editor is a very powerful Mac editor that uses the Tcl
  1500.        language for customization. It has an emacs-like feel, but it is
  1501.        not an emacs port and uses Tcl instead of LISP. An Inform "mode"
  1502.        can be found at
  1503.        <http://www.fastlane.net./~russellm/informmode.html>.
  1504.        
  1505.      BBEdit and BBEdit Lite
  1506.      * Author: Bare Bones Software
  1507.      * <http://www.barebones.com/>
  1508.      * Availability: $117 commercial (with some other deals); Lite
  1509.        version free
  1510.      * BBEdit is a powerful, easy to use Mac text editor. It has many
  1511.        features that make it easy to edit text, especially for
  1512.        programming and writing HTML. The full version is commercial; a
  1513.        fully functional "Lite" version is available for free and is an
  1514.        excellent text editor in its own right (this article is being
  1515.        written in BBEdit Lite). BBEdit Lite does not have as many
  1516.        advanced features as the full BBEdit, though. (Do not confuse
  1517.        BBEdit Lite, which can be found on Bare Bones' "Free Stuff" page,
  1518.        with the BBEdit Demo, which is a crippled version of the full
  1519.        BBEdit and should only be used to try out the full BBEdit's
  1520.        features for free.)
  1521.        
  1522.      Unix
  1523.      * General (see also FED under Windows)
  1524.        
  1525.      * emacs (GNU emacs and XEmacs)
  1526.        
  1527.      * <http://www.emacs.org/>
  1528.      * Platforms: Unix, Windows; others (such as Mac) in old versions
  1529.      * Availability: GPL
  1530.      * emacs shares with vi the dubious distinction of being the most
  1531.        (in)famous UNIX text editor around. This reviewer doesn't know the
  1532.        differences between GNU Emacs (the "official" Emacs, if such a
  1533.        title can be claimed) and XEmacs off-hand, but XEmacs has most of
  1534.        the features of GNU Emacs with possibly a few more. Some of the
  1535.        features that make the various emacsen useful for writing IF are
  1536.        color syntax highlighting; the fact that it is completely
  1537.        user-configureable using the programming language Lisp; the
  1538.        available emacs editing "modes" for TADS and Inform, which can be
  1539.        found in the programming/editors directory of the IF Archive; and
  1540.        many more features related to general text editing and programming
  1541.        such as the ability to open multiple files and auto-indent, but
  1542.        listing all of emacs' features would make this review far too
  1543.        long. Suffice it to say that if you want it, emacs can probably do
  1544.        it. And if you have a need that hasn't already been thought of,
  1545.        you can take care of it yourself by writing some Lisp code. Though
  1546.        Lisp's detractors (this reviewer among them) claim that Lisp
  1547.        stands for "Lots of Irritating Superfluous Parentheses" and find
  1548.        it hard to read at best, some people (who must have masochistic
  1549.        tendencies) like Lisp. If you happen to be one of them, great, and
  1550.        please don't flame your humble reviewer too hard... :-) Seriously,
  1551.        though, you don't have to know a thing about Lisp to *use* emacs,
  1552.        just to expand its capabilities. You will probably find that emacs
  1553.        has all the features you need. emacs works fine in text mode (aka
  1554.        console mode); you can also use XEmacs in X Windows. emacs comes
  1555.        with complete documentation. Rupert Lane's emacs mode for Inform
  1556.        can be found at /if-archive/programming/editors/inform-mode.el ;
  1557.        Stephen Granade's emacs mode for TADS is at
  1558.        /if-archive/programming/editors/tads-mode.el .
  1559.        
  1560.      vi and offspring
  1561.      * <http://www.vim.org/> for vim
  1562.      * <http://www.fh-wedel.de/elvis/> for elvis
  1563.      * Platforms: many
  1564.      * Availability: varies
  1565.      * vi is the original visual editor for Unix. There are many clones
  1566.        and extensions of it, such as elvis and vim. It will do Inform
  1567.        syntax hilighting. Amir Karger's syntax file for TADS is available
  1568.        from <http://www.hec.utah.edu/~karger/vim/syntax/tads.vim>.
  1569.        
  1570.      Acorn RiscOS
  1571.      * General
  1572.        
  1573.      * !Zap
  1574.        
  1575.      * Availability: Open Source
  1576.      * <http://www.zap.uk.eu.org/>
  1577.      * !Zap is the text editor of choice of Graham Nelson, the author of
  1578.        Inform. It is highly configurable and editable. Graham has written
  1579.        a syntax coloring file for Inform for it.
  1580.        
  1581.      Amiga
  1582.      * General
  1583.        
  1584.      * GoldED
  1585.        
  1586.      * Author: Dietmar Eilert
  1587.      * <http://members.tripod.com/golded/golded.htm>
  1588.      * The GoldED Studio editor core offers all the functions you can
  1589.        expect from a modern editor. You get unlimited configurable undo
  1590.        and redo, configurable syntax highlighting, templates, folding,
  1591.        automatic backup creation, macro recording and support for a
  1592.        script language (Rexx). Block functions include support for
  1593.        columnar blocks. Advanced layout fuctions provide constant
  1594.        reformatting and word wrap while you are typing. Drag and Drop is
  1595.        supported, so text can be moved with the mouse. Scrolling is
  1596.        exceptionally fast even on slow Amigas. Optional input aids
  1597.        include IntelliSense (context-sensitive completion of words) and
  1598.        AutoCase (automatic case correction). At the end of a day, you can
  1599.        use the session management functions to save the current state of
  1600.        your work.
  1601.      _________________________________________________________________
  1602.    
  1603.   4.9: What tools and utilities are available?
  1604.   
  1605.    Scott2Zip
  1606.           /if-archive/scott-adams/
  1607.           
  1608.    Description
  1609.           Bjorn Gustavsson (ermbgus@at.ericsson.se) has written this Perl
  1610.           script which converts the old Scott Adams games to Inform
  1611.           source (you compile this with the Inform compiler and then play
  1612.           the resulting gamefile on any `Z-machine' interpreter).
  1613.      _________________________________________________________________
  1614.    
  1615.    UnQuill
  1616.           /if-archive/solutions/tools/
  1617.           
  1618.    Description
  1619.           John Elliott's (jce@seasip.demon.co.uk) utility will
  1620.           "disassemble" Spectrum snapshots (.SNA) of games written with
  1621.           The Quill. Available as C source and executables for DOS and
  1622.           CP/M.
  1623.      _________________________________________________________________
  1624.    
  1625.    Ztools
  1626.           /if-archive/infocom/tools/ztools/
  1627.           
  1628.    Description
  1629.           This package, maintained by Matthew T. Russotto
  1630.           (russotto@wanda.vf.pond.com), comprises several tools,
  1631.           including a disassembler, for manipulating games in the
  1632.           `Z-machine' format as used by Infocom and produced by Inform.
  1633.           They are quite useful. There are ports to many platforms.
  1634.      _________________________________________________________________
  1635.    
  1636.    Disinformation
  1637.           <http://www2.prestel.co.uk/lwtcdi/uninform/instruct.htm>
  1638.           
  1639.    Description
  1640.           Jeremy A. Smith's program takes output data from TXD and
  1641.           INFODUMP (two components of Ztools; see above), mangles it up,
  1642.           and outputs it in an Inform-like way. It makes disassembly of
  1643.           Z-machine code a *lot* more readable. It doesn't (yet) create
  1644.           completely compilable code, and is by no means the same as what
  1645.           was written, but is higher level than ZMachine assembly.
  1646.      _________________________________________________________________
  1647.    
  1648.   4.10: Wouldn't a visual system be great for writing IF in?
  1649.   
  1650.    This has been discussed a lot.
  1651.    
  1652.    The general consensus seemed to be that they would be helpful, but
  1653.    only if they allowed the writer to get at the bare Inform or TADS code
  1654.    underneath and not use only high-level editing.
  1655.    
  1656.    Also, it was realized that such tools currently don't exist because
  1657.    the people with the skills to write them generally don't need them.
  1658.    There is an Inform IDE (Integrated Development Environment) or three
  1659.    in the works, and TADS comes with Visual Workbench, but IDEs are not
  1660.    what is usually meant by "visual".
  1661.    
  1662.    However, if you want to write a visual IF editing tool, great. Show us
  1663.    the results. Just don't wander in and ask somebody else to write one
  1664.    for you.
  1665.    
  1666.    The Quest system [System:Quest] includes QDK, a visual development
  1667.    tool. However, Quest isn't quite as advanced as Inform or TADS,
  1668.    requiring you to code just about everything from scratch. SUDS
  1669.    [System:SUDS] is quite visual; however, the games it creates do not
  1670.    have a parser and are more like a point-and-click game.
  1671.      _________________________________________________________________
  1672.    
  1673.   4.11: What support does Inform offer for graphics and sounds?
  1674.   
  1675.    The ZMachine's V6 format supports graphics, and Inform can compile to
  1676.    it quite well. Jason Penney has written a library called V6Lib,
  1677.    available at the IF-Archive, that allows you to use a high-level
  1678.    window system (instead of having to do the ZMachine opcodes by hand).
  1679.    
  1680.    However (and this is a big however), almost all current V6 ZMachine
  1681.    interpreters (and not all ZMachine interpreters will do V6) only
  1682.    supports display of horrible graphics format used by Infocom in some
  1683.    of their later games. It is horrible because it is proprietary (no
  1684.    tools exist to write to it) and has many technical problems, such as
  1685.    the fact that you can only use a *very* limited amount of colors (14,
  1686.    I think).
  1687.    
  1688.    The Blorb format is a new way of getting images (in PNG or JPEG
  1689.    format) and other 'resources' to interface with ZMachine interpreters.
  1690.    Now, when I say "new", I mean it was proposed a few years ago. Barely
  1691.    any interpreters support it yet. Because of this, no games have been
  1692.    written that use Blorb. Because of this, barely any interpreters
  1693.    support Blorb. Because of this...
  1694.    
  1695.    And so on goes the vicious circle. A similar situation exists for
  1696.    sounds: there are ZMachine opcodes for sound playing, but Blorb is
  1697.    required to make it work well.
  1698.    
  1699.    Inform Glk [What is Glk?: 4.5] support would be useful; there exists
  1700.    at least two ZMachine interpreters that uses Glk (Evin Robertson's
  1701.    Nitfol and GlkZip), but there is no way to access the Glk functions
  1702.    from Inform: the Glk support of these interpreters allows the
  1703.    *interpreters* to be easily ported, but not access to Glk from within
  1704.    the game.
  1705.    
  1706.    glulx solves all these problems and more. glulx is a virtual machine
  1707.    designed by Andrew "Zarf" Plotkin that is like the ZMachine, but
  1708.    without its limits. An alternate version of Inform can compile to it.
  1709.    Once Glulx Inform (currently at version 6.21(G0.30)) is fully tested,
  1710.    it will become part of the main Inform distribution. Glulx uses Glk as
  1711.    its native interface, so all of Glk's IO abilities will be usable from
  1712.    it. For now, look at <http://www.eblong.com/zarf/glulx/>.
  1713.      _________________________________________________________________
  1714.    
  1715.   4.12: What support does TADS offer for graphics and sounds?
  1716.   
  1717.    Early in 1998, a new version of TADS called HTML-TADS was released by
  1718.    Mike Roberts, the author of TADS. It is the same as TADS, except that
  1719.    it allows formatted output. The format can control text and background
  1720.    color, images, sounds, and other cool things. The format is controlled
  1721.    by use of a limited form of HTML (the language used on the web).
  1722.    HTML-TADS has nothing to do with the Internet or the Web or Java; it
  1723.    simply uses tags like <IMG> and <B> and <A HREF>.
  1724.    
  1725.    The only platforms that (as of April 1999) the HTML-TADS runtime has
  1726.    been ported to are Windows 95/98/NT and Macintosh. The compiler,
  1727.    though, is the same as a normal TADS compiler.
  1728.    
  1729.    Neil K. Guy's TADS site has more information about HTML-TADS:
  1730.    <http://www.tela.bc.ca/tela/tads/>.
  1731.    
  1732.    Several games have been created that take advantage of HTML-TADS,
  1733.    including Neil K. Guy's "The Golden Skull" and "The Landing"; Stephen
  1734.    Granade's "The Arrival"; and Mike Roberts' "The Plant". As of late
  1735.    1999, HTML-TADS is probably the best way to do a relatively portable
  1736.    graphical game.
  1737.      _________________________________________________________________
  1738.    
  1739.   4.13: What support does Hugo offer for graphics and sounds?
  1740.   
  1741.    Hugo provides support for a bunch of different graphics and sound
  1742.    formats. Graphics and sounds only are on the Windows 95/98/NT, DOS,
  1743.    BeOS, and X Windows ports, though, but that includes most computers
  1744.    except Macs. The picture placement commands do not allow too much
  1745.    precision, unless you mess around with tricky window creation
  1746.    commands. Simple stuff works well, but more complicated stuff is
  1747.    harder, though possible.
  1748.    
  1749.    More information on this subject can be found at
  1750.    <http://interactfiction.about.com/library/weekly/aa061598.htm>. This
  1751.    article by Stephen Granade also contains links to articles about
  1752.    graphics and sound in Inform and TADS.
  1753.      _________________________________________________________________
  1754.    
  1755.   4.14: Which IF system should I use?
  1756.   
  1757.    This is probably the most frequently asked question on
  1758.    rec.arts.int-fiction. Every answer has been different.
  1759.    
  1760.    The truth of the matter is that there isn't much that TADS can do but
  1761.    Inform can't or vice versa, and Hugo is just about as good as the top
  1762.    two; it is just that some things require a bit more work than others
  1763.    on some systems. ALAN is also not a bad choice; it is not as powerful
  1764.    as the other three but some have found it easier to use.
  1765.    
  1766.    It has been commented that the most difficult thing to learn in any IF
  1767.    language is not the syntax of the language but its world model.
  1768.    Knowing the peculiarities of the language is easy compared to
  1769.    understanding the interactions between the objects of your game world.
  1770.    If you can write IF at all, then you can certainly master any of the
  1771.    major languages. Many have.
  1772.    
  1773.    If you are still concerned about the syntax of the various languages,
  1774.    you can check out Roger Firth's "Cloak of Darkness" at
  1775.    <http://homepages.tesco.net/~roger.firth/cloak/>. This project has the
  1776.    source code for a simple game in many of the main IF languages,
  1777.    complete with comments on how it works. You can look at it to see a
  1778.    sample of how each language works.
  1779.      _________________________________________________________________
  1780.    
  1781.   4.15: How do I create a standalone executable program out of an IF game?
  1782.   
  1783.    Often, authors want to create an executable version of their game for
  1784.    a particular platform so that players do not need to download a
  1785.    separate interpreter program. While this is not a bad idea, one does
  1786.    need to remember that the whole reason that most IF systems need
  1787.    interpreters is so that the game files can be played on just about
  1788.    every type of computer without the author needing to compile a Windows
  1789.    version, a Mac version, a Unix version, an Amiga version, etc of every
  1790.    single game. Also, because interpreters are not bundled with every
  1791.    single TADS, ZMachine, or whatever game on the IF-Archive, the game
  1792.    files are much smaller. A Windows executable (for example) is
  1793.    completely useless to a Mac user, and doubly so when at heart the
  1794.    executable contains a file that could be run on the Mac if available
  1795.    separately. So an author really should make sure that the
  1796.    platform-independent game file is available even if she makes a
  1797.    standalone version.
  1798.    
  1799.    That said, there are several ways to make standalone executables. On
  1800.    Windows, ZMachine (that is, Inform) games can be made executable with
  1801.    jzexe, a tool packaged with jzip, and the TADS Workbench comes with a
  1802.    tool that not only puts TADS games into executable files but even
  1803.    gives them customizable installers. You can also use maketrx, which is
  1804.    included with TADS, on DOS for games that don't require Windows, but
  1805.    the full TADS workbench is probably preferable for recent computers.
  1806.    
  1807.    On Macs, MaxZip (for Inform ZMachine), MaxTADS, and MacGlk Hugo all
  1808.    allow easy creation of standalone games. Andrew Plotkin, author of the
  1809.    Max interpreters, has offered to create a Mac executable of any TADS,
  1810.    Inform, or Hugo game for authors who don't have access to a Mac; he
  1811.    will even upload it to a popular Mac ftp site and make it a pretty
  1812.    icon. (The default TADS runtime also can be binded to a game, but it's
  1813.    better to use MaxTADS.)
  1814.    
  1815.    On some versions of Unix, jzexe has been reported to work. However, if
  1816.    you're on Unix, you're probably smart enough to read a README and
  1817.    download the proper interpreter.
  1818.  
  1819.  
  1820.