§1 Routines
if, true and falseelse and switchwhile, do… until,
for, break, continueprint and print_ret statements§2 The state of play
§3 Objects
nothingmove, remove, objectloopwith and providesprivate propertieshas and giveclass inheritanceProperty§4 ‘Ruins’ begun
Beginning to lay ‘Ruins’; including library files; the Initialise routine;
some properties of mushrooms; name, description and initial; edible
foodstuffs; introducing before and after rules; the stone steps.
§5 Introducing messages and classes
Recap of message-sending: a parrot; classes for treasure artifacts: the pygmy statuette, the honeycomb; how clashes are sorted out in class inheritance, additivity.
§6 Actions and reactions
Actions are attempts; generating them with <, <<; the actor, action, noun
and second noun; the ## notation; actions fall into three groups; fake actions
like ThrownAt; creating new actions, the Blorple example; how actions are
processed, over ‘Before’, ‘During’ and ‘After’ stages.
§7 Infix and the debugging verbs
Three levels; general strategies; command lists and “recording”, “replay” and “random” debugging verbs; “showobj”, “tree”, “showverb”, “scope”; keeping watch of “actions”, “changes”, “messages”, “timers”; tracing the parser with “trace”; supernatural ability to “purloin”, “abstract”, “goto”, “gonear”; the Infix “; ”, “;give”, “;move”, “;remove”, “;examine”, “;watch”, “;inventory”; marking routines with a * to be watched.
§8 Places and scenery
The Square Chamber of ‘Ruins’; what “you don't need to refer to”; static
and scenery objects; spreading mist with found_in; α Canis Minoris; the
five senses and reaction rules; rooms have before and after too.
§9 Directions and the map
Giving ‘Ruins’ a small map; n_to, d_to, etc.; when you cant_go; direction
objects in the compass; not the same as direction properties.
§10 Food and drink
edible foodstuffs; the Drink action; difficulties with liquids.
§11 Clothing
Wear and Disrobe; wearable items of clothing; a jade face mask.
§12 Containers, supporters and sub-objects
Containers: container, supporter, capacity, open, openable; locks and
keys: locked, lockable, with_key; LetGo and Receive to trap use of a
container: a chasm; transparency and component parts.
§13 Doors
How to create a door;
door_to, door_dir; when_open,
when_closed; a stone door for ‘Ruins’; a
two-way door, the ‘Advent’ grate; why door_dir is
needed and how to trap every attempt to go through.
§14 Switchable objects
switchable and on:
when_on, when_off; the Gotham City searchlight;
a sodium lamp; describe taking precedence.
§15 Things to enter, travel in and push around
enterable objects: a slab altar;
vehicles: KAR 1; special rule about the Go action when
inside something enterable; the PushDir
action: a huge pumice-stone ball; pushing up and down.
§16 Reading matter and consultation
The Consult action, “look
up”; consult_from and consult_words:
a dictionary of glyphs, Tyndale's Bible; making “read”
and “examine” different.
§17 People and animals
animate objects and the life
rule; a coiled snake and a mummified priest; Blofeld's reactions;
talkable objects; some people are transparent.
§18 Making conversation
Orders are actions for other people; giving people their own grammars; untypeable verbs; several voice-activated machines; fake fake actions; telephony.
§19 The light and the dark
Light versus darkness is automatic; modifying
the darkness; going from dark into dark and the DarkToDark
entry point; rules on ‘when there is light’.
§20 Daemons and the passing of time
Daemons and the daemon property;
starting and stopping them; background daemons; timers (fuses);
time_left and time_out; each_turn
events for places and nearby objects; the time of day; changing it
with SetTime; on the status line; midnight, sunrise, sunset;
the exact sequence of events at end-of-turn.
§21 Starting, moving, changing and killing the player
What Initialise should do;
the location; initial restoration;
teleportation and the PlayerTo routine; what happens
when the room changes: NewRoom, initial
for a room, visited; giving the player his own before
rule; using ChangePlayer to transform him into any object;
multi-character games; life and deadflag;
the DeathMessage routine; resurrection and the AfterLife.
§22 Miscellaneous constants, scoring, quotations
Story and Headline;
MAX_CARRIED; the automatic “sack object”;
‘amusing’ rewards for the victorious; two scoring systems:
for places and items, or for completing tasks; rankings and PrintRank;
automatic score notification and notify_mode; “objects”
and “places” verbs, removable with NO_PLACES;
boxed quotations.
§23 ‘Ruins’ revisited
Further examples to complete ‘Ruins’; a map and a step by step solution of the final game.
§24 The world model described
¶1. Substance – ¶2. Containment – ¶3. Space – ¶4. Sense – ¶5. Time – ¶6. Action.
§25 Extending and redefining the world model
Enriching the model; Egyptian amulets and
their spells; making a new library file; the LibraryMessages
system for changing messages like “Dropped.”; changing
the prompt; the last resort of Replace directives; using
the world model description; fire and flammability.
§26 Describing objects and rooms
print (The) obj, ... (the) obj and
so on; indefinite and definite article; proper
nouns; the short_name of an object; invent
strings and routines; exactly how inventory lines are printed; a matchbook;
describe routines; exactly how rooms
are described; Locale.
§27 Listing and grouping objects
The list-maker WriteListFrom; its style
bitmap; examples: tall and wide inventories; grouping similar items
together in lists: foodstuffs, Scrabble pieces and denominations
of coin.
§28 How nouns are parsed
How name is used; a fried green tomato
turning red; the parser breaks text into a stream of words;
wn and NextWord; reading words as numbers or from their
raw text; a parse_name routine is much more flexible than name;
the ParseNoun entry point; distinguishing adjectives from nouns.
§29 Plural names for duplicated objects
Collections of indistinguishable objects;
a bag of six coins; the plural property for printing out plurals;
definition of ‘indistinguishable’; writing parse_name
routines to allow plurals to be understood; class of crowns.
§30 How verbs are parsed
The parser's fundamental method; BeforeParsing
entry point; the actor and verb word; synonyms for verbs; definitions
of grammar, line and token; action_to_be; Verb directive: a
simplified “take” grammar; meta verbs; grammar creates
actions; creating an “xyzzy” verb; how to Extend grammar
for an existing verb: pushing numbered buttons; priority: replace,
first, last; splitting synonymous verbs apart with Extend only;
the UnknownVerb and PrintVerb entry points.
§31 Tokens of grammar
Full list of grammar tokens; prepositions;
noun and held; implicit taking; tokens allowing multiple objects
like “all”; filtering out nouns by attribute:
“use” verb; and by general routine: “free”
verb; parsing numbers: “type” verb, ParseNumber;
general parsing routines; reading from the parser's raw text
buffer and parse table; exercises, including French, telephone
and floating-point numbers, times of day, adding a third parameter
to a grammar line.
§32 Scope and what you can see
The definition of ‘in scope’;
touchability is stricter than scope; answering questions:
“what is a grue”; scope=... tokens with programmable
scope; scope_stage, ScopeWithin and PlaceInScope; changing
the global definition of ‘in scope’ using InScope;
scope_reason; looping over and testing scope; making the rules
more sensitive to darkness; a long room divided by a glass
wall; the add_to_scope property for component parts of containers.
§33 Helping the parser out of trouble
Parser error messages and ParserError;
ambiguity-resolution and influencing it with ChooseObjects; making
“eat” prefer edible objects; redefining “all”;
exactly how ambiguities are resolved.
§34 Linguistics and the Inform parser
¡Bienvenido a Aventura!; Informese; commands, verb phrases, prepositions, noun phrases, gender-number-animation (GNA), descriptors, nouns, pronouns; example of parsing; grammatical features not present in Informese.
§35 Case and parsing noun phrases
Flexion and cases; parsing inflected noun phrases; for example, Old English dative word-endings.
§36 Parsing non-English languages
Compromises; accented characters at the
keyboard?; dialects; language definition files; Zcharacter and
the customisation of ZSCII; specifying pronouns and descriptors;
translating natural languages to Informese.
§37 Names and messages in non-English languages
Gender-number-animation of short names; agreement with articles and cases; contraction forms and articles; library messages of all kinds.
§38 Controlling compilation from within
Include; conditional compilation: If...,
Ifnot, Endif; Message; linking in the library; writing new modules
to link in; serial and release numbers.
§39 Controlling compilation from without
Switches; memory settings; pathname variables; Inform Control Language (ICL).
§40 All the Inform error messages
Fatal errors; errors, including linker and assembler errors; warnings, including obsolete usage warnings.
§41 Architecture and assembly
ZIL, Inform and the Z-machine; its Versions; assembly language; store and branch opcodes, labels; memory map and stack.
§42 Devices and opcodes
The Standard for interpreters; input and output streams; the Version 5 and Version 6 screen models; colours, windows and status lines; interrupt countdowns; pictures; sounds; keyboard reading with timed interrupts; terminating characters; the mouse; menus; loading and saving auxiliary files; throwing and catching stack frames.
§43 Pictures, sounds, blurbs and Blorb
What a Blorb file is; the perlBlorb utility program; blurb files; palette, resolution, scaling; specifying what sounds and pictures belong to a story file.
§44 Case study: a library file for menus
Invisiclues; basic design; the Option class;
the Menu class; the SwitchOption class.
§45 Limitations and getting around them
Story file size; readable memory size; grammar; vocabulary; dictionary resolution; objects, attributes, properties, names; function and message arguments; recursion and stack usage; abbreviations in text.
§46 A brief history of interactive fiction
§47 Realities and origins
Fictional backgrounds; crimes against mimesis; historical research; book adaptations.
§48 A triangle of identities
Player, protagonist and narrator; participatory magic; the overture and other narrated text.
§49 Structure
Size and density; the prologue, middle game and end game; wide versus narrow; lattice diagrams, including one for ‘Ruins’.
§50 The design of puzzles
General remarks on good and bad puzzles; mazes, light sources, capacity and exhaustion, timed puzzles, utility objects, keys and doors, machinery and vehicles, fire, water, air, earth, plants, animals, monsters, people, ropes and chains, riddles, decipherment puzzles; clues, luck and accidental solutions; optional and multiple solutions; rewards.
§51 The room description
Examples of good, mediocre and poor description; how much space is one location?; variable descriptions; outdoor games; differing perspectives.
§52 Finishing
Scoring systems; responding to wrong guesses; examples of typical bugs; play-testing and editing; concluding homily.
APPENDICES
TABLES
INDEX