Modeling conversation flow: actions in conversational context

[This is part of a series of discussions on the craft of modeling conversation. For previous installments, see my original Homer in Silicon article which lays out the basic elements of the model, and previous blog posts on the issue.]

Giving and showing.

In addition to ASK and TELL, many IF games retain the convention that the player can give or show objects to other characters. Though these are not strictly conversational actions — that is, you can give or show an object without opening your mouth — they involve communication, and therefore we may want to have the NPC’s reactions be affected by the other conversational context that’s going on. Besides, we may often want ASK BOB ABOUT DAGGER to gain the same response to SHOW DAGGER TO BOB, if the point is to get Bob to reveal some specific bit of information about the object.

My preferred way to do this is to have quips to represent what Bob says about the dagger, and then redirect SHOW DAGGER TO BOB to an available quip that mentions the dagger. That means that we can write follow-up questions about the object, cue follow-up comments for Bob, and otherwise track the exchange just as though it were part of the standard conversational structure.

We can even have special conversation about the dagger in special conversational circumstances. For instance, we might want

You hold up the dagger you found, raising your eyebrows.

“An antique,” Bob says. “My father was a bit of a collector.”


“Sheila’s dead,” Bob says. “Stab wound in the upper gastric area.”

You hold up the dagger you found. “Think this might be the weapon? If so it’s been wiped clean, of course, but–”

“Dad’s antique.” Bob swallows. “I hope not, but we’d better have the lab check it out.”

Yes, no, and sorry.

The same concept applies to parsing the YES, NO, and SORRY actions built into Inform. I rarely have any occasion to want these to have meaning other than in conversation with characters, so here I implement by creating quips for any positive, negative, or apologetic answers, and redirecting from the actions.

Gestures and expressions.

Relatively little IF allows the player to use gestures and facial expressions (WAVE, SMILE, FROWN, LAUGH, CRY, etc.), and it’s true that this can be a bother to implement, especially as these expressions rarely communicate anything so important that it becomes a required move in the game. But I have had some feedback from players to the effect that they appreciate having these verbs recognized, especially in character-heavy IF, because it gives them an outlet for personal expression; and there are times in games where I do find myself wanting to type SMILE or LAUGH. Besides, many IF players are trained to experiment with the verbs they see used in the text, and if an NPC smiles or laughs they may experiment with doing the same.

Because players are likely to have lower expectations about the effect of gestures and expressions, they require less extensive implementation than high-content actions like SHOW CLUE TO BOB. WAVE AT person can often be mapped safely to some form of greeting; other gestures answered with a generic description most of the time. If we’re tracking the mood in a conversation, we might have descriptions of facial expressions vary depending on what the conversational mood happens to be at the moment.

If there’s an occasion where a gesture or expression is going to be an important part of the conversation in itself, however, it’s again a good idea to represent that with a quip that can belong to the overall conversation structure.


In most conversations, amorous or hostile advances are only rarely appropriate, so I implement them like other gestures: a special case quip to handle the case where something should happen, and more-or-less generic refusals the rest of the time.

Some games may have stronger demands on these verbs. In Pytho’s Mask I actually coded the combat as a form of conversation, with retorts to go with the action of the fighting; but if you’re writing something other than a light-hearted swashbuckler, that may be totally wrong. Another approach might be to have conversation automatically end when an attack occurs, so that either a combat system or the conversation system are moderating interaction at any given time, but not both at once.

Actions that distract from conversation.

Sometimes instead of fitting into the conversation, a player’s actions will be a distraction from it. This is trickier because we can’t always anticipate exactly what the player might do — there are going to be more inappropriate actions at any given moment than appropriate ones — but we may still want to have the NPC respond in some fashion. For instance we could imagine a scene like

“…and meanwhile my mother is dying…”

You check your purse: you’re still carrying your name badge, your wallet, your sunglasses, a lip gloss, a tin of altoids, your car keys, your house keys, a packet of tissues, a receipt from the grocery store, and two used bus transfers.

“Could you please not go through your handbag while I’m talking to you about my mother’s cancer? It makes me feel like you’re not listening.”

“I’m sorry,” you say. “Reflex, really.”

“It’s all right. Where was I… Oh, yes.” She takes another sip of tea. “So my mother’s oncologist said…”

Here the player’s inappropriate actions trigger an interruption, but the NPC goes back to talking about her previous interest after a turn. This is something we could rig to have happen using the prioritized list scheme: the business about her mother would be a series of postponed obligatory quips, while the “could you please…” remark would be an immediate obligatory quip triggered by the INVENTORY action, perhaps with something like

Check taking inventory when the current quip mentions a sensitive subject:
queue the inventory-objection as immediate obligatory.

And then

inventory-objection is an NPC-directed quip.
The response is “‘Could you please not go through your handbag while I’m talking to you about [a random sensitive thing mentioned by the current quip]?'”

We could generalize this further if we wanted such objections to a large number of different player activities.

Actions that start new conversation threads.

There are times when the player may do something that attracts NPC comment not because it contributes to or distracts from the existing conversation but simply because it’s interesting in itself.

You hold the match to the journal until it catches and begins to burn in the grate.

Linda watches you steadily. “You’re right,” she says. “No one ever has to know.”

This would be implemented much as the inventory action above: have burning the journal queue an immediate obligatory quip for Linda, and then let further conversation go on from there if desired.

Taken together, these various effects make the NPC seem a little more aware of, and engaged with, the physical environment, without losing conversational flow and context.

One thought on “Modeling conversation flow: actions in conversational context”

  1. These articles are superb. I’m genuinely looking forward to seeing the full extension and using it for a possible WIP. Well done.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s