[rec.arts.int-fiction] Interactive Fiction Authorship FAQ (2/3)
Maintained by David Glasser (gla...@uscom.com)
This posting contains part 4 of the raif FAQ.
________________________________________________________________________
PART 4: Programming IF
________________________________________________________________________
4.1: How do I become an IF author?
Write some interactive fiction. This is done with an authoring system,
such as those described below. Most systems comprise a specialized
interactive fiction language with which you write the source code for
your game, a compiler which turns your source code into a playable
gamefile, and an interpreter which is what is used to play the gamefile
produced by the compiler.
However, quite a few people write their own system in C or BASIC or
another language, either focused solely around a single game or
as an expandable language. It is easier to use a pre-made
system, and they will offer more portability. It will also stop
you from having to remake the wheel. However, if you want to
make your own system, nobody's going to stop you (well, they shouldn't,
at least). It would probably be a good idea to look at the
current systems to get a basic idea of what to do.
With the advent of Glk, making your own systems portable is much
easier. If you are writing in C, please take a look at Glk. If you
use it for your input and output, it will make your game a lot more
portable. It is simple and powerful. However, it can't do everything.
See 4.5 for details.
It is generally agreed upon that much work on a game is done before any
source code is written. There are many and varied approaches to this
design and planning stage, and it is difficult to recommend any one
method (and this is hardly the right place). Several people have
written documents on this very subject. These may be found in the
if-archive, in the directory "info/". Of particular note are Graham
Nelson's (gra...@gnelson.demon.co.uk) "The Craft of Adventure" and Gerry
Kevin Wilson's (whiz...@pobox.com) "Whizzard's Guide to Text Adventure
Authorship." The filenames for these are Craft.Of.Adventure.* (where
* is one of the various formats that it has been translated into) and
authorship-guide.{base, sup1, sup2}. Also, there are many excellent
articles on game theory and design in the 'zine "XYZZYnews".
Further details can be found in part 5 (Writing IF).
________________________________________________________________________
4.2: Who's going to appreciate my work; who cares about IF anyway?
As it turns out, quite a lot of people. Interactive fiction regularly
achieves respectable rankings on the "Internet PC Games Charts"
(http://www.worldcharts.com/), and has been as high as #3. Indeed, there
were five interactive fiction games in the 1996 Year-end Download Top
40, the highest romping in at #12 (beating Doom), making these games
some of the most popular non-commercial computer games in the world.
The six winning entries from the 1995 IF competition (see 2.6) were published by
Activision on their recent CD-ROM release, "Masterpieces of Infocom"
(July 1996), which has sold surprisingly well. Activision also use the
Inform authoring system as a prototyping tool for some of their large
graphical games (such as "Zork: Grand Inquisitor"), and used an Inform
Zork game (by G. Kevin "Whizzard" Wilson, Marc Blank and Mike Berlyn) as
a promotion for Z:GI.
Specifically, the readership of the two rec.*.int-fiction newsgroups
make up a faithful audience. Popular games such as "Curses" have been
played by quite possibly thousands of people worldwide. In this
specific case, the game has been downloaded at least 2000 times from two
sites (more from other sites, but figures are unavailable), published on
at least 4 CDs (probably more without the author's permission) and as a
cover disc of two magazines with circulation in the 10000s, and included
in commercial packages.
________________________________________________________________________
4.3: What about copyright; how can I protect my work?
THIS SECTION HAS BEEN TEMPORARILY WITHDRAWN FOR REWRITING. FOR THE
WHILE PLEASE REFER TO GENERAL COPYRIGHT INFORMATION, WHICH CAN BE FOUND
ON THE WWW AT SUCH SITES AS THE "U.S. Copyright Office Home Page"
(http://lcweb.loc.gov/copyright/) AND THE "Public Record Office of
England and Wales" (http://www.pro.gov.uk/).
(DSG says: I'm no legal expert, but I was not the withdrawer. Would
some nice person either provide me with an answer for this question,
or at least give me a lot of facts? This should cover getting your
IF protected, along with the common question about Infocom's works and
why getting them off the 'net is illegal, and when that is legal.)
(You should probably include in your game something saying that
you own the copyright on the game, and giving a distribution policy.
On a somewhat related topic, you should ask John Francis
(jfra...@dungeon.engr.sgi.com) to list you in the file
/info/author-list.txt at the IF-Archive. You can give him your email
address and the distributability status of your game or other IF
product.)
________________________________________________________________________
4.4: What authoring systems are available?
Though some people simply write their adventures in C, BASIC, and other
general languages, this tends to lead to a lot of remaking of the wheel
and problems with parsers. Most IF authors choose to use a specialized
IF authoring system. Descriptions of them are below.
Tier (i) contains the most popular systems; posts about them are common
on raif, and even the least-used one has at least a game or two each
year. It contains Hugo, Inform, TADS, and ALAN. These are all good
systems, with Inform and TADS the most popular and ported.
Tier (ii) contains systems that are either waning in popularity, or
have not started waxing yet, though they are being supported by
authors. It contains AGT and Quest.
Tier (iii) mostly consists of old systems that never really caught
on.
........................................................................
__________
| |
| Tier (i) | The most popular and/or powerful, these are currently used
|__________| by a large number of people; many posts to
rec.arts.int-fiction concern these systems and their use;
games produced with these systems are guaranteed a relatively large
audience.
Hugo ftp://ftp.gmd.de/if-archive/programming/hugo/
[Version/ 2.5. Library 2.5.1.
Release]
[Author] Kent Tessman (tes...@interlog.com).
[Platforms] Acorn RISC OS, Amiga, MS-DOS, Unix (i.e., Linux, SunOS,
etc. with executables for Linux), Win95/NT.
[Support] The author intends to continue supporting Hugo
indefinitely, and is developing further releases of the
compiler/engine package. He will take e-mail and
respond to posts. In his own words, he will contribute
"anything I can offer" to the product. Messages
specific to Hugo are posted to rec.arts.int-fiction from
time to time.
[Programming Owes its origins to Inform, C, and BASIC. It is thus
Knowledge] object-oriented, has a straight-forward syntax, and an
effort has been made to keep programming as free of
punctuation and confusing formatting as much as
possible. Much low-level (assembly) programming is done
within the system itself (so the user needn't worry
about it).
[Features/ As of v2.4 Hugo supports graphics (in JPEG format) and
Limitations] multiple tiled windows. It also has music in MOD, S3M,
and XM format and sound in WAV format. The standard
sound package (which the DOS and Windows ports use allows
32 channels. The compiler allows precompiled headers.
Features include global events, object-linked events,
object/character scripts, hierarchical inheritance and
the ability to use objects as classes, dynamic run-time
dictionary creation, multiple-turn undo, and (practically)
unlimited game file size due to indexed addressing. Hugo
allows the programmer to fully manipulate the
interpretation of the input line prior to engine parsing.
[Documentation The "Hugo Programming Manual" covers many of Hugo's
and Game features and there is an extensively annotated tutorial
Sources] game, "Vault of Hugo." Currently available game source
code include ports of "Adventure" and "Pirate
Adventure", and the author's own full-length games,
"Spur" and "Down", and a shell-game to build on.
[Online N/A
Documentation]
[WWW Page] Hugo - An Interactive Fiction Authoring System
http://www.geocities.com/Hollywood/Academy/5976/hugo.html
Hugo Homepage
http://oak.kcsd.k12.pa.us/~jnichols/hugo/
[Debugging The Hugo Debugger, HD, is a full-featured source(ish)-level
Features] debugger, which allows code search, watch expressions,
breakpoints, and so on. The HugoFix library, which is a
suite of debugging routines allowing the user to monitor,
set, and check almost every aspect of a game at run-time.
[Source] C.
[License] Freeware, so long as it is distributed in an unmodified
manner. Games produced by a user are the property of
that author, and may be freely distributed. Only if the
game (including any included libraries from Hugo) or the
Hugo engine is intended for distribution in any
commercial manner (shareware or otherwise) must Kent
Tessman be contacted for permission.
[Quick Pros As it is newer than Inform and TADS, less people are using
and Cons] it and there is no port to Macintosh. On the bright side,
it is quite powerful and offers advanced sound and graphics
capabilities.
........................................................................
Inform ftp://ftp.gmd.de/if-archive/infocom/compilers/inform6/
[Version/ 6.20. Library 6/8.
Release]
[Author] Graham Nelson (gra...@gnelson.demon.co.uk).
[Platforms] Acorn RISC OS, Macintosh, Atari ST (latest release 5.4,
may be unsupported), Amiga, IBM PC (pre-386: release 5.5
only), Linux, OS/2, UNIX, BeOS, VMS (for DEC VAX or Alpha).
[Support] The author fixes library bugs whenever they are
reported, and issues updates about every three months.
The compiler is updated approximately twice a year, and
the documentation is now in its 3rd edition (with an update
May 1997). Feedback from users is welcomed. There are a
large number of relevant posts to rec.arts.int-fiction.
[Programming Compiles a largely object oriented language, reminiscent
Knowledge] of C. A quite sophisticated parser is supplied, which
can be entirely invisible to the designer but is highly
programmable if need be. The library is itself written
in Inform and is relatively easy to modify.
[Features/ Produces files in the `Z-machine' format, as used by
Limitations] Infocom. Thus Inform games can be played on any of the
many publicly available `Z-machine' interpreters. A
standard library is supplied; it is possible to replace
library routines. The run-time format does now permit
dynamic object creation. Low-level programming is
provided for, including a full assembler.
The parser can be supplied with a language definition file
allowing Inform games to be played in non-English languages.
Translations of Inform have been made into German, Spanish,
Italian and Renaissance English, with several others in
development. These translations are linked from Graham
Nelson's website (see below).
A system called "Blorb", for convenient attachment of sound
effects and modern-quality graphics, has now been fully
implemented by Kevin Bracey's "Zip2000" interpreter.
[Documentation The main manual is the "Designer's Manual"; the
and Game "Technical Manual" documents very dry internals; the
Sources] "Specification of the Z-Machine" defines the run-time
format and the standard for interpreters (an alternative
to this last document is "The Z-machine, and How To
Emulate It"). A handful of game sources are available.
The Inform Translator's Manual documents language
definition files.
[Online The Z-Machine Standards Document 1.0
Documentation] http://www.gnelson.demon.co.uk/zspec/index.html
The Inform Designer's Manual (3rd edition, updated)
http://www.gnelson.demon.co.uk/dman/index.html
[WWW Pages] Inform 6: A Compiler For Interactive Fiction
http://www.gnelson.demon.co.uk/inform.html
Inform Page (somewhat old)
http://www.duke.edu/~srg3/IFprogramming/inform.html
Inform Programming (old, outdated)
http://www.doggysoft.co.uk/inform/
The Informary - a quick reference summary
http://www.bigfoot.com/~rqf/informary/
[Debugging Can print tracing information for calls to routines and
Features] a suite of debugging verbs is included in the library:
these monitor timers, daemons, actions, the object tree,
messages between objects, the parser's internal workings
and the like, and give the tester supernatural powers to
travel and move things around. The library can also
record and play back scripts of commands. Tools such as
TXD (a disassembler) and Infodump (an inspector of
objects, dictionary and grammar) are publicly available.
Inform can also produce a file of information useful to
any debugging tool, with e.g. Z-machine PC positions assigned
to every statement of source code.
There are some help-tools to configure various text editors
to Inform, too; the Technical Manual provides an algorithm
for syntax-colouring Inform code which is used in several of
these.
[Source] ANSI C.
[License] Freeware. The author retains copyright of the compiler
in order to prevent commercial exploitation, but
(subject only to mild restrictions) is even prepared to
let people sell games produced by Inform.
[Quick Pros It is the most highly ported authoring system, and is quite
and Cons] popular. It is very powerful; some of the very advanced
techniques are difficult to understand, though. Though
it has a few more ports than TADS, HTML-TADS' graphics
and sound support are both more powerful and more usable
(at the current time) than Inform's. Also, the ZMachine
suffers from the fact that extraordinarily large (and I
mean really really big) games do not fit in it. However,
for a normal-sized, text-only game that doesn't do
extraordinarily complicated hacks (most games fit this
description), Inform's problems do not hurt at all.
........................................................................
TADS (Text Adventure Development System)
ftp://ftp.gmd.de/if-archive/programming/tads/
[Version/ Version 2.2.6.
Release]
[Author] Michael Roberts (mjr_ at hotmail dot com).
[Platforms] Acorn RISC OS (interpreter only), AmigaDOS, Atari
ST/TT/Falcon, DECStation, Linux, Macintosh, MS-DOS (also
GO32 DOS extender version for 386+), NeXT, OS/2, SGI
Iris/Indigo, SunOS & Sun 3.
[Support] Posts to rec.arts.int-fiction dealing with all manner of
TADS queries are not uncommon, and there are many
third-party programming examples and utilities,
including "WorldClass", a complete replacement library.
[Programming Uses a high-level, largely object-oriented language very
Knowledge] reminiscent of Pascal or C.
[Features/ Provides virtual memory support, permitting games much
Limitations] larger than your computer's physical memory. Full
multiple inheritance is supported, and incremental
changes can be made to library files so one can include
the standard library and override bits of it piece by
piece. Objects may be created at run-time (dynamic object
creation). TADS also provides multiple UNDO, routines for
general-purpose file I/O, and "user exits" that let one
link in code compiled with other languages (such as C).
The latest innovation to TADS is HTML TADS, which allows
you to add styled text, still graphics, sound, and MIDI music
to your TADS games. Rather than relying on some proprietary
markup language, HTML TADS uses standard HTML, the language
used to mark up Web pages, for which documentation
is readily available. (However, HTML TADS doesn't need a
web browser or the Internet: it uses HTML but isn't a
Web-based system.) HTML TADS also supports ISO Latin-1
character sets, so accented letters are easily added.
At the time of writing, HTML TADS interpreters are only
available for Windows 95/98/NT and Macintosh. However,
a game written in HTML TADS is still fully playable (minus
graphics and sound, of course) with character-based TADS
runtimes that have been updated to version 2.2.6.
[Documentation TADS' comprehensive manual is available in TeX, PDF and
and Game HTML formats, although the HTML version is the most current.
Sources] In addition to the manual the full source for a medium-sized
game, Ditch Day Drifter, is available from the usual sources.
The source code for many other games, from small and simple
to huge and complex, is also readily available.
[Online TADS Author's Manual
Documentation] http://www.tela.bc.ca/tela/tads-manual/
TADS Manuals directory on the if-archive
ftp://ftp.gmd.de/if-archive/programming/tads/manuals/
[WWW Pages] The TADS Page
http://www.tela.bc.ca/tela/tads/
The TADS Programming Page
http://www.df.lth.se/~mol/progtads.html
WorldClass Programming Page
http://www.df.lth.se/~mol/progtadsworldclass.html
[Debugging TDB is a full-featured source-level debugger. It allows
Features] single-stepping through your source, the setting of
breakpoints at specific lines, and the examination and
alteration of variables in your program.
[Source] C.
[License] Freeware.
[Quick Pros Though slightly less games are made using it than Inform,
and Cons] it is still very popular. It is powerful. It has better
graphics support than Inform, and HTML TADS is available
on the Mac (which is not the case for Hugo). Its library
is very object-oriented, which may be a good or bad thing,
depending on who you are. It has slightly less ports than
Inform, especially to ancient computers like the C64 and
small computers like the PalmPilot. On the other hand,
the reason is can't run on the PalmPilot is that it allows
games of any size whatsoever, which is good if your game
needs to be huge.
........................................................................
ALAN (Adventure Language System)
ftp://ftp.gmd.de/if-archive/programming/alan/
[Version/ 2.8, with various correction levels for different
Release] platforms.
[Authors] Thomas Nilsson (th...@softlab.lejonet.se) and Goran Forslund
(go...@ida.liu.se). (The o in Goran has one of those
two-dot thingies on it.)
[Platforms] Macintosh, MS-DOS (currently only 386+), sun4 (Solaris1, SunOS
4.1), sun4 (Solaris2, SunOS 5.x). HP-UX and Amiga
versions of 2.8 is upcoming; 2.7 versions exist.
[Support] As a non-profit project author support may vary,
although the authors will endeavor to act on bug
reports sent by e-mail. Most ALAN questions on raif
are answered by other ALAN users.
[Programming Uses a very high-level language. With an easy-to-learn
Knowledge] syntax and semantics, ALAN takes a descriptive view of
the concepts of adventure authoring. There are no
variables, subroutines or other traditional programming
constructs. A general statement which describes the
ALAN philosophy is that a game's author should not need
to program, only describe, what the player will see.
[Features/ Actors may be scripted and rules are evaluated between
Limitations] each actors turn which can trigger actions. Events can
be triggered by objects, actors or locations. Expansion
of the parser syntax is simple. ALAN lacks actor
interaction and inheritance (although a prototype of
v3.0 supports this). General verbs can be overridden
both for locations and objects on which they are
invoked. There is support for multinational character input.
[Documentation The manual, available separately in PostScript, HTML, and
and Game ASCII formats, contains a lot of detail on all aspects of
Sources] IF authorship from a beginner's level upwards. A very few
examples of ALAN source are available, including the source
to a game, "Saviour."
[Online ALAN Adventure Language Manual
Documentation] http://www.pp.softlab.se/thomas.nilsson/alan/manual
[WWW Page] The Alan Home Pages
http://www.pp.softlab.se/thomas.nilsson/alan
[Debugging The debugger currently supports viewing (but not
Features] altering) of most data, tracing of significant parts of
the execution and single-stepping though compiled code.
[Source] The source is only available to porters, through the
authors.
[License] Freeware. The interpreter may be freely distributed
with compiled games for commercial purposes (i.e., no fee
or royalties are required if you start to sell games).
[Quick Pros It isn't as powerful as the other Tier (i) systems. However,
and Cons] it is apparently easier to learn. Its ports to some systems,
such as MacOS, are not wonderful or up-to-date, but work
is being done on them.
........................................................................
___________
| |
| Tier (ii) | Intermediate popularity and new systems, these do not
|___________| appeal to quite as large an audience as those in tier
(i) or are less powerful; there are infrequent posts to
rec.arts.int-fiction dealing with these systems and their use;
occasionally games are produced using these systems.
AGT (Adventure Game Toolkit)
ftp://ftp.gmd.de/if-archive/programming/agt/
[Version/ Version 1.83 (may vary between platforms).
Release]
[Authors] David Malmberg (73435...@compuserve.com) and Mark
Welch (mark...@ca-probate.com).
[Platforms] Amiga, Atari ST, Macintosh, MS-DOS, Windows. There seem
to be many different versions for different platforms.
[Support] No technical support from the authors (i.e., no new
versions). Posts to rec.arts.int-fiction are not
uncommon.
[Programming Uses a meta-language similar to English. Standard Level
Knowledge] games can be created with no prior programming
knowledge.
[Features/ Creates Standard Level games ("require no programming
Limitations] experience (honestly!), only a fertile imagination") or
Professional Level games. There are limitations on the
number of locations (200) and animate/inanimate objects
(100 each) in a game. As AGT is no longer supported by
the authors there will be no future upgrades/bug-fixes.
It is not nearly as powerful as the Tier (i) systems,
and many games are unportable from DOS.
[Documentation The documentation available on the Internet is
and Game out-of-date in regard to author support (which no longer
Sources] applies) and licensing details (AGT is now freeware).
Included is the source for a small game, Crusade. Other
source for some two dozen games is publicly available.
Mark Welch has 50-100 copies of the final "Master's
Edition" printed manual and would invite suggestions
from AGT users on how he might disseminate them at no
charge. He *does not* have the "Master's Edition"
source code though.
[Online N/A
Documentation]
[WWW Page] AGT Home Page
http://www.markwelch.com/agt.htm
[Debugging A few basic debugging commands (such as MOVEPLAYER and
Features] LISTROOMS) to be used at run-time.
[Source] Turbo Pascal 4.0/5.0/5.5/6.0.
[License] Freeware. Games produced with AGT are freely
distributable in whatever manner you choose.
........................................................................
Quest
http://www.users.globalnet.co.uk/~dewarr/quest.htm
ftp://ftp.gmd.de/if-archive/programming/quest/
[Version/ 2.0 alpha 2.
Release]
[Author] Alex Warren (alexw...@writeme.com).
[Platforms] Windows 95/98/NT4.
[Support] All questions can be emailed to techs...@dewarr.globalnet.co.uk.
Bug reports can be emailed to bu...@dewarr.globalnet.co.uk. The author
will try his best to give an answer to any questions you may have.
[Programming None required. Quest comes with full documentation on the "ASL"
Knowledge] programming language used. This is an easy-to-use language
ithout much in the way of confusing syntax, designed with
ease-of-use in mind.
[Features/ Pretty much unlimited in any way; memory is allocated
Limitations] dynamically, so in theory games of any size could be created.
Easy-to-use interface; built-in multimedia support for WAV and
various image file formats (including BMP, GIF, and JPEG);
save/load facility; text formatting; built-in support for items,
characters, objects, selections, string and numeric variables,
conditional statements, and user-defined commands; error
checking. Its built-in library isn't as advanced as some
of the Tier (i) systems in terms of IF capability, but it
allows more graphical Win32 power than them.
[Documentation ASL programming language reference and small sample game
and Game included in Quest download.
Sources]
[Online Included in the Quest download.
Documentation]
[WWW Page] QUEST
http://come.to/axe
[Debugging String variables can be viewed at run-time; various warning
Features] messages outputted to a log file when errors are encountered.
[Source] Not available.
[Licence] "Free shareware". You can use the Quest runtime free of charge,
but you are encouraged to register for UK 20 sterling. For this,
you get the compiler, which allows you to make your own games
without distributing the source code to them. The free version
of Quest is capable of running games from both uncompiled ASL
source code and CAS compiled game code.
........................................................................
____________
| |
| Tier (iii) | Little current popularity, these are not generally
|____________| popular; they often cater to only a small number of
platforms (usually only MS-DOS) and may be less advanced
or more specialized (such as handling graphics- or multimedia-based
games) than systems in the other tiers; games are rarely produced with
these systems.
ADL (Adventure Definition Language)
ftp://ftp.gmd.de/if-archive/programming/adl/
........................................................................
Advent ftp://ftp.gmd.de/if-archive/programming/advent/
........................................................................
Adventura ftp://ftp.gmd.de/if-archive/programming/adventura/
........................................................................
AdvSys (Adventure System)
ftp://ftp.gmd.de/if-archive/programming/advsys/
........................................................................
AGIFG ftp://ftp.gmd.de/if-archive/programming/agifg/
........................................................................
Archetype ftp://ftp.gmd.de/if-archive/programming/archetype/
A highly object-oriented, bare-bones system.
........................................................................
Aventuro ftp://ftp.gmd.de/if-archive/programming/aventuro/
A system in Esperanto.
........................................................................
DROOL (Dave's Reworked Object Oriented Language)
ftp://ftp.gmd.de/if-archive/programming/drool/
........................................................................
Figment ftp://ftp.gmd.de/if-archive/programming/figment/
........................................................................
GAGS (Generic Adventure Game System)
ftp://ftp.gmd.de/if-archive/programming/gags/
The precursor to AGT.
........................................................................
GameScape ftp://ftp.gmd.de/if-archive/programming/gamescape/
A poor system.
........................................................................
GINAS (Generic Interactive Narrative Authoring System)
ftp://ftp.gmd.de/if-archive/programming/ginas/
An experimental, lisp-like system.
........................................................................
GTAC (Graphic Text Adventure Creator)
ftp://ftp.gmd.de/if-archive/programming/gtac/
Creates a complete playable adventure game without losing the
friendliness of the Acorn Desktop.
........................................................................
LADS (Levi's Adventure Development System)
ftp://ftp.gmd.de/if-archive/programming/lads/
Produces games with a distinct "Scott Adams" look and feel. The state
of the art of IF authoring systems is today well beyond this, yet LADS
is still a workable, if primitive, system in its own right.
........................................................................
NMP (NM Parser)
ftp://ftp.gmd.de/if-archive/programming/nmp/
A Spanish-language system.
........................................................................
OASYS ftp://ftp.gmd.de/if-archive/programming/oasys/
........................................................................
Questmaker ftp://ftp.gmd.de/if-archive/programming/questmaker/
........................................................................
SINTAC (Sistema Integrado de Creacion de Aventuras Conversacionales)
ftp://ftp.gmd.de/if-archive/programming/sintac/
A Spanish-language system.
........................................................................
_______________
| |
| "Unprocessed" | These systems are either new, or are experimental or
|_______________| beta-release systems and as such may not have the
popular and immediate appeal of systems in other
tiers.
Adventure Builder
ftp://ftp.gmd.de/if-archive/programming/advbuilder/
[Version/ 2.0.
Release]
[Author] Alan Conroy (al...@accessone.com).
[Platforms] PC-DOS (v2.0 or later), MS-DOS (v2.0 or later), Windows
(3.1 or later).
[Support] Minimal, but it does exist. Support is entirely through
e-mail at this time. Bug reports and suggestions are
solicited, and response for issues with known
work-arounds are timely. Issues requiring
updates/upgrades of the software are not.
[Programming No programming is required to create a game. However,
Knowledge] some programming is necessary if the game is to be
customized (which is nearly always the case). The
programming language is a non-conforming subset of
Sirius, which is similar to Pascal and BASIC. No
knowledge of advanced programming techniques is required
in any case.
[Features/ Provides a source language compiler and linker for
Limitations] writing routines, and a database compiler. Features
include: up to 8191 nodes and 4096 items per game;
memory caching of disk accesses; on-line help;
easy-to-use database definition language and source
language for writing routines; support for time, season,
weather, day, and earthquakes; ability to log game/debug
sessions; Linker and Librarian for large software
projects.
[Documentation Documentation consists of a Programmer's Reference
and Game manual, Database Compiler Reference Manual, Primer, and
Sources] Master Index. Source code for the default handling of
basic actions is provided. Complete source code for the
demonstration game is included.
[Online None, though electronic docs do exist that are not HTML.
Documentation]
[WWW Page] ADVENTURE BUILDER
http://www.accessone.com/~conroy/ab.html
[Debugging Debugging tool built into the run-time system provides
Features] insight into the internal workings of the run-time
system. A full-functioned source debugger is available
for user-written (Sirius) code. The debugger allows
setting breakpoints, watchpoints (breakpoints on changed
data), examination of source code and variables,
searching of source code, single-step, on-line help, and
other minor features.
[Source] Source to Adventure Builder is available only under
license and in specific cases at this time.
[License] Shareware. You may use it for personal enjoyment at no
charge. If you sell, for profit, any byproduct of this
software, you are REQUIRED to pay a $25.00 (US) one-time
fee. Once this fee is paid, any number of games may be
produced and sold royalty-free. Also you will
be notified of any updates, you are eligible for
discounts on updates, and your support issues will take
precedence over those who have not paid. Adventure
Builder is freely distributable to anyone and everyone so
long as it is distributed in UNMODIFIED FORM and no fees,
other than reasonable for the distribution media, are
charged.
........................................................................
Rexx-Adventure ftp://ftp.gmd.de/if-archive/programming/rexx-adventure/
[Version/ 1.0.
Release]
[Author] Mike DeSanto (desa...@io.com).
[Platform] OS/2 (2.1 or better, ReXX installed).
[Support] Send e-mail to the author. At least two people other
than the author are currently working on adventures, and
an AGT to Rexx-Adventure converter is being researched
by a third party.
[Programming Minimal programming knowledge required.
Knowledge]
[Features/ Features object based adventure creation with a GUI
Limitations] interface. Object variables are totally user-definable
and all ambiguity about what objects can be manipulated,
and how they can be manipulated has been removed. There
is currently no indirect object support and objects
inside other objects can not be seen (i.e., water in a
bottle), although these are respectively planned and
already implemented for version 2. While movable windows
are also implemented for version 2, they are not present
currently (i.e., fixed screen layout).
[Documentation Documentation will soon be available in OS/2 .INF
and Game format.
Sources]
[Online N/A
Documentation]
[WWW Page] Rexx-Adventure
http://www.io.com/~desantom/rad.html
[Debugging Very Few.
Features]
[Source] Watcom VX-REXX, available to porters from the author.
[License] Freeware. Mike DeSanto retains the copyright and it may
be distributed only in its original form. Authors may
charge for their adventures on the condition that it is
made very clear that the fee is for the adventure, and
not for Rexx-Adventure.
........................................................................
A NOTE ON AUTHOR SUPPORT: While most authors are happy to accept email
concerning their system please remember that reading and responding to
email does take time. While bug reports, requests/suggestions for new
features, etc. should be sent to the author directly, questions on how
to implement a particular feature or operate a particular function
should go to rec.arts.int-fiction, where time is not an issue.
You should also realize that, especially if you are not paying for the
system, the system authors have no "responsibility" to the community
to update their program. There was a recent, nasty, stir on raif in
which a poster ordered Graham Nelson, who had been unable to read the
newsgroup for a while for various reasons, to update Inform. Graham
and the other authors have put a lot of hard work into their systems,
and probably will continue to do so. But if they wanted to stop, they
could. (After many messages asserting that point were posted, the
thread died down. This was shortly followed by a new version of Inform.)
A NOTE ON LICENSING: Games written with some authoring systems, notably
Hugo, may not be distributed for money (shareware or commercial) without
the system author's express consent. You should always read and abide
by any and all licensing details relating to the system which you
choose. If you do not like the licensing arrangements, use a different
system. Of course, system authors are (usually) good human beings, and
will probably say yes.
________________________________________________________________________
4.5: What is Glk?
It is a standard for text-based I/O, designed by Andrew "zarf" Plotkin.
<http://www.eblong.com/zarf/glk/>
Here is a brief description of it, plagiarized from LucFrench and
Zarf's descriptions on raif.
GLK is a spec for porting Input/Output code across platforms. In order to
understand why it's necessary, one must explain a bit about I/O.
A Mac has a different way of printing to the screen than a Unix
machine, since one is primarily text based, and the other is a graphical
windowing enviroment. As such, they have two *very* different ways of
outputting text and pictures, particularly for some of the special effects
that many high level IF systems need (e.g., a status line, control
characters, color, etc.).
So, porting the I/O can be difficult. What Glk attempts to do is
specify a set of calls to the Glk system that allows for easy porting
across multiple platforms.
The Glk calls are intended to be not only portable, but to be *easily*
portable: abstracted in such a way that they give the interpreter maximum
flexibility. This allows interpreters on different platforms to take
advantage of particular UI features.
A port of Dungeon, a scripting language, and a few demos have been ported
to Glk. If you are writing an IF interpreter or similar program, consider
using Glk. It'll make everyone happy.
________________________________________________________________________
4.6: What are VILE 0 ERRORS FROM HELL, and how should I avoid them in Inform?
In the words of Andrew "Zarf" Plotkin:
> It is illegal in Inform to do any of the following when x == 0 (nothing):
>
> child(x), parent(x), sibling(x), etc
> if (x has attribute)
> if (x.property == ...)
> give x attribute
> x.property = ...
> move x to y
> move y to x
> remove x
> ... or pretty much anything else which assumes x is a legitimate
> object.
Some interpreters will ignore this, and either end up not messing up,
or crash. In the former case, this means that you will falsely believe
there is nothing wrong with your game. In the latter case, it, well,
crashes.
MaxZip, and some other Zip interpreters, will check and warn at these
illegal statements.
There is a bug in the Inform library (version 6/7) that will cause this
in the HasLightSource function. You should patch this immediately.
In the library file parserm, find the function HasLightSource. Near the
top, there are the lines:
if (i has enterable || IsSeeThrough(i)==1)
{ objectloop (i in i)
if (HasLightSource(i)==1) rtrue;
}
This should be
if (i has enterable || IsSeeThrough(i)==1)
{ objectloop (j in i)
if (HasLightSource(j)==1) rtrue;
}
In other words, change two i's to j's.
Library 6/8 fixes this and a few other uncommon V0EFH.
Much more information on the subject of VILE 0 ERRORS FROM HELL can be
found at
http://www.eblong.com/zarf/vileerror.html
As of Inform 6.20, VILE 0 ERRORS FROM HELL and other common Inform problems
are caught at run-time by the compiler. There is much rejoicing!
Inform 6.20 also classifies objectloop errors as V0EFHs and catches them.
These are another common cause of problems in Inform.
As most Inform programmers know, objectloop (x) { ... } will run ... once
for each object in the game, setting 'x' to that object.
Here's the problem:
objectloop (foo in someobject)
{
move foo to somewhereelse;
}
You'd think this moves every object in someobject to somewhereelse.
But it doesn't.
This is becase objectloop(a in b) {...} is optimized. Instead of being
equivalent to
objectloop(a)
{
if (a in b)
{
...
}
}
it is the same as
for (a = child(b); a ~= 0; a = sibling(a))
{
...
}
In other words, it simply strolls along the object tree. If a is moved
out of b, it will make the next a be equal to the sibling of the
current a, which will not be what you want.
The solution is, for the simple case of "move all children of foo to bar":
while (children(foo) ~= 0) move child(foo) to bar;
For anything more complicated than that, use:
objectloop(a)
{
if (a in b)
{
...
}
}
The same problem can occur in the little-used 'x from object' and
'x near object' versions, though not in any other ones (such as
'x ofclass c'). Inform 6.20 will catch these at run-time.
________________________________________________________________________
4.7: What tools and utilities are available?
Scott2Zip ftp://ftp.gmd.de/if-archive/scott-adams/
Bjorn Gustavsson (erm...@at.ericsson.se) has written this Perl script
which converts the old Scott Adams games to Inform source (you compile
this with the Inform compiler and then play the resulting gamefile on
any `Z-machine' interpreter).
........................................................................
UnQuill ftp://ftp.gmd.de/if-archive/solutions/tools/
John Elliott's (j...@seasip.demon.co.uk) utility will "disassemble" Spectrum
snapshots (.SNA) of games written with The Quill. Available as C source and
executables for DOS and CP/M.
........................................................................
Ztools ftp://ftp.gmd.de/if-archive/infocom/tools/ztools/
This package, maintained by Matthew T. Russotto
(russ...@wanda.vf.pond.com), comprises several tools, including a
disassembler, for manipulating games in the `Z-machine' format as used
by Infocom and produced by Inform. They are quite useful. There are
ports to many platforms.
........................................................................
Disinformation http://www2.prestel.co.uk/lwtcdi/uninform/instruct.htm
Jeremy A. Smith's program takes output data from TXD and INFODUMP (two
components of Ztools; see above), mangles it up, and outputs it in
an Inform-like way. It makes disassembly of Z-machine code a *lot* more
readable. It doesn't (yet) create completely compilable code, and is
by no means the same as what was written, but is higher level than ZMachine
assembly.
________________________________________________________________________
4.8: Wouldn't a visual system be great for writing IF in?
This has been discussed a lot. As of early 1999, this discussion has
not occured for quite a while. However, early 1998 had several highly
active discussions of this.
The general consensus seemed to be that they would be helpful. but only
if they allowed the writer to get at the bare Inform or TADS code
underneath and not just use high-level editing.
Also, it was realized that such tools currently don't exist because
the people with the skills to write them generally don't need them.
However, if you want to write a visual IF editing tool, great.
Show me the results.
________________________________________________________________________
4.9: What support does Inform offer for graphics and sounds?
The ZMachine's V6 format supports graphics, and Inform can compile to it
quite well. Jason Penney has written a library called V6Lib, available at
the IF-Archive, that allows you to use a high-level window system
(instead of having to do the ZMachine opcodes by hand).
However (and this is a big however), almost all current V6 ZMachine
interpreters (and not all ZMachine interpreters will do V6) only supports
display of horrible graphics format used by Infocom in some of their
later games. It is horrible because it is proprietary (no tools exist
to write to it) and has many technical problems, such as the fact that
you can only use a *very* limited amount of colors (14, I think).
The Blorb format is a new way of getting images (in the JPEG and PNG
formats) and other 'resources' to interface with ZMachine interpreters.
Now, when I say "new", I mean it was proposed a few years ago. Barely
any interpreters support it yet. Because of this, no games have been
written that use Blorb. Because of this, barely any interpreters
support Blorb. Because of this...
And so on goes the vicious circle. Please, if you maintain a ZMachine
port, update it to use Blorb!
A similar situation exists for sounds: there are ZMachine opcodes for
sound playing, but Blorb is required to make it work well.
http://interactfiction.miningco.com/library/weekly/aa061598.htm,
aa062298.htm, and aa062998.htm.
________________________________________________________________________
4.10: What support does TADS offer for graphics and sounds?
Early in 1998, a new version of TADS called HTML-TADS was released
by Mike Roberts, the author of TADS. It is the same as TADS, except
it allows formatted output. The format can control text and background
color, images, sounds, and other cool things. The format is controlled
by use of a limited form of HTML (the language used the web). HTML-TADS
has nothing to do with the Internet or the Web or Java; it simply uses
tags like <IMG> and <B> and <A HREF>.
The only platforms that (as of January 1999) the HTML-TADS
runtime has been ported to are Windows 95/98/NT and Macintosh.
The compiler, though, is the same as a normal TADS compiler.
Neil K. Guy's TADS site has more information about HTML-TADS.
http://www.tela.bc.ca/tela/tads/
Several games have been created that take advantage of HTML-TADS, including
Neil K. Guy's "The Golden Skull" and "The Arrival"; Stephen Granade's
"The Arrival"; and Mike Roberts' "The Plant". As of early 1999, HTML-TADS
is probably the best way to do a relatively portable graphical game.
________________________________________________________________________
4.11: What support does Hugo offer for graphics and sounds?
Hugo provides support for a bunch of different graphics and sound
formats. Graphics and sounds only are on the Windows 95/98/NT and DOS
ports, though. The picture placement commands do not allow too
much precision, unless you mess around with tricky window creation
commands. Simple stuff works well, but more complicated stuff
is harder.
More information on this subject can be found at
http://interactfiction.miningco.com/library/weekly/aa061598.htm
This article by Stephen Granade also contains links to articles
about graphics and sound in Inform and TADS.