§1 Routines
if
, true
and false
else
and switch
while
, do
… until
,
for
, break
, continue
print
and print_ret
statements§2 The state of play
§3 Objects
nothing
move
, remove
, objectloop
with
and provides
private
propertieshas
and give
class
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