When humans interact we usually have a very good idea (barring
disability) how the other person is responding emotionally to our
inquiries. The person's emotional state persists throughout several
topics of conversation, sometimes changing slowly, sometimes quickly,
and sometimes irreversibly. This could be handled by some kind of
multi-emotional state machine, if necessary, and by personalized code
for each NPC.
The key point is that processing this level of emotional availability
isn't something we do consciously. We don't take extra time (an "extra
move") to examine our conversation partner after each exchange. How
difficult would it be to include the NPC's emotional-conversational
state in a status bar at the top of the screen, or in some format like
>ASK ANGELA ABOUT BOB
(Angela appears concerned.)
"I don't know what happened to him. I think he might have turned into a
Angela now appears distraught.
(to Angela, who appears distraught)
"Please, no more!"
Angela appears distraught.
>ASK ANGELA ABOUT BOB
She is too distraught to respond.
One solution to the problem of NPC interaction is to give the player
adverbs by which he can explicitly say *how* he wishes to interact with
the NPC. To be useful this system must respond differently in most
cases depending on which emotional approach is used. I don't want to
take control entirely out of the hands of the player, but giving the
player full control of a range of emotions simply multiplies the number
of intelligent and varied responses the programmer must write.
Some questions are inherently more damaging to our conversation
partner's ego than others, no matter how we phrase them. In
conversation we generally don't ask stuff about somebody's sex life, or
their medical condition, or their salary, without some risk that the
person will take it the wrong way. Only in some specialized cases are
these questions considered appropriate.
How difficult or desireable would it be to create mix-in classes for
controlling emotional context of various ask-about topics so that ASK
ANGELA ABOUT BOB'S DEATH would automatically be considered a prying,
personal question, but ASK ANGELA ABOUT HER NEW SHOES would not? What
about emotional priorities, where if Bob has become a vampire, asking
Angela about her shoes is likely to generate the response
>ASK ANGELA ABOUT HER NEW SHOES
"How can you be asking about my new shoes at a time like this?"
The biggest difficulty I see in creating any kind of classes to govern
this behavior is that different NPCs would react differently to various
stimuli. How could (or should?) an emotion-state mix-in class be
created to consolidate NPC emotional reactions to a subject? Or should
all NPC behavior be written in procedural code on a piecemeal basis?
1. You want your npcs to display changes in their emotional state
automatically rather than forcing the player to examine them if they
want an update on their current emotional status.
Micheal Gentry's Little Blue Men had an emotional status bar for the pc
which would change depending on what actions you took. I think that
worked for that particular situation, but I'm dubious about how well
that approach would work with an npc. Displaying "Angela's Feeling:
Distraught" in the status bar doesn't seem as effective as randomly
showing an appropriate emotional gesture every now and again, like
"Angela's face is haggard and drawn", "Angela covers her face with her
hands," "Angela is pacing back and forth like a madwoman", etc. You
would have to take care not to display these messages too often and you
might not want to repeat them, but I think it would certainly make the
npcs appear more lifelike.
2. You'd like to give the player the ability to interact with npcs in
an emotionally sophisticated way, but you're concerned about the amount
of work that it would take to make that happen.
One way you could alleviate the problem is to limit the sort of
emotional overtures that a player can make according to the context of
the situation. Dialogue menus are a good way of doing this. >Ask Angela
about Bob might bring up a menu with the following choices:
1. So, how's Bob doing?
2. You look terrible. Has something happened to Bob?
3. Get ahold of yourself and tell me what's going on with Bob!
I think this works better than a long list of emotional adverbs,
because most adverbs will only be appropriate for a limited number of
situations, but players will be trying them out at every opportunity.
Do you really want to have to write a response for why it's not
appropriate for the pc to >Ask mother about cookies lustfully?
Some games that have experimented with implementing adverbs would be
Varicella and Forever Always. You might try taking a look at them.
3. You'd like for the npcs to respond in an emotionally appropriate way
to different ask-about topics according to both the nature of the
question and the current emotional context, and you're wondering if you
should use a class-based or a procedural approach to implement this.
Um, tough question. Can't shoot from the hip on this one. Think, think,
I'll have to pass on this one. My programming experience is a bit
limited, so I don't think my advice will be particularly helpful.
Humans are good at reading emotional states even from simple schematic
views of a face, so I'd use emoticons in a fixed location on the screen,
maybe on the status line. Maybe the second line of the status bar could
list everyone in the room and show their state:
Angelica :-) Bob :-( Charlie :-| Doris >:-(
Ideally, you'd like the icon at a fixed location, so that you'll notice
with your peripheral vision if and when it changes, perhaps you could
have it blink as it changes. As a person enters the room, they get a
slot. If someone else leaves, the slots should *not* be rearranged to
close gaps, but if a person leaves and later returns, they don't need to
be guaranteed the same slot later. Small graphic icons would be great,
ASCII emoticon if graphics aren't avaiable, and you'd like a option to
turn off the extra status line and in-line a description as part of the
ShowPrompt routine. (In that case, give the player the option of
showing emotional states every turn or only when they change.) This
last bit is for the benefit of the visually handicapped. Here's an example:
You are in a living room. Angelica and Bob are here.
(Angelica looks happy; Bob looks sad.)
> TELL JOKE
Everyone laughs at your joke.
(Bob looks happy.)
> 2. You'd like to give the player the ability to interact with npcs in
> an emotionally sophisticated way, but you're concerned about the amount
> of work that it would take to make that happen.
> One way you could alleviate the problem is to limit the sort of
> emotional overtures that a player can make according to the context of
> the situation. Dialogue menus are a good way of doing this. >Ask Angela
> about Bob might bring up a menu with the following choices:
> 1. So, how's Bob doing?
> 2. You look terrible. Has something happened to Bob?
> 3. Get ahold of yourself and tell me what's going on with Bob!
> I think this works better than a long list of emotional adverbs,
> because most adverbs will only be appropriate for a limited number of
> situations, but players will be trying them out at every opportunity.
> Do you really want to have to write a response for why it's not
> appropriate for the pc to >Ask mother about cookies lustfully?
This hybrid mix of ask/tell with menus is something I've been considering
in my long-time work-in-progress. Though it's a lot more work, I think it
would work better for a game that focuses on in-depth human interaction.
Are there any examples of games using a system like this?
==--- --=--=-- ---==
Quintin Stone "You speak of necessary evil? One of those necessities
st...@rps.net is that if innocents must suffer, the guilty must suffer
www.rps.net more." - Mackenzie Calhoun, "Once Burned" by Peter David