The interactive-fiction specific layer of Inform, as a module. This is version 1.
-
-
IF Module - Setting up the use of this module. -
IF Special Meanings - Setting up the use of this module.
-
-
Our project is a kind of interactive book, with ISBN-like data and various cataloguing information, and which needs to be bound up in various ways.
-
Interactive Fiction ID - Computes and makes available the IFID (Interactive Fiction ID) number for an Inform-generated work of IF, in compliance with the Treaty of Babel. -
Bibliographic Data - To manage the special variables providing bibliographic data on the work of IF being generated (title, author's name and so forth), and to write the Library Card in the index. -
Release Instructions - To write the iFiction record for the work of IF compiled, its release instructions and its picture manifest, if any.
-
-
The default model domain for Inform is one which is adapted to interactive fiction, which provides for geography, spatial containment and scenes.
-
The Naming Thicket - Inform has a thicket of properties to do with names: not just the name itself, but whether it is a plural, a proper name, and so on. Here we look after these properties, and give them their initial states. -
Spatial Model - A plugin which constructs the fundamental spatial model used by IF, to represent containment, support, carrying, wearing, and incorporation. -
Spatial Relations - A continuation of the Spatial plugin which defines the binary predicates corresponding to basic spatial relationships. -
Persons - A plugin giving minimal support for switchable devices. -
The Player - A plugin to give a special role to the player object. -
Devices - A plugin giving minimal support for switchable devices. -
Backdrops - A plugin to provide support for backdrop objects, which are present as scenery in multiple rooms at once. -
Regions - A plugin providing support for grouping rooms together into named and nestable regions. -
The Map - A plugin to provide a geographical model, linking rooms and doors together in oppositely-paired directions. -
Map Connection Relations - To define one binary predicate for each map direction, such as "mapped north of". -
Spatial Geometry - To deal with vectors and cuboids in a three-dimensional integer lattice. -
Spatial Map - To fit the map of the rooms in the game into a cubical grid, preserving distances and angles where possible, and so to give each room approximate coordinate locations. -
HTML Map - To render the spatial map of rooms as HTML. -
EPS Map - To render the spatial map of rooms as an EPS (Encapsulated PostScript) file. -
Showme Command - A plugin to provide some support for the SHOWME testing command. -
Scenes - Scenes are periods of time during play: at any given moment, several may be going on, or none. They are started and stopped when certain conditions are met, or by virtue of having been anchored together. -
Temporal Map - Parallel to the World index of space is the Scenes index of time, and in this section we render it as HTML. -
The Score - A plugin to support the maximum score variable.
-
-
Actions are impulses to do something within the simulated world.
-
Actions - To define, map to I6 and index individual actions. -
Action Name Lists - Action name lists provide a disjunction in the choice of action made by an action pattern. For instance, "taking or dropping the disc" results in a two-entry ANL. An empty ANL is also legal, and means "doing something" -- the generic I7 text for "any action at all". -
Action Patterns - An action pattern is a description which may match many actions or none. The text "doing something" matches every action, while "throwing something at a door in a dark room" is seldom matched. Here we parse such text into a data structure called an |action_pattern|. -
Looping Over Scope - To compile routines capable of being passed as arguments to the I6 library routine for looping over parser scope at run-time, and so to provide an implementation for conditions such as "in the presence of Mrs Dalloway". -
Named Action Patterns - A named action pattern is a named categorisation of actions, such as "acting suspiciously", which is a disjunction of action patterns (stored in a linked list). -
Actions Index - To construct the Actions index page.
-
-
In which Understand sentences in the source text are converted into a parsing grammar, which tells the player's computer how to understand his typed commands during play, converting these into actions by the protagonist in the model world.
-
Introduction to Grammar - An exposition of the data structures and basic method used to deal with the command-parsing grammar implied by Understand sentences in the source text. -
Traverse for Grammar - To create and manipulate grammar, primarily by parsing and acting upon Understand... sentences in the source text. -
Grammar Properties - A plugin for the I6 run-time properties needed to support parsing. -
Grammar Verbs - A grammar verb is not literally a verb, as the name is a hangover from the way I6 defines grammar. It might be said to be a necklace onto which we thread the sea-shells of grammar lines. Each grammar verb has its own purpose: to match various possibilities (one for each grammar line) against text aimed at a particular result. For instance, all run time commands beginning with TAKE are parsed with a single grammar verb. If we create a new grammar token, "[polite remark]", for use in other grammar, then that too will have its own "grammar verb". If we define the word "eleventy-one" as meaning the number 111, it will be added to a grammar verb attached to the kind "number" which parses eccentric names for number values. And so on. Probably a better name for this structure would be simply "grammar", but that might be confusing in other ways, and anyway the ship has sailed. -
Grammar Lines - A grammar line is a list of tokens to specify a textual pattern. For example, the Inform source for a grammar line might be "take [something] out", which is a sequence of three tokens. -
Grammar Types - Some grammar text specifies one or more values, and we need to keep track of their kind(s). Here we manage the data structure doing this. -
Grammar Tokens - To handle grammar at the level of individual tokens. I7 grammar tokens correspond in a 1-to-1 way with I6 tokens: here we determine the I7 type a token represents (if any) and compile it to its I6 grammar token equivalent as needed. -
Noun Filter Tokens - Filters are used to require nouns to have specific kinds or attributes, or to have specific scoping rules: they correspond to Inform 6's |noun=Routine| and |scope=Routine| tokens. Though these are quite different concepts in I6, their common handling seems natural in I7. -
Tokens Parsing Values - In the argot of Inform 6, GPR stands for General Parsing Routine, and I7 makes heavy use of GPR tokens to achieve its ends. This section is where the necessary I6 routines are compiled. -
General Parsing Routines - To compile I6 general parsing routines (GPRs) and/or |parse_name| properties as required by the I7 grammar.
-
Powered by Inweb.