"When I use a word, it means just what I choose it to mean — neither
more nor less."
- Humpty Dumpty
A number of terms are used with very specific meanings in JIFFEE's documentation. This glossary explains those meanings.
An action is anything that can be performed. Actions are typically supplied as the part of a rule that specifies what should happen under specific conditions. They are also often used as the values of traits like "long-desc" or "north". The JIFFEE standard library defines the following action types by default:
|Type of action||What it means|
|a string of the form "MOVE thing TO place",
where "thing" can be omitted
and "place" can be "HERE"
|Change the location of "thing" to "place".|
|any other string||Display the string on the screen.|
passing the current event as the single argument.
i.e. a list
|Interpret each list element as an
and perform them in order.
Advanced JIFFEE authors are allowed to define and use additional types of actions if they wish to.
An author is a human being who creates a game using JIFFEE (cf. player).
The directives used by an author to direct the logic and progress of a game are written in the game's author language. This does not change when the game is translated. In the most common case both the author language and the player language are English so you can ignore the distinction, but if and when you ever decide to internationalize and translate a JIFFEE game, the process will be much easier to understand if you keep the author-vs-player distinction in mind. (cf. player language.)
The translation of commands into directives is what allows a JIFFEE game to be translated into other player languages without having to make any changes to the game's logic.
Two types of events are predefined by JIFFEE's standard library:
|eventType||What triggers the event|
player typed a
which has been translated into the
|change||The value of a trait changed.|
Advanced JIFFEE authors are allowed to define additional event types if they wish to.
There are two natural (i.e. human) languages involved in any JIFFEE game: the first one spoken, read, and written by the player, and the second one spoken, read, and written by the author. These are often the same (e.g. English), but they will be different if the game has been translated into another language. You can keep the two straight by remembering that the player language is used for commands, and the author language is used for directives and for strings passed to the Display.show() function.
The visible part of the game world created by the game's author consists largely of nouns. To conform to common English usage, each noun is usually a person, place, or thing. Here is the hierarchy of nouns in JIFFEE:
(not yet implemented)
Many verbs allow part or all of their default logic to be replaced when the player uses that verb in a particular place or with a particular prop. This is done using the trait whose name is the same as the verb, by setting its value to the desired action. For example, by saying traits.set("rock", "get", "The rock is too heavy to pick up."); you could make it impossible to pick up the rock. This is called an override of that verb for that prop or place. The override mechanism is not as flexible as a specialization, but it is much more concise and it conveniently and efficiently handles many common cases.
A place is a type of noun where the player or various things can be located. A place can be the location of something else, but it does not have a location itself.
The player is the human being who is playing the JIFFEE-based game (cf. author).
A prop is a thing that the player can typically pick up, carry, move, or manipulate. Only one instance of each prop exists, and it can be in only one place at any given time. Sometimes you may create multiple props that the player views as a single prop, for example a new light bulb and a burned-out light bulb that you move on-stage and off-stage as needed, but JIFFEE considers them to be two distinct props.
Rules are at the heart of JIFFEE because nearly all the interesting logic in a game is initiated by rules. A few of them are supplied by JIFFEE's standard library, but most of them written by the game's author. Each rule supplies conditions that determine which events will match this rule, a priority to help determine order-of-execution, and an action to be performed if all the rule's conditions match an event. Each time an event occurs, it is matched against all the game's rules to determine which actions should be performed.
Scenery elements are a type of thing intended to represent immutable and potentially widespread parts of a game. For example, the floor or the sky could be represented as scenery because the description is the same everywhere. These can be examined but not picked up or moved, and in particular they can be in many places at once. An element of scenery can change, but it must change everywhere at once because there is really only one of them. For example, the sky can get dark.
There are times when you want an existing verb to have special logic under special circumstances. You can do this by simply adding a rule for that verb whose action does the desired logic only under those special circumstances, and does nothing in all other cases (which allows the other existing rules to retain control). This is called a specialization for that verb. This is similar to an override — the difference is that because you specify a specialization using a rule instead of a trait, the specialization mechanism is a bit more verbose but much more flexible. For example, you could specify that picking up propA transports the player across a barrier only if the player is standing in placeB, holding propC, and has already seen a clue by examining propD.
There are 4 types of traits:
|Name of trait||Type of trait||Possible values|
|ArbTrait||arbitrary||Any value of any type.|
|RangeTrait||fixed range||Any integer from 0 to a specified maximum.|
|EnumTrait||enumerated||Any of a small number of predetermined values.|
|RefTrait||reference||The name (in the author language) of any noun.|
Those familiar with conventional programming languages will note that JIFFEE deliberately combines the conventional notions of "type" and "name" to keep things simpler. The design would have eliminated "type" altogether, but a simple form of it is needed to allow efficient encoding of the game state into a cookie.
This term is ambiguous, so JIFFEE documentation deliberately avoids using it. To be clear, use author or player instead.
JIFFEE and JIFFEEgames.com copyright © 2007-2010 by Michael S. Kenniston. All rights reserved. This page was last updated on 2010-01-02.