Algorithms for Creating True NPC Interaction

5 views
Skip to first unread message

Guy

unread,
Jun 1, 2001, 1:59:46 PM6/1/01
to
Hi, people.

My name’s Guy Hasson, an i-f fan since the good ol’ Infocom days. I think I
came up with a couple of algorithms which should - I hope - lead the way to
the creation of a whole new kind of i-f games: interaction-based games,
people-based games, with interaction-based puzzles.

The idea is about creating true NPC interaction, and it bypasses the usual
need for writing endless dialogues (to take care of every possibility).

You feed whatever program you use a few hundred snippets per NPC, and the
computer will patch them together, writing dialogues you never wrote, being
able to deal with every situation that might arise, literally creating more
than millions of possible turns! Each turn would be different, would come
seamlessly out of the previous turn, would change things – sometimes a lot,
sometimes a little – and so on. An end to repetition. No two games will
ever be alike, things will change at every turn, whether the player
contributes to the conversation/interaction or stays out of it.

I’ve posted my ideas at my homepage: http://guyhasson.20m.com/. Feel free
to look them over, use them, make games with them, tell me what you think of
them, etc.

Guy

Sean T Barrett

unread,
Jun 2, 2001, 12:21:04 PM6/2/01
to
Guy <guyh...@hotmail.com> wrote:
>You feed whatever program you use a few hundred snippets per NPC, and the
>computer will patch them together, writing dialogues you never wrote, being
>able to deal with every situation that might arise, literally creating more
>than millions of possible turns!

After having read your page, I'd say that this sort of thing might
be interesting to play once, but I'd guess (since nobody has written
one yet) it's going to lack any real feeling of story--of beginning,
middle, and end.

The idea of tracking character state isn't new (Oz, Galatea); however,
the idea of characters interacting with each other is something we
haven't seen that much of (Pass the Banana).

I do personally think there's an overemphasis on conversation as the
thing which distinguishes NPCs in IF.

I personally disbelieve in random message generation of the sort you
describe. If the same random message gets printed several times, you're
going to notice the patterns, despite the fact that much of the language
is varied. "Hey, wait, this is the same general sequence of events we
saw before." If you're only going to print it once or twice, better to
just hand-write the two variations; easier, faster, and more
authored-sounding; and you have more knowledge of what the player
experience is like, because the players have more similar experiences.

For example, your "All right, then! All right, then!! All right, then!!!"
example sounds unique, but if another time the player saw
"All right, then! All right, then!! Have it your way!!" I don't think
the player would have any trouble noticing the pattern (and some
players would see both, even if it only printed twice, assuming you
got enough players).

On the other hand, despite disbelieving in it, some time ago I made a
modification to the Inform compiler which is very good at doing exactly
this sort of thing; however, I've never released the modification because
I never got permission from Graham to release it. For example, the
beginning of your "split random" example could be coded as:

"Margaret's {%face {%goes|becomes|changes colors quickly, settling
on}|fingers tighten into fists. Her {%bones turn|knuckles
turn}}{%white|purple|green}.";

I regularly do some things than this in my games; for example,
my walkthrough comp game "Fit for a Queen" includes the code:

if (random(70) < 40)
"^Mildred {!struggles with the computer.|{shows some robots to
a table, then discovers it's too small.|tells a waiting robot
it's the computer's fault.}|studies the seating chart.|seats
a {!small party|single robot|few robots}.|gives you a dirty
look.|grumbles.|greets an arriving {%robot|robot party}
{!coldly|hostilely|nastily|angrily|obnoxiously}.|types on
the computer.|examines the reservation list.|says something
to one of the waiting robots.}";

although the game will only execute the above code a single time
(possibly printing nothing at all) if the player follows the
walkthrough.

SeanB

John Baker

unread,
Jun 2, 2001, 3:58:12 PM6/2/01
to
Guy wrote:
> I’ve posted my ideas at my homepage: http://guyhasson.20m.com/. Feel free
> to look them over, use them, make games with them, tell me what you think of
> them, etc.

This was an interesting read, however I suspect that the devil would
be in the details when implementing like this. Have you actually
implemented the one-room game with George, Alison, and their
respective mother-in-laws? If the result was playable and smooth,
there would probably be a lot of interest in the method.
--
John Baker
"Contemplate this on the Tree of Woe." - Thulsa Doom

Reply all
Reply to author
Forward
0 new messages