Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

(Long) Proposed verb system for the "new" IF Engine

187 views
Skip to first unread message

BrenBarn

unread,
Sep 22, 1999, 3:00:00 AM9/22/99
to
Okay, after sitting on my duff and jabbering away on this forum, I finally
decided to kick myself and do something like what I was telling everybody else
to do. So I sat down and created this verb system. It's not comprehensive
(heck, it's not even plain ol' hensive), but it's an idea, and I'm hoping it'll
generate some more ideas somewhere out there. (I wrote this in a word
processor and saved it as plain text, so I apologize if some funky formatting
shows up on your newsreader.) So here it is (yes, it is obscenely long. :-):
Verb Organization (explanation of quirks follows)
I. Meta
A. "Save"/"Restore"
B. "Inventory"
II. No Object
A. "Look"
B. "Wait"/"Sleep"/"Sing" etc.
III. Direct Object
A. Only need to see object
1. "Examine X"
2. "Look under X"
B. Need to touch object
1. "Take X"/"Drop X"/"Wear X"/"Open X" etc.
IV. Direct & Indirect Objects
A. Don't need to touch any objects
1. "Ask X about Y"
B. Need to touch at least one object.
1. Need to touch Direct Object only
a. "Show X to Y"
2. Need to touch Indirect Object only
a. "Examine X with Y"
3. Need to touch both objects
a. "Unlock X with Y"
b. "Hit X with Y"
V. Abstract Parameters
A. "Ask X about Y"
B. "Say X"/"Say X to Y"
C. "Go X"/"North"/"South" etc.
D. "Set X to Y"
VI. Special Cases (in which specific conditions affect handling)
A. "Blow on X"/"Throw X at Y"
1. If the reason for untouchability is, for example, an intervening chasm,
this will be legal. If the reason is, for example, an
intervening glass wall, it will be illegal.
B. "Buy X"
1. If the context is, for example, a grocery store, then the player must
possess X. If it is, for example, a fish market, he need not
even be able to touch it.

- - - - - - - - - -
- - -

Differences from Inform Verbiage and Grammar

The Inform distinction between verbs which by default "do something" and those
which by default print a message is not recognized. In the new system,
printing a message, changing the object's location, toggling an attribute, or
altering a property value are all considered as different forms of "doing
something."

The Inform Before-During-After system remains intact, but if the library's
default behavior for a verb is to print a message, the After stage is still
reached. The only time the After stage is not reached is when the game
programmer intervenes at the Before stage.

In addition to an object tree, there is a verb tree, as outlined above.
Default behavior is different in different branches of the tree. For example,
in branch III.A, scope is calculated on a "line-of-sght" basis, but in branch
III.B, scope is calculated on a "line-of-touch" basis. Each branch inherits
the rules of its parent, so that the behavior of an existing branch may be
refined by creating a child branch.

The Inform grammar system is retained to a substantial degree. It is
augmented, however, with syntax to indicate where in the verb tree to place a
new verb. Example syntax is:
Verb <first tree branch>...<last tree branch> <"first verb word">...<"last verb
word"> <grammar>
In which the "tree branch" parameters are locators on the above tree; in order
from general to specific, these are: uppercase roman numerals (I,II,etc.),
uppercase letters (A,B,etc.), Arabic numerals (1,2,etc.), lowercase letters
(a,b,etc.), lowercase roman numerals (i,ii,etc.). These must come in order
from general to specific, but the branching may stop at any point. For
example. . .
Verb III B "take" "get" * noun -> Take;
. . .defines the verb "take". Notice that this verb is specified as being in
the tree at III.B, as indicated in the structure above. It will probably be
useful to define shorthand notation for tree positions, so that the above
command could also be stated as. . .
Verb direct touch "take" "get" * noun -> Take;
. . .where "direct" and "touch" are shorthand notations for common branches of
the verb tree.

New branches may be added to the tree with the Grow directive:
Grow <first tree branch>...<last tree branch>=<Routine>
Where Routine is a scoping routine, which may define scope any way it likes.

If the game programmer wishes to change a verb's position in the tree, he may
do so with the Verbmove directive:
Verbmove <verb name> <first tree branch>...<last tree branch>

"Inventory" has been made a meta-verb. This is merely a personal preference
of the designer of this system.

The "Ask X about Y" verb has two forms, which fall in two categories; in one
of these forms (the "object" form), Y is an actual game object, and in the
other (the "abstract" form) it is not. (For example, one would match "Ask man
about statue", and the other would match "Ask man about theoretical physics.")
This would require the parser to "look ahead" into the input stream. This
should not be too difficult; the only words in question are those between
"about" and the end of the sentence, so only these words need be checked. This
distinction has been added to reduce the frequency of the game programmer's
having to parse the input stream "by hand". Now he need only do this if there
is indeed no object which matches the input entered. (If the game programmer
wishes to parse the input himself, he can always do so by ignoring the "object"
form of the verb and parsing the input himself using the "abstract" form.

Some verbs have been placed in the "Special Cases" section, because they may
be subject to different scoping rules at different times. The technique used
for "Ask X about Y" is inapplicable, because the deciding factor is not
concrete, but subjective, depending on the context of the individual game. The
designer has refrained from placing these elsewhere in the tree, and offers two
possible suggestions: A) Arbitrarily place the verbs in one category or
another; B) Define the verbs in a separate branch of the tree -- a branch whose
scoping rules will not permit the verbs to be used -- and allow the game
programmer to move them to different parts of the tree as and if he sees fit.

The "Go X" verb has been placed in the "Abstract Parameters" section. If the
new system uses the Inform method of movement, in which directions are present
as objects, this verb should probably be moved to the "Direct Object" section.
(It is, however, difficult to define whether the player needs to be able to
touch or merely see the direct object in this case.) If a new method of motion
is used, in which directions are not objects, then the "Go X" verb should
remain where it is.

- - - - - - - - - -
- - -

I have undoubtedly forgotten or simply failed to address many issues. Any
questions or comments would be immensely appreciated. (In fact, the entire
purpose of my proposing this system is to generate questions and comments! :-)
Thanks to any and all who actually read that entire tedious thing -- brave
souls! :-)


From,
Brendan B. B. (Bren...@aol.com)
(Name in header has spam-blocker, use the address above instead.)

"Do not follow where the path may lead;
go, instead, where there is no path, and leave a trail."
--Author Unknown

0 new messages