Group conversations

Started by
32 comments, last by JSwing 23 years, 5 months ago
There isn''t a single CRPG on the market today that models group conversation. The player can only talk to one NPC at a time. This limits the possibilites for social interaction. To put it the other way, having a conversation engine that can handle group conversation dratically increases the possiblities for social interaction. Today: The stranger, a heavily armored warrior, walks into town and wanders into the local thieves guild by chance. He sees Three thieves sitting at table and the guild master sitting by himself. the stranger walks up to one of the thieves and says, "Greetings. What can I do for you?" "You''ll have to talk to the guildmaster," says one of the thief. "We''re just irrelevant NPCs." So the warrior walks up to the guild master. "I could use your help, stranger," says the guildmaster, and proceeds to provdie all sorts of interesting information to the complete stranger, in the end securing only the stranger''s word that he would return with the foo. Tomorrow: The stranger, a heavily armored warrior, walks into town and wanders into the local thieves guild by chance. He sees Three thieves sitting at table and the guild master sitting by himself. the stranger walks up to the guild master and says, "Greetings. What can I do for you?" The guildmaster looks him over and replies, "If I need someone killed, Sir Nosy, I''ll let you know. Now bugger off!" Undaunted, the hero wanders over to the three thieves, and engages in chit-chat. Our hero is cleverer than he looks, though, and soon bends the conversation towards the plans of the local guild. The three thieves don''t trust the stranger, but they do let slip a few details about an object called foo. Or an even better application would be a James Bond style repartee in a crowded gambling casino. So how to do it? well, first of all, as the year winds down, you will be invited to a lot of holiday parties. Office parties, college parties, what have you. In general I loathe the things. Last year, my s/o dragged me to her office Xmas party and I was bored out of my skull. So this year, if you go to one of these things, take notes about the strucutre of the conversation. Not the words themselves, but the underlying mechanisms. Consider it research. Here''s what I have so far: Conversation is an object (intangible, but an object nonetheless). It is created as a result of a player action (converse). Linked to this object are the people in the conversation, so it needs a reference/pointer to each of the characters. The conversation also has a few attributes: seriousness (which goes from silly to raging debate), current subject. The current subject starts off as idle chatter or meaningless conversation. The characters each have an initiative based on charisma/personality rather than quickness. The characters get a bonus to the intiative if the current subject is either themself or a subject that the character knows about. During the character''s conversation turn they get to say something. The character gets to choose to use humor, flattery, subtlety, or provocation. There may need to be a neutral (statement). The character may attempt to alter the subject, alter the mood of the conversation, or engage another character. There may need to be a neutral here too. Engaging another character would be akin to garnering the support of another person, who then reinforces what the character is saying or helps to shift the conversation. Then following some rules (not yet defined) some functions do their math (I don''t have these defined yet either), and the conversation shifts through the imaginary space of the conversation possibilities. If a character gets frustrated in their attempt to do something with the conversation, they may leave, either out of boredom ("they''re talking about CRPGs again") or anger ("what is it with you and the magic foo!?!"). So I think there needs to be a mood for each of the participants or some sort, and a way to have a few basic personality types influence what they will try and do with the conversation. The player can use the mechanism to try and fish out information, even having the other folks in the group help keep the focus on the target while blissfully unaware they are doing what the player would like. Or use it as a springboard to seduce someone. Or even cheer up a depressed party member. Other suggestions?
Advertisement
Awesome! Nice to see someone thinking the same thing!!!!

Until we get some serious natural-language processing in games, I think a more "object / action" based conversation system is the way to go. Like you, I''ve been studyiing how people gab, and what''s going on when they do so (movies are good, too, for more direct, to the point dialog)

Since we can''t fluidly represent conversation, my thought has been to use a mix of conversation "objects" and "actions" along with abstract topics and canned dialog.

I think your variables are right on. Also using alternating turns like you propose sounds good (this way, you can get multiple people taking turn, or interrupting each other, or you interrupting them...)

Some thougths:

Pre-conversation
==================

Tag / Label / Reputation

When you walk into a room, or encounter a group, you should get a few labels attached to you, and the system should give you enough information to form your own labels. So if you were to step in with lots of fancy jewels into a smoke filled bar frequented by lowlifes, you''d be "tagged as ?"

These tags, and other factors (job, reputation, species, class, gender, etc) about your character, determines who will and won''t speak to you, or how easy it is to get a conversation going, or information, and how you''re treated. (I''d abstract this, for example, and say to the player "They''re treating you like a fool", or "It''s obvious he doesn''t respect you")


Group Integrity

Goes along with mood. Mainly an abstraction level to modify NPC behavior, so that you can get things like "mob mentality" or conformity. Also indicates how insular and open to outsiders the group is, independent of who you are. Gives you the option of an NPC who won''t talk to you in a group, but will if alone (where "group integrity" is near zero).


Mood / Tone

The mood or tone of the group / room is based on who''s there, what''s happening in your game world, and who enters or exits. The mood has a color / type and a magnitude. So moods could be grim, or happy, or whatever, at various levels

The player, using the right conversation actions, can affect this. So cracking a good joke when things are grim could help lighten the mood with friends, or get you ostracized if you''re a complete stranger.

A good way to implement, btw, might be to average personality values of the PCs and NPCs in a group. As players enter and leave, this can change the nature / mood of the group (like the big bad law man showing up in the Old West gambling parlor)


During Conversation
=====================

Status
Affected by conversation objects. Applies to self and other. You can raise or lower. Using conversation objects, you should be able to affect status, and thus alter the mood and your reputation / label / tag.

Raising self status is akin to bragging (a conversation object). Lower self status could be a resulf of apology, or self-deprecation. Raising the status of another is akin to praise and flattery, lowering it could be a result of accusations, or insults.

Different personality types should respond differently to different levels of status. Some will be intimidated, others threated, others attracted. Bikers, for example, might hate a high status cop, but not be as afraid of one who has been disgraced; whereas the motherly caretaker NPC might be more open to the disgraced cop, out of sympathy.


More Objects
-Questions-
Who is
Where is
What is
Generic Ask for / Demand (gold, information on the assassination, etc)

-More complex-
Ask for explaination / demand explanation (this needs a notion of historical actions that can be treated like objects; example: "why did you run?" or "why did he steal?" I''m missing something here...)

-Misc-
Offer
Teach


-Objects-
Historical facts (king''s assassination, settling of the colony)
Personal information on self
Personal information on another
Location of person / thing
Special knowledge (launch codes, secret password)


More soon...
I''m going to post more on this later. If we''re on the same wavelength, maybe we can brainstorm:

-how the player can make statements: this could be the foundation of truths, lies, and player opinions; lots of uses for this!!!! (rabble rousing!! )

-how the player can be interrogated, or let slip information, and whether or not it''s a good thing to model

-in 3+ way conversation, how you can support, or denounce other players; or plans of actions, or opinions... the example I''m thinking of is court intrigue, and swaying the king to, say, invade or not invade, or spare someone''s life or not; and how NPCs can do the same for you

... thoughts?

--------------------
Just waiting for the mothership...
--------------------Just waiting for the mothership...
This is facinating... Might be good to implement in IOL/NPCAI

*dwarfsoft begins jotting down notes in the document*

-Chris Bennett of Dwarfsoft - Site:"The Philosophers'' Stone of Programming Alchemy" - IOL
The future of RPGs - Thanks to all the goblins over in our little Game Design Corner niche
          
Great ideas here.

Some of my thoughts:

Relations
---------
Companion: spouse or best friend
Associate: regular contact
Aquaintance: I''ve interacted with you before
Stranger: I havn''t interacted with you before
Family member: We are of the same blood

Deliberate vs. involuntary reaction
-----------------------------------
We may deliberately be flattering, informative, etc. Our temperament though is partly involuntary. We may react with embarrasment, anger, or pride too name a few, and we may have little control over it.

Group tone
----------
Often moderated by the minimal relation in the group. Example: Two close people A and B and one aquaintance C. C is an aquaintance to B and a stranger to A. The weakest link is the stranger link between A and C.

Agents vs. NPCs
---------------
I would tend to define or think of an NPC as a character controlled by an omnipotent program which tries to best model the actions of the NPC based upon all the program code the porgram can bring to bear. I would define an agent as a seperate process that models the agent''s actions and thoughts at the knowledge level and is independent of the ''main'' program. The agent knows what the agent knows, and must interface to the game world. I lean towards the agent camp.

Knowledge Transfer
------------------
I am a strong proponent of actually creating knowledge transfer. If a player tells an agent where an object is, the agent actually receives this information. Knowledge of spatial relation plays a part in the effective processing of this information. In other words, agents should be able to reason about ''on top of'', ''inside'', ''next to'', etc.

Situational Awareness
---------------------
There is usally a context associated with any question. If a player asks ''Where is x?'' then an agent might consider the following:
Do I know where x is?
Is there a reason I shouldn''t answer.
Should I lie about where x is.

If the agent knows x is in the drawer of the desk in the office on the 3rd floor of the research institute, the agent needs to consider this:
Does the asking person know where these ''containers'' are? If we are already on the 3rd floor, then saying the object x is in the research institute is not very informative.

This may sound absurdly complex to program, but when you start thinking at the knowledge level, and look into alternative methods to develop such knowledge, it becomes doable.


_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
I was thinking about how story based games don''t really have this problem. Then I remembered something about NPC conversations that I don''t think has came up (at least that I''ve noticed). If you''re talking to a character who gives you some important piece of info like "The evil one''s shield frequency is 3.14159265 dH," and you forgot what it was and need to ask him again, how does the NPC respond. Especially after you''ve asked him for the 20th time. Your reputation with that character could go down or something, but should the player really be penilized for playing your game fo 48hrs streight and forgetting little details?

Is there any particularly good way to revisit conversations?
quote:Original post by kseh

I was thinking about how story based games don''t really have this problem. Then I remembered something about NPC conversations that I don''t think has came up (at least that I''ve noticed). If you''re talking to a character who gives you some important piece of info like "The evil one''s shield frequency is 3.14159265 dH," and you forgot what it was and need to ask him again, how does the NPC respond. Especially after you''ve asked him for the 20th time. Your reputation with that character could go down or something, but should the player really be penilized for playing your game fo 48hrs streight and forgetting little details?

Is there any particularly good way to revisit conversations?


Slightly off topic, but I think logs / journals are the best way to handle this. I hold System Shock up as an awesome example (though conversation''s really one way). It records goals and the important information like the evil one''s sheild frequency (if you''ve done the right thing to trigger it).

Given that we''re past the days of making players break out the graph paper, I think this is the only way to go.

Now, if you have a log and the player DOES go back... maybe then it''s okay for the NPC to get irritated ("Don''t you ever keep a log?!?!" Then your log icon flashes )


--------------------
Just waiting for the mothership...
--------------------Just waiting for the mothership...
More development. How does this sound?

First we need a representation of character knowledge. I''m still pondering the detilas of where it is stored and what form it''s in, but it seems to me that it would have to have:

An object (or reference to one)
Modifier (what, where, how -> to do action or skill, history ->general info text)
Depth / Level of detail
success and failure messages for acquiring a new node

From this we can create a network of nodes. Each node consists of a unique set of data and represents a unit of information. Nodes that differ by only one datum are considered adjacent.

Each NPC agent would have a network representing what they know, or an appropriate set of pointers.

Conversation object:
1) Connect the knowledge nodes of multiple characters with a common root (trivial knowledge, depth 0).

2) The conversation keeps focus on a current node.

3) The conversation has a level of seriousness / casualness, which influences the relative success of the modes of speaking.

4) The conversation has a comfort level (depth) trying to move to topics at greater depth meets increasing resistance, or perhaps loss of player status.

5) Each participant has a status that relects how much of the conversation they dominate? It works like an intiative, allowing them greater influence over directing the conversation. It should be based on character personality traits / skills modified by their intimacy with the other folks there? It can also be modified during the conversation. -> This still needs some work.

6) On a turn, a character can:
a) Make a statement about the current conversation node, if they have that knowledge. This shares the node to everyone listening, they all acquire that information if they meet the minimum requirements for understanding it.

b) Ask a question which can move the conversation to an adjacent node. A character might be able to move to a node that is further away, with a loss of status proportional to the depth of the node and the distance away.

c) Ask a question that shuffles the order of who is speaking next, temporarily popping up someone from lower on the list

d) Make a statement to affect the current status of themselves or another player.

e) Make a statement that affects the current level of seriousness of the conversation

Doing each of these actions would require a style:
Humor
Netural
Force
Subtlety
?

The combination of style and level of seriousness would affect how well the action would succeed, and how the move affects the character''s status.

If a character is unable to successfully take one of the actions listed above, either because they simply fail or they can''t speak to the subject, their status drops. When it reaches 0 they react negatively, usually leaving the conversation, or in the case of interrogation, breaking down.

There would also need to be some circumstances under which an NPC will respond so that the player can get something useful. Repeated attempts to deflect an inquiry, for example, might also cost status (?).

Do we need another variable here, like NPC mood, or do we hand that off to the NPC AI?
quote:Original post by JSwing

First we need a representation of character knowledge. I''m still pondering the detilas of where it is stored and what form it''s in, but it seems to me that it would have to have:

An object (or reference to one)
Modifier (what, where, how -> to do action or skill, history ->general info text)
Depth / Level of detail
success and failure messages for acquiring a new node

From this we can create a network of nodes. Each node consists of a unique set of data and represents a unit of information. Nodes that differ by only one datum are considered adjacent.


JSwing,
Nodes are the right direction. I would definitely get away from predefined data structures. They waste space where knowledge is lacking, and are not flexible enough to expand.

The way to go is really symbol processing. The simplest, and quite effective way is to use what is called a frame, slot, value triplet. It is also known as a identifier, attribute, value triplet, or an augmentation.

Here are some examples of augmentations:
----------------------------------------
Ball inside Bag
Bag on_top_of Table

Bill friend_of Bob
Bob aquaintance_of Sam

Ball is the frame, inside is the slot, and Bag is the value. However, note that Bag is the frame in the second fact.

These augmentations exist as triplets in memory. There is essentially no limit to the amount of information you can store about Ball or Bag if you want to.

For example, we could say:
--------------------------
Bag made_of Paper
Bag volume_in_cubic_inches 1000
Bag color Brown

We could also say:
------------------
Paper is_a combustible_material

You can then encode axioms that are known:
------------------------------------------
(x made_of y) & (y is_a combustible_material)
-->
(x is flammable)

_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
I''ve also thought a lot about this kind of system, but the real problem comes when you try and record all of this speech and try and get it to sound natural. Voice acting is going to be much more important in the next 10 years, and until we get programs and consoles that can synthesize the human voice, This kind of thing would never work perfectly. (I''m a fan of perfection).

I think in a game it would be great if NPC''s that you knew or that had important information would come up and talk to you in real-time. If someone has something to say, only your presence should be required to trigger it. And if you have something to say, your character should just come right out and say it.

another idea that adds a twist to the whole thing:

Analog mood. The analog L/R triggers control your mood during speech. One makes you angry and aggressive, the other happy and polite. In response to questions, Happy indicates a positive or ''yes'', while angry indicates a negative ''no'' response. This could translate to other parts of gameplay too. When angrily approaching a woman, You might slap her, but when happily approaching you may kiss her. The consistency and appropriateness of your manners could drastically affect your relationships with NPC characters.
Well, I am currently designing my NPC AI system. Currently I use a neurofuzzy network, with fuzzy variables for the character mood, linked in a network where those values are affected by incoming events and generate reactions.
As the reactions should depend on the knowledge of the character, I was thinking of integrating knowledge into the network...
This would allow the character reactions to depend on what was previously said... This way, if the player want some info, he needs to ask the right way.

Edited by - DungeonMaster on November 18, 2000 11:20:58 AM
------------------"Between the time when the oceans drank Atlantis and the rise of the sons of Arius there was an age undreamed of..."

This topic is closed to new replies.

Advertisement