March 1998
- Describe Concept Stephen Zepp
- Describe Concept Jon A. Lambert
- Describe Concept J C Lawrence
- Describe Concept Jon A. Lambert
- Describe Concept J C Lawrence
- Describe Concept Vadim Tkachenko
- Tutorial: Let's build a Compiler! - Part XI: Lexical Scan Revisited Jon A. Lambert
- Tutorial: Let's build a Compiler! - Part XII: Miscellany Jon A. Lambert
- Tutorial: Let's build a Compiler! - Part XIII: Procedures Jon A. Lambert
- Tutorial: Let's build a Compiler! Chris Gray
- VEIL Network Protocol Brandon Gillespie
- Tutorial: Let's build a Compiler! - Part XIV: Types Jon A. Lambert
- Tutorial: Let's build a Compiler! - Part XV: Back to the Future Jon A. Lambert
- Tutorial: Let's build a Compiler! - Part XVI: Unit Construction Jon A. Lambert
- For Ling's FAQ Koster, Raph
- MUD Ratings jlsysinc.ix.netcom.com@ix.netcom.com
- Random Generation Tools Ling
- ANNOUNCE: DB Robin Carey
- THE DARKWHOLE TESTS J C Lawrence
- Magic as Metaphor J C Lawrence
- Magic as Metaphor J C Lawrence
- Magic as Metaphor Jon A. Lambert
- Magic as Metaphor J C Lawrence
- CT - A Hypothetical Session (mid 1995) J C Lawrence
- 2Cyberconf: An article J C Lawrence
- (long) AnarchyMOO Primary Log J C Lawrence
- (short) AnarchyMOO parting salute J C Lawrence
- AnarchyMOO purpose J C Lawrence
- (fwd) CODE RELEASE: [client] Spod! (Java mud client) J C Lawrence
- (fwd) CODE RELEASE: [client]: lyntin (hacker's client) 1.1b Released J C Lawrence
- DarkWhole Test #1 J C Lawrence
- DarkWhole Test #2 J C Lawrence
- DarkWhole test #3 J C Lawrence
- DarkWhole test #4 J C Lawrence
- DarkWhole test #5 J C Lawrence
- DarkWhole test Identity Crisis J C Lawrence
- The Craft of Adventure J C Lawrence
- What in THE Hell was that? Stephen Zepp
- What in THE Hell was that? Ben Greear
- What in THE Hell was that? J C Lawrence
- What in THE Hell was that? Jon A. Lambert
- (fwd) Varying Time Commitment Levels: what's an admin to do? J C Lawrence
- Hello, and a brief intro cimri
- Hello, and a brief intro Ben Greear
- (no title) Time limits? s001gmu@nova.wright.edu
- (no title) Time limits? Justin McKinnerney
- (no title) Time limits? J C Lawrence
- Speaking of Avatars Jon A. Lambert
- Speaking of Avatars Jon A. Lambert
- Speaking of Avatars J C Lawrence
- Speaking of Avatars Jon A. Lambert
- Re: Vadim Tkachenko
- META: Broken mail headers coder@ibm.net
- META: Broken mail headers Alex Oren
- META: Broken mail headers J C Lawrence
- META: Broken mail headers Alex Oren
- META: Broken mail headers J C Lawrence
- META: Broken mail headers Chris Gray
- META: Broken mail headers J C Lawrence
- META: Broken mail headers Caliban Tiresias Darklock
- META: Broken mail headers Chris Gray
- Turn-based MU*'s Sauron
- Balancing Addicts -> soft vs. hard enforcement cimri
- Balancing Addicts -> soft vs. hard enforcement Justin McKinnerney
- Balancing Addicts -> soft vs. hard enforcement J C Lawrence
- Balancing Addicts -> soft vs. hard enforcement Jon A. Lambert
- Balancing Addicts -> soft vs. hard enforcement Ling
- Balancing Addicts -> soft vs. hard enforcement Jon A. Lambert
- Balancing Addicts -> soft vs. hard enforcement Matt Chatterley
- Balancing Addicts -> soft vs. hard enforcement J C Lawrence
- Balancing Addicts -> soft vs. hard enforcement Jon A. Lambert
- Balancing Addicts -> soft vs. hard enforcement Matt Chatterley
- Balancing Addicts -> soft vs. hard enforcement Adam Wiggins
- Balancing Addicts -> soft vs. hard enforcement Joel Dillon
- SfD: Clientside Caching Nathan F Yospe
- SfD: Clientside Caching Jon A. Lambert
- SfD: Clientside Caching Nathan F Yospe
- SfD: Clientside Caching Chris Gray
- SfD: Clientside Caching Jon A. Lambert
- (subject missing) J C Lawrence
- Balancing Addicts Ling
- Balancing Addicts Richard Woolcock
- Balancing Addicts Ling
- Balancing Addicts J C Lawrence
- Transport layer (UDP vs TCP) Ben Greear
- Transport layer (UDP vs TCP) Niklas Elmqvist
- Transport layer (UDP vs TCP) Jon Leonard
- Transport layer (UDP vs TCP) Ben Greear
- Transport layer (UDP vs TCP) Jon Leonard
- Transport layer (UDP vs TCP) Ben Greear
- Transport layer (UDP vs TCP) Chris Gray
- Transport layer (UDP vs TCP) Niklas Elmqvist
- Transport layer (UDP vs TCP) Jon A. Lambert
- Transport layer (UDP vs TCP) Ben Greear
- Time Limits? Jon A. Lambert
- META: topic and thread culling (was Balancing Addicts -> soft vs. hard enforcement ) J C Lawrence
- (subject missing) J C Lawrence
- XShipWars J C Lawrence
- (fwd) INFO: [client] Chaco looking for new parent for Pueblo J C Lawrence
- SIMULATING FUTURE HISTORIES: THE NAU SOLAR SYSTEM SIMULATION & MARS SETTLEMENT J C Lawrence
- (fwd) Functional Security J C Lawrence
- (fwd) Functional Security Ling
- (fwd) Functional Security Chris Gray
- (fwd) Functional Security Matt Chatterley
- (fwd) Functional Security Miroslav Silovic
- (fwd) Functional Security Felix A. Croes
- (fwd) Functional Security J C Lawrence
- SIMULATING FUTURE HISTORIES s001gmu@nova.wright.edu
- Character development [was ] Matt Chatterley
- Character development [was ] J C Lawrence
- Character development [was ] Matt Chatterley
- Character development [was ] Travis Casey
- Character development [was ] J C Lawrence
- Character development [was ] Travis S. Casey
- Character development [was ] Marian Griffith
- Character development [was ] Travis S. Casey
- Character development [was ] Vadim Tkachenko
- Character development [was ] Travis Casey
- Character development [was ] Vadim Tkachenko
- Character development [was ] Travis Casey
- Character development [was ] Vadim Tkachenko
- Character development [was ] Marian Griffith
- Character development [was ] Vadim Tkachenko
- Character development [was ] Marian Griffith
- Character development [was ] s001gmu@nova.wright.edu
- Character development [was ] Marian Griffith
- Character development [was ] J C Lawrence
- Character development [was ] Cimri
- Character development [was ] J C Lawrence
- Character development [was ] s001gmu@nova.wright.edu
- Character development [was ] Caliban Tiresias Darklock
- Character development [was ] Caliban Tiresias Darklock
- Character development [was ] Vadim Tkachenko
- Character development [was ] Ben Greear
- Character development [was ] Matt Chatterley
- Character development [was ] J C Lawrence
- Character development [was ] Matt Chatterley
- Character development [was ] Travis S. Casey
- Character development [was ] J C Lawrence
- Character development [was ] Koster, Raph
- Character development [was ] J C Lawrence
- Character development [was ] Koster, Raph
- Character development [was ] Alex Bertoglio
- Character development [was ] J C Lawrence
- Character development [was ] J C Lawrence
- Character development [was ] John Bertoglio
- 3D engines for MUDs Niklas Elmqvist
- 3D engines for MUDs Chris Gray
- 3D engines for MUDs J C Lawrence
- 3D engines for MUDs Niklas Elmqvist
- 3D engines for MUDs Chris Gray
- 3D engines for MUDs Ling
- 3D engines for MUDs Koster, Raph
- 3D engines for MUDs Mike Sellers
- 3D engines for MUDs Niklas Elmqvist
- 3D engines for MUDs Koster, Raph
- 3D engines for MUDs Ling
- 3D engines for MUDs s001gmu@nova.wright.edu
- Dynamic Loading of Modules Niklas Elmqvist
- Dynamic Loading of Modules Greg Munt
- Dynamic Loading of Modules J C Lawrence
- Parlez vous NPC? Matt Chatterley
- Parlez vous NPC? Vadim Tkachenko
- Parlez vous NPC? Matt Chatterley
- Parlez vous NPC? Chris Gray
- Parlez vous NPC? Matt Chatterley
- Parlez vous NPC? Nathan F Yospe
On Fri, 20 Mar 1998, Matt Chatterley wrote:
:Richard Woolcock asked me to make a post about something I mentioned as an
:offhand comment while dissecting one of the more annoying advertisements
:posted to rec.games.mud.admin in some time.
:I made an allusion to NPCs capable of conducting semi-coherent
:conversations with players, without following predefined patterns, and not
:using strictly pre-set responses, but rather, creating their own replies.
Hmm. Interesting. I suppose this would be a good time to point out that, as
the guy that loves his language handling AIs, this makes me blanche. Either
you're going to end up spending many cycles on it, or you're going to have
a pretty lame AI. But... I like a good challenge, so let me at it.
:Sadly the system I have in practise is neither as advanced as this, nor
:functional (I improved it, thus, it doesn't work now), but, this is the
:design model to which I am working, and with the exception of the last
:point, the system worked. An overview:
:The NPC receives a sentence from the player. The method of delivery is
:arbitary (I used directed speech, aka: 'say NPC, this is a sentence for
:you.' but this could equally be done with a separate command).
Just a note: I'd have to handle this clientside... meaning (and I already do
try to do this with spoken text before exporting it) I would be having the
client tokenize all text and send the tokenized form to the server... but I
do send the complete text to all affected clients as well. I'm working on a
method to avoid involving the server in the transfer now. In any case... the
stuff I do is for input only, I haven't tried to stretch my local descriptor
program to the point that it could pose as an entity...
:The NPC takes this sentence, and performs some basic tests on it,
:determining the subject matter, sub-topics, and the overall tone of the
:statement. This is the hard part. One simple way to go about it is by the
:use of topic and context dictionaries, a sample entry in which might be:
:Weather:
: Good:
: sunshine, dry, warm, pleasant, breezy
: Bad:
: blustery, cold, showers, snow, blizzard, rain, sleet, hail
:Thus, when our NPC is fed the sentence 'What do you think about the
:weather? All this snow makes me miserable, how about you?', it dismantles
:it into components:
:what, do, you, think, about, the, weather (question)
:all, this, snow, makes, me, miserable
:how, about, you (question)
Mind if I try these myself?
What do you think about the weather? All this snow makes me miserable, how
about you?
I don't have the "what do you think about X?" in my phrase database, sadly.
Maybe I'll add it. Without it... I have [nature query] [action query]
[subject] [verb] [relation] [object] - which parses to "What is the nature
of the query about the action thinking with respect to the weather?" This
obviously needs some work. Perhaps if I shift the weight on "what"... Put
in conjunction... unfortunately, though my parser is great with verb-led
commands, it has a hard time outside of that, even with the newish
extensions. Let's see... It would be able to parse the first half of the
second line... except, perhaps, for the "all this" part. Let me see... no,
the design does allow for a correct parse of "all this"... but unless there
was snow on the ground, it would become confused indeed. In fact, from
memory, I think an AI hooked up similarly to the imput interpreter's query
would respond "All what snow?" Which kind of fits... "How about you?" is
taken correctly, mainly because I wanted to be able to handle "Are you
hurt?" "No. How about you?"... The context is even taken correctly, I think.
Of course, there is nothing in place to determine whether an AI is miserable
due to the snow... *sigh*
:giving it three statements to deal with. Next we need to remove words
:which are of no value to us (for instance 'and', 'the', 'a' and so forth),
:leaving us with (writing from the NPCs point of view):
There is value to some of those words. Make sure you at least keep them in
a referenceable form...
:1. (directed at me) think about weather (question)
:2. (directed at <player>) snow miserable (statement)
:3. (directed at me) about (question)
:This incidentally shows up one flaw in the system - simple statement
:portions (such as #3 above), are mangled very badly and may no longer be
:useful. Anyway, to continue.
Hmm. I have a lot of words cross referenced to sets...
:The NPC takes each statement, determines the topic of discussion, the
:tone, and any subtopics:
:1. Weather, neutral tone (question), give opinion
Um. Is this universal? Ask an NPC about how their wife is in bed, and they
don't crack you over the head (or alternatively describe in detail (I see
a slew of censored marks coming out of said NPC's mouth) how much better
his wife is than yours...) Mind you, I don't do this either... I've put a
lot of thought into making certain NPCs handled by "headless clients", and
the rest essentially either nonsapient or justified in their stupidity/
inability to communicate (aliens with no language that a PC can ever learn,
Mechanicals, hive minds that use a communication method beyond your ability
to tap into...) ... this is especially attractive because the set of tables
that allow a client to handle input from a player and generate output almost
handle generation of believable conversation. In other words, most _human_
and _humanish_ (meaning close enough to be played by a human player, like
the various available PC species... and I do intend to allow PCs on both
sides of the war eventually) NPCs will be handled by a set of local
stripped-down clients with sleeper codes to keep them from overstimulating
the landscape when not needed, and tasked with fooling players into
thinking that they are just particularly RP-fanatic PCs filling certain
roles... I think I can do it, too, especially if admins animate these people
on a regular basis to throw off predictability, doubly so if I keep behavior
learning feedback on when the admin has usurped control.
:For #2, snow is listed under 'weather: bad:' above thus, and 'miserable'
:might appear in a general dictionary of 'overall negative words' thusly:
:2. Weather, bad tone (statement), none
:3. Indeterminate, neutral (question), give opinion
:The precense of 'about' in #1 and #3 as well as 'think' in #1 allow the
:NPC to know that it is being asked a question (along with the rather
:obvious hint the ? symbol provides), and it is able to determine that it
:should give 'its opinion' (definition or determination of this is not
:important yet). #2 is more straight forward and provides it with more
:information about the situation it is in.
The problem is trying to analyze a statement that is far too vague... now,
when you have the statement preprocessed for meaning (not sentance by
sentance, but the whole lot) and given to the NPC for a response, you lose
the keyword capacity, but gain a much wider base to create an illusion of
original thought. That part is good. But doing it sentance by sentance is
a good way to lose context... my method incurs a potential for
misinterpretation of the whole statement, but it does so in an internally
consistant manner. You won't get the impression that word X threw off the
AI, you would have that sort of (realistic) situation where you were saying
X, and they were hearing Y, and everything you said was taken wrong.
:If it groups this information, it has two clear groups:
:1. Respond about weather (neutral tone). <Player> sees the weather as bad.
:2. Respond (neutral tone).
:Since #2 has no subject, but the NPC knows it is attacked to <player>'s
:statement about the weather, it can determine that the player really
:wants:
:Respond about weather (neutral tone). <Player> sees the weather as bad,
:respond (neutral tone).
:This gives it two responses to make about the weather, which it can
:simplify to:
:<player> sees the weather as bad, respond (neutral tone).
:Since the player applies a negative tone, the NPC can add in the
:assumption that the weather really is bad:
:The weather is bad. What do I think?
:Which leaves us with the big question. How does the NPC respond?
Again, why make the stimulus-response absolute? If the NPC doesn't grok the
PC's conversation (or if it finds it uninteresting) blowing the PC off is a
good enough response.
The watchmaker glares at you. "What are you blathering about? Are you
going to buy a watch, or aren't you? I haven't time for a discussion
about the weather."
This is, as I see it, a perfectly reasonable response to a topic that had
no meaning to this particular PC. The topic parsed, but didn't actually have
an effect, so it was tossed back as a "go away" message.
:One way is by having an indexed set of responses (so multiple responses
:for each tone, within the weather, some generic, some specific, and so
:forth). Another is of course to be far more sophisticated and go for the
:fully dynamic build. Given that the information the NPC has is 'weather,
:bad', can it really build a sentence from a bank of words?
:This wordbank would have to be very sophisticated, giving linkages between
:words and topics, and so forth - this begins to cause us problems in terms
:of the base data required. However, if our miracle NPC knows we are
:discussing bad weather (or assumes - either is sufficient for now), it can
:tie together a very simple 'test' sentence, and simply reply:
:"I think the weather is bad."
:That isn't terribly impressive given all this effort, is it?
:Mind you, if you begin to construct a suitable databank, and include
:methods for the NPC to teach itself, who knows what one could achieve? By
:implying that it might teach itself, I really mean creating a very
:sophisticated parrot like entity.
:"NPC, this snow is horrible, it sucks!"
:and later, we receive
:NPC: "I think the weather sucks.", because it is able to make the
:following connections:
:snow -> sucks
:horrible -> sucks
:There are still a thousand and one problems which I have deliberately not
:described (I wanted to put across the system outline in a basic fashion,
:plus I'm very tired). The obvious problems are actually amongst the hard
:ones to solve, and I await your blowtorches. :)
The problem with parrots is, they sound like their owners. I'd much rather
NPCs learn from a team of admins that control them than from the unwashed
player-base... Just my 2 copper shillings
--
Nathan F. Yospe - Aimed High, Crashed Hard, In the Hanger, Back Flying Soon
Jr Software Engineer, Textron Systems Division (On loan to Rocketdyne Tech)
(Temporarily on Hold) Student, University of Hawaii at Manoa, Physics Dept.
yospe#hawaii.edu nyospe#premier.mhpcc.af.mil http://www2.hawaii.edu/~yospe/ - Parlez vous NPC? Matt Chatterley
- Dynamic Loading of Modules Niklas Elmqvist
- Dynamic Loading of Modules Chris Gray
- Dynamic Loading of Modules Jon A. Lambert
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? Jon A. Lambert
- World Persistence, flat files v/s DB v/s ?? Greg Munt
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? s001gmu@nova.wright.edu
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? Ross Nicoll
- World Persistence, flat files v/s DB v/s ?? Ross Nicoll
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? s001gmu@nova.wright.edu
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Jon A. Lambert
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Jon A. Lambert
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Joel Dillon
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Matt Chatterley
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Adam Wiggins
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Orion Henry
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Nathan F Yospe
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Vadim Tkachenko
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Greg Munt
- World Persistence, flat files v/s DB v/s ?? Ben Greear
- World Persistence, flat files v/s DB v/s ?? Jon A. Lambert
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- World Persistence, flat files v/s DB v/s ?? Chris Gray
- World Persistence, flat files v/s DB v/s ?? J C Lawrence
- Jukebox Vadim Tkachenko
- Another recruit for the list? Joel Dillon
- OT: Martin Keegan J C Lawrence
- Old code Joel Dillon
- Old code Michael Hohensee
- UML/Commercial v Free Muds Greg Munt
- UML/Commercial v Free Muds Nathan F Yospe
- UML/Commercial v Free Muds Jon A. Lambert
- Heightfield Terrain Rendering Paper Niklas Elmqvist
- (subject missing) J C Lawrence
- (fwd) Roleplaying J C Lawrence
- (fwd) Roleplaying s001gmu@nova.wright.edu
- (fwd) Roleplaying Katrina McClelan
- (fwd) Roleplaying Ling
- (fwd) Roleplaying J C Lawrence
- (fwd) Roleplaying Travis Casey
- Predicting future motion intelligently J C Lawrence
- META: New Mail server and ISP J C Lawrence
- (rec.games.mud.admin) Roleplaying (fwd) Nathan F Yospe
- Persistant storage.... My current idea. Ben Greear
- Persistant storage.... My current idea. Jon A. Lambert
- Persistant storage.... My current idea. Ben Greear
- Persistant storage.... My current idea. J C Lawrence
- Persistant storage.... My current idea. Ben Greear
- Persistant storage.... My current idea. J C Lawrence
- Persistant storage.... My current idea. Ben Greear
- Persistant storage.... My current idea. Chris Gray
- Persistant storage.... My current idea. Ben Greear
- Persistant storage.... My current idea. J C Lawrence
- Persistant storage.... My current idea. Ben Greear
- UML & CORBA Greg Munt
- [MUD-Dev]: smoothing J C Lawrence
- [MUD-Dev]: smoothing J C Lawrence