Newsgroups: rec.arts.int-fiction
Path: gmd.de!nntp.gmd.de!newsserver.jvnc.net!darwin.sura.net!udel!gatech!howland.reston.ans.net!cs.utexas.edu!uunet!sparky!kwiudl.kwi.com!netcomsv!netcomsv!ix.netcom.com!netcom.com!whitten
From: whitten@netcom.com (David Whitten)
Subject: NPC Thoughts for comment
Message-ID: <whittenCx9I9y.3DH@netcom.com>
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
X-Newsreader: TIN [version 1.2 PL1]
Date: Thu, 6 Oct 1994 17:37:09 GMT
Lines: 96

I just sent this to the wisdom@mcs.com mailing list, so I thought
I would post here too.


I've been thinking about a hierarchy of behaviour for NPC's 
(Non-Player-Characters)

Input Methods NPC's can have:

	1) Telling them something
	Example: say "hello" to fred

	2) Prodding them

	Example: pull on fred's tie

	3) Sensing

	Example: they noticed you saying something to someone else,
	they noticed you picking up a rock.


One kind of NPC behaviour would be Reaction

ie: they heard you say something, the NPC looks up what you said in
an internal table and says whatever the table says to say.

a more general form of this would be to have 'fill in the blank' forms
that the NPC looks up in an internal table and then has the list of
blanks that you filled in and can use those to fill in the blanks in
the sentence it found in its table.  Eliza does this.
eg: I hate my ----. => Why do you hate your --- ?

an alternate way of reacting would be to look up in a table to find
a program or list of things to DO when something is said.  This
is similar to a command language for a computer

and of course this can be generalized to having 'fill in the blank' forms
as well.

The NPC behaviour of SCHEDULING is different.

In this, there is a list of actions or things to say, which are
listed in a queue for the NPC.  At a certain time, the NPC needs
to do this, then at the next time, it needs to do this next thing, etc.
Notice this simply a lot of timers that go off at various times,
and have actions associated with them.

The next most general case would be to have the actions be conditional
in how or what they do.

The next case might be to allow the entire list of actions to be changed.
Each list of actions is still statically defined, but the 'active' list
for an NPC can be changed.

The next case might be to allow the contents of a list of actions to be 
dynamically changed.  This allows new tasks to be added, and old ones to 
be deleted.

And of course, what actions you allow to be scheduled will affect how
smart the NPC appears to be.

Another NPC behaviour is to have a GOALS list, and the ability to PLAN.

This would require knowledge of what the NPC likes and dislikes.
It will also require a database of how-to methods linking goals to actions
so that it can look at goals and create a schedule of actions to attain
them.

I guess this is pretty old AI.

The simplest case would be that the goals tell how fulfill them.

the next simplest case would be that the goals list subgoals that when
fulfilled, will fulfill the main goal.

A more complex case would have lists of alternates so that the goal
may be fulfilled if one of the several alternate lists of subgoals
are fulfilled

This would require a DECISION ability to choose between the lists,
or some list of conditions qualifying when each alternate is preferable.

Also you need to have some component of your NPC that
could take these lists of actions and schedule them so they actually
would be done.

The Decision ability would probably be involved in interaction with the
scheduler too.

Well, I'm sure there are more aspects to this, I've typed a while,
now maybe someone else can do so.

David (whitten@netcom.com) (214) 437-5255


