Newsgroups: rec.arts.int-fiction
Path: gmd.de!xlink.net!howland.reston.ans.net!sol.ctr.columbia.edu!news.kei.com!ub!acsu.buffalo.edu!goetz
From: goetz@cs.buffalo.edu (Phil Goetz)
Subject: Re: IF complexity
Message-ID: <CF4009.L93@acsu.buffalo.edu>
Sender: nntp@acsu.buffalo.edu
Nntp-Posting-Host: hydra.cs.buffalo.edu
Organization: State University of New York at Buffalo/Comp Sci
References: <29s3hm$eai@Notwerk.mcs.com> <1993Oct18.061330.974@labtam.labtam.oz.au>
Date: Mon, 18 Oct 1993 20:09:45 GMT
Lines: 59

In article <1993Oct18.061330.974@labtam.labtam.oz.au> philip@labtam.oz.au writes:
>  Personally, I find IF games which have large sprawling maps to be a bit
>of a pain, because if there's one thing I hate, it's having to single-step
>through a dozen rooms to get to where I want to go.  I suppose that can be
>solved by having an intelligent game that can plot a path to rooms you've
>visited before when you type "go to such-and-such a room"...

I may start working (read: am trying to figure out how to use the system
and whether I can get a dissertation topic out of the work) on an IF
platform that would automatically address problems like that.

The University of Buffalo has a semantic network KR system (SNePS).
It includes an inference system (SNIP).  Some folks found that inference
can't be represented the same way as plans, in a system that uses both.
(In Prolog, p(A,B) :- q(A), b(A,B) could be read either as a plan to be
executed, or an inference to be drawn.)  So they developed a separate
representation for plans, and an acting system, SNACTOR, which executes
plans and detects them.

What I might do is simply represent the layout of a world in the network,
and provide it with rules about the effects of commands.  For example,

(assert forall $actor forall $place forall $wplace
        &ant ((build object *actor in *place)
              (build towest *wplace toeast *place))
        cq (build act (build action w)
                  effect (build object *actor in *wplace)))

says that, if an actor does action "w" (go west), then the actor is
_in_ the place which is west of the actor's current place.  If the
system has this knowledge, and you tell your actor to "go to the kitchen",
it would formulate a plan to go to the kitchen from all these pieces of
information it has about the world.  Unfortunately, it wouldn't do it
very efficiently; a major concern of mine is to implement this and
see if I can enter a command and get a response in under ten seconds
(on a SparcStation).

The planning system would also take care of details like not holding
a book you ask to read, not having opened a box you want to look inside,
etc.  I hope to be surprised by the actions of my character, because
the planning system uses the inference system and so may be able to find
novel plans.

The main motivation for using this planning (and plan-detection) system
in IF is so that the non-player characters can make and execute plans,
detect the player's plans, and form plans to assist or thwart the player.

Phil goetz@cs.buffalo.edu

P.S. - I honestly think that, if you want to do IF research, you should
use either SNePS or CYC.  SNePS has stronger philosophical foundations,
allowing it to deal more easily with more varied mental phenomena such as
nested belief spaces (I think you think I think...), co-extensional
intensions (the morning star and the evening star are really the same star,
though an NPC might not know that), non-extensional intensions (my concept
of unicorns), and unrealized plans.  CYC has an ontology more geared towards
efficiency, and a large existing knowledge base.  CYC lacks any cognitive
architecture; SNePS has a (too) simple cognitive architecture.  The KRL or
KLONE families might be okay, but I don't know how much is implemented.
