| Term | Definition |
| association |
A function is said to be associated with the nearest object or location that is defined above it in the game file. An underscore and the label of the item it is associated with is appended to the function name specified in the code to form the function's full internal name. |
| attribute |
An attribute is a boolean value, or flag, that can be set on or off (using the ensure command) for any given item. |
| blorb |
A Blorb file is a resource bundle defined by Andrew Plotkin for storing images and sounds alongside an interactive fiction game. The Glk interpreters look in game.blorb for any media the game references by index. The web interpreters use a media file instead. Generated by the bjorb utility from a .blc control file. |
| cgijacl |
The standalone web interpreter. Listens on an HTTP port directly and serves the game to a browser, suitable for development and small-traffic deployments. Pairs with a media file for resources and reads configuration from cgijacl.conf. |
| child |
An object is said to be a child of whichever other item its parent element is currently set to. This indicates that the child object is somehow contained within or possessed by the parent item. |
| cjacl |
A console interpreter built against CheapGlk that streams game output to standard output rather than a Glk window. Handy for piping a transcript through other tools or running games from a script. |
| command |
A command is one of the basic actions that can be performed within a function. |
| container |
A container is any expression that can have its value set to an integer. These are item elements, item pointers and integer variables. |
| current location |
The current location is whichever location the parent element of the object representing the player is set to. The object that represents the current player is specified by the current value of the object pointer player. |
| default function |
A global function named +default_verb that the interpreter looks for when a verb's override opcode fires and no per-object override is found. Lets you customise a verb's outcome for many objects in one place without rewriting the verb's preliminary checks. |
| definite article |
A definite article is used before singular nouns that refer to a particular member of a group. In English this is the. An item's definite article defaults to the unless otherwise specified by supplying a definite property. This article will be displayed when using a {the} macro. |
| directive |
A directive is a setting that may be placed in the interpreter's configuration file. |
| element |
An element is any of the properties of an item that can be set to hold an integer value. |
| expression |
An expression is a group of three parameters that may be used with an if command. All expressions evaluate to either true or false. |
| fcgijacl |
The FastCGI variant of the web interpreter. Designed to be fronted by a production webserver such as Apache via mod_fcgid; processes are kept alive between requests for low per-move latency. |
| filter |
A filter is any word that has been specified to be removed from the player's move before it is processed by the interpreter. |
| full internal name |
If a function's name begins with a plus sign, it is global and the name specified in the code will also be its full internal name. If not, the name that appears after a function's opening curly brace, followed by an underscore then the label of the item that the function is associated with will be its full internal name. |
| function-call counter |
An automatically maintained integer container, accessed as @function_name, that records how many times a given function has been called. Inside the function itself the bare token @ refers to the running function's own counter. Useful for gating first-time behaviour without declaring a user attribute. |
| Glk |
A portable application programming interface for text-based games, written by Andrew Plotkin. JACL targets Glk for the console interpreter (jacl, built on GlkTerm) so the same game runs unchanged under any Glk implementation, including Gargoyle and WinGlk. |
| grammar |
A grammar statement is the definition of a command construct that may be used by the player during the game and the function that should be called when that move is made. |
| grand parent |
The grand parent of an object is the last object in the chain of possession. For example, if a coin is inside a purse that is in turn inside a bag, the bag is said to be the grand parent of the coin, while the purse is its parent. |
| here |
An internally defined pointer that always resolves to the player's current location. Equivalent to player(parent) but easier to read. |
| hyperlink |
Under the web interpreters, the hyperlink opcode emits a clickable HTML anchor that submits a typed command on the player's behalf. Used by webinterface.library to build the link bar (Instructions, Map, About, etc.). Degrades to plain text under Glk. |
| indefinite article |
An indefinite article is used before singular nouns that refer to any member of a group. In English these are a or an. An item's indefinite article is defined using the first parameter of a short property. This article will be displayed when using a {list} macro. |
| integer |
An integer is a 32 bit signed whole number. It can range between -2147483648 and 2147483647. |
| item |
Item is the group term for objects and locations. |
| jacl |
The flagship console interpreter, built against the GlkTerm library. Reads a .jacl game file (or its preprocessed .j2 form) and presents it in a text-only window with a Glk status bar. |
| keyword |
Keywords are any of the terms that define a top-level declaration in a game. They are object, location, filter, synonym, integer (and integer_array), grammar, constant, string (and string_array), attribute, parameter and stylehint. |
| label |
A label is the internal name given to an object, location or variable. No two labels can be the same. |
| library |
The standard set of include files distributed with JACL, found in projects/include/. The main file is verbs.library, which provides default implementations of every standard verb; companions such as menu.library, webinterface.library, npc.library and the language-specific files extend the base library with optional functionality. |
| location |
A location is an item that the player may be inside. All locations have the attribute LOCATION and are defined using the keyword location. |
| macro |
A token enclosed in curly braces that resolves at output time to text derived from an object. The most common macros are {list} (indefinite-article form), {the} (definite-article form), {long} (long description), {sub}/{obj} (pronouns) and {is}/{has}/{s} (verb agreement). Macros work on object labels and on integer variables that hold an object index. |
| media file |
A plain-text manifest with the same base name as the game and a .media suffix, consulted by cgijacl and fcgijacl to serve images, sounds and other static assets. Each line maps a request URL to a MIME type and a filesystem path. |
| name |
All items must have one or more names. These are the names that the player may use to refer to that item during the course of the game. |
| noun1, noun2, noun3, noun4 |
Built-in object pointers used by the parser and the library. noun1 is set to the first object referred to in the player's command and noun2 to the second; noun3 is the conventional iteration variable for the loop command and noun4 is a free pointer for game code to populate. The standard library calls verb functions with these pointers already set, so a function such as +take can refer to its target as noun1. |
| object |
An object is an item that represents any aspect of the game that the player must be able to refer to, but not be inside. |
| override |
An opcode used inside a global verb function to delegate the verb's outcome to a per-object hook. When override runs the interpreter looks for a function named verb_override_label on the noun and executes it in place of the rest of the global function. If no such hook exists, the interpreter falls back to +default_verb; if that also doesn't exist the rest of the global function runs as written. Allows authors to change a verb's outcome for a specific object without re-implementing all the preliminary checks. |
| parameter |
The term parameter refers to one of two things. Firstly a parameter is any information that follows a JACL command, keyword or property. If multiple parameters are specified, they must be separated by white space. |
| parent |
An object's parent is the item that it is currently inside or possessed by. The parent of the object that represents the player is the location they are currently in. |
| pointer |
A pointer is a special type of variable that may be used anywhere an item label can be. When used, it will be substituted for the label of the item that it is currently set to. |
| property |
A property is one of the elements of an object or location that can be defined at start-up. |
| proxy |
The proxy opcode submits a string as if the player had typed it, running it through the normal parser. Used to redirect one player command to another (for example, mapping a custom verb onto an existing one) and to let the menu library run option choices through the same path as typed input. |
| scope |
Scope describes the position of an object relative to the player. The scope indicators are *present, *here, *held, *inside and *anywhere. |
| self |
An internally maintained pointer that refers to the object whose function is currently executing. Inside an associated function such as {examine, self always equals the object the function is attached to, so ensure self has TOUCHED works regardless of whether the player typed the object's name directly or used a pronoun. |
| statement |
A statement is a command, keyword or property along with all of its parameters. |
| synonym |
A synonym is any word that has been specified to be swapped for another word in all moves typed by the player. |
| value |
A value is an integer, or anything that resolves to an integer such as: an object label, an object element, an object pointer, a variable, true (1), false (0), scenery (100), heavy (99), nowhere (0), lines (the number of lines the screen can display) or random. For more information on constants and random see the chapter on Internals. |
| walkthru |
A plain-text file listing one in-game command per line. Fed to the walkthru command, it replays the commands as if typed by the player, with no [MORE] prompts. Used during development to fast-forward to a particular point in the game and as a regression test — running an existing walkthru after editing the game should produce the same transcript. |
| white space |
White space is any tab, space, comma or colon that occurs outside double quotes. |