Chapter 18: Rulebooks
18.14. Procedural rules


This section and the next are about a feature which is being withdrawn from Inform in future. Experience shows there are equally good ways to achieve the same ends without needing procedural rules. As elegant as they were, they often confused users, and they were expensive at run-time (that is, they made everything work more slowly). Withdrawing them from Inform will make it possible to make more efficient story files, and will simplify the language.

Before any rule or rulebook is followed, a special rulebook is always consulted first. This is called the "procedural rules", and it starts out empty: so if we write no procedural rules, empty it will remain.

Like the points of order which precede a debate, the procedural rules are not intended to contribute to any decision in themselves, but merely to sort out which voices are to be heard when the time for decision comes. Should some rules be waived, or others substituted? Should the rulebook be rearranged, in certain circumstances? And so on. Procedural rules offer enormous flexibility and with them one could deconstruct Inform and put it back together in a very different shape - but in practical situations they will only occasionally be needed.

Procedural rules are not allowed to say anything, or indeed to do anything which might have practical consequences; they are only allowed to think about the current situation (if they need to) and then use special phrases (if they choose to) which affect how other rules are to be followed. For instance:

A procedural rule:
    if the player is in the Timeless Void, ignore the advance time rule.

Since the "advance time rule" is the one which moves on the number of turns and the clock, this means that the Timeless Void lives up to its name.


390
* Example  Access All Areas
The Pointy Hat of Liminal Transgression allows its wearer to walk clean through closed doors.

RB

This is a typical usage of procedural rules to suspend the laws of nature. Notice that we only need a procedural rule if we are going to conditionally replace or ignore the behavior of a rule at runtime.

If we want to remove or replace one of the standard rules universally throughout the game, it is better to use the "X is listed instead of Y..." or "X is not listed..." syntax, since these will not require any runtime calculation. Procedural rules are called very frequently at runtime, so having a large number may slow down performance on slower machines.

"Access All Areas"

The extremely difficult door is north of the Standing Room and south of the Room of Walking Upside Down. It is a locked door.

The player is carrying the Pointy Hat of Liminal Transgression. The hat is wearable.

A procedural rule: if the Hat is worn, ignore the can't go through closed doors rule.

Test me with "n / wear hat / n".

(The Pointy Hat may be useful in debugging a game, even if it never makes it into the final published work.)

The "can't go through closed doors rule" is one of those belonging to the "check going" rulebook. These names are fairly explanatory when written out, but hard to remember: fortunately we don't need to remember them, as the Index panel contains a full inventory of the check, carry out and report rules for every action, showing all of their names and the order in which they are checked.


PreviousContentsNext