Now, the biggest problem with this, as far as I can see, is the
tremendous range of options it opens up. Consider the following statements:
officer, I have a gun
luke, I am your father
marsha, john is dead
These are statements that should provoke a reaction, regardless of
whether they're true or not. By limiting the player's actions to
interacting with objects and a couple of non-specific conversation forms
(like "tell x about y"), we keep the simulation to a managable level of
detail. The space of all possible assertions in even a limited
vocabulary expands the possibilities to the point where we can't easily
code a reasonable fraction of them - and even if we did, the effect may
not be worth the effort.
Still, I'm thinking of coding something with a limited ability to
understand statements, like Infocom did (not altogether satisfactorily)
in Shogun. Implementing "I am", "you are", and "there is" as verbs may
suit my needs. This can be extended to include questions: "who is",
"what is", "where is", even "why is".
Question 1: What other sentence forms are indispensible? "<noun> is" in
general is right out.
So start implementing this in TADS, right? Only it gets stuck on "there
is". After a while I figure it out. It's the word "there". TADS, using
ADV or Worldclass, treats "there" like "it": as a special word referring
to the last applicable object mentioned. I figure I have three options:
a) Remove "there" from the list of special words. Unappealing, as it
would involve direct modification of the library, rather than using the
b) Hack up a preparse function that detects "there is" and replaces it
with "there's". Also unappealing, especially since Worldclass has its
own preparse function, and you can't modify it without replacing it entirely.
c) Learn Inform.
Question 2: What is the best course? Is there another option?
>So start implementing this in TADS, right? Only it gets stuck on "there
>is". After a while I figure it out. It's the word "there". TADS, using
>ADV or Worldclass, treats "there" like "it": as a special word referring
>to the last applicable object mentioned.
Just punt that. It's only there to allow things like
>look in the cupboard. put the dishes in there.
ADV.T didn't have this for years and no one ever noticed. I thought of it
while writing the specialWords code for WorldClass. It's gratuitous. Just
get rid of it.
>a) Remove "there" from the list of special words. Unappealing, as it
>would involve direct modification of the library, rather than using the
If there is no way to coerce modify into doing what you want (which might
be the case, I don't know), then just replace the specialWords list
entirely. I don't think this is a big deal; the specialWords list is
unlikely to change much, if at all.
>b) Hack up a preparse function that detects "there is" and replaces it
>with "there's". Also unappealing, especially since Worldclass has its
>own preparse function, and you can't modify it without replacing it
Well, I could always move the meat of the WorldClass preparse routine into
another function. Then you could replace the WorldClass preparse (which
would then be a single line calling the "meat" function), call the "meat"
function yourself, and then do your own stuff on the output.
This sounds like a good change to make. I'll do it and update the copy on
d...@ai.mit.edu MIT AI Lab "Verbing weirds language" -- Calvin
ADVENTIONS: Kuul text adventures! Email for a catalog of releases.