Becoming another character mid-conversation

My WIP that allows the player to switch characters as long as they are in the same room. The problem I am running into is conversation.

What would be the smoothest approach to a topic-based conversation system that would allow the player to shift to control of a different character in mid-conversation?

I suppose the easiest answer would be to lock the player into the current PC when the conversation begins and allow switching characters again only when the conversation ends, but that seems kind of cheap to me.

I’d like some clarification:

If the player is switching characters, what happens to the character they were before the switch? Does that character disappear? Go catatonic? Continue to behave as normal?

The character the player was before the switch does not disappear, but functions as an NPC who remembers everything that happened during the possession. Thus, it would be possible to switch back and forth with the person you are talking to.

I would think that to be unsteady ground in the middle of a conversation. I mean… Once you switch, the original character would have to continue the conversation, either randomly or along a plotted course.

And why talk to the person at all, if I can just switch over to them and know everything that they know? Unless I don’t have conversational control over either character. In which case it doesn’t matter when you switch.

Sorry for the confusion. I was trying to keep it simple, and it didn’t work. :frowning:

I say you “become” another character, and for all intents and purposes, you do (from a coding standpoint) but the player is actually possessing the other characters. The player does not gain the host’s knowledge automatically. If you want to know more about Character A, for example, you would need to interview her as Character B.

I am starting to agree. Still, the rest of the game (as currently planned) would allow a high degree of freedom for the player, and it seems like restricting the conversation system rather than allowing it to be flexible enough to accommodate multiple viewpoints would be jarring.

If anyone has an idea of how to approach multiple viewpoint conversation in Inform 7 or knows of a smooth way to skirt the problem, I’d be interested.

Can you give an example of a problem that this creates? Are you using a specific extension?

If the character being abandoned has no knowledge of being possessed, and believes him/herself to have beenbthe one executing the conversation, I don’t guess the conversation itself would be that confusing. You’d just change the target interlocutor. I guess that as long as the conversation continues to flow and both characters have the same motivations for the discussion, it could work just fine.

Let me say, though, that you’d have to double the amount of work you do for each convoy, as now you’re writing responses for both characters, unless the conversation is subtly guided.

I haven’t gotten to the coding phase yet – I am looking for suggestions on where to start, honestly. I have the feeling that a simple conversation table would not cut it.

I am not planning on using a specific extension. I would use Eric Eve’s Conversation Framework, but I do not think it would keep up with multiple characters in a conversation. It could be my inability, not the extension – I experimented with it a year ago. Still, keeping track of the flow of a multiple viewpoint conversation seems to be outside of Framework’s purpose, even if I did use it.

At first, the characters are not sure what is happening. Emotions eventually escalate to panic and terror, which puts another variable into the mix.

However, for now, I am only concerned with the basics of the system – the ability to switch from character to another in mid-conversation with a minimum of awkwardness.

Double? Probably triple. But I am looking for ideas on subtly guiding the conversation.

I’ve looked at blogs, articles and coding examples, but either I’m missing something, or this hasn’t been talked about much. Perhaps it is unattainable, but I believe it can be done.

I haven’t scratched the surface of the conversation aspect of my WIP yet. It’s an abyss that I’m hesitant to look into. I wouldn’t think it would be impossible, though, using a node-based conversation system. Switch interlocutors, switch nodes. But again, I’m not entirely sure how it would work out, since I haven’t bothered trying. It would seem, though, that this is perfectly doable, regardless of the level of complexity.

One of the authors with experience in conversation heavy games (Emily Short, Eric Eve) should shine some light on this sort of thing. I’m sure they’ll wander around to it eventually.

In one of the dreams in Blue Lacuna there’s a conversation scene where you can change between which character you are at any time. I don’t remember how I did this except that is was semi-painful, but you might check out the source if you’re curious.

Thanks, Aaron. I will check that out. Do you remember which dream scene it was? It’s been a few months since I finished the game.

Found it. The code is kind of a mess, so I don’t know if this will be of any use. But it looks like I just had versions of each conversation point for each speaker, and then used the BL convo system’s ability to have a “default next” beat if the player doesn’t say anything to drive what should happen regardless of who’s talking.

Err, not sure if that made any sense, but anyway, there’s the link to the code.

Once again, allow me to offer my in-progress extension, Speech Motivations:

It requires Scope Caching (which I have submitted to the I7 site but received no response):

Speech Motivations treats every character, PC and NPC, pretty much the same way. NPCs only talk during the Every Turn phase – the PC’s actions only cause the PC to speak. Any character speaking has the potential to create a “speech motivation” in any listener, who will then respond if they choose during the Every Turn phase.

Thanks for that. I have tried to wrap my head around the Blue Lacuna conversation system before, and this is a good reason to try again, especially since in my WIP, no more than one NPC who can participate in conversation will be in a location at one time. I imagine, though, that you have not released your conversation system as an extension because it is so integrated (or appears to be so) with the game itself.

(Oh, and completely off topic: I live in frozen Idaho. I played Blue Lacuna last winter, and I very much enjoyed wandering around a tropical island. :slight_smile: )

I am intrigued. Is there an example to accompany Speech Motivations?

Conversation is the biggest pain as far as game design goes, and at some point, you’ve got to look at the law of diminishing returns. If you have only a small number of conversations in the game (say three), then ok. More than that, I’d say it’s not worth doing.

Why do I say that? The complexity explosion for one. If you have three NPCs interacting, say, and each has two topics, then you have nine possibilities that you have to design (3^2). More topics = more possibilities, and even if each topic only has one NPC that will say something about it, you still have to go through the work to design all of this. Now if the PC possesses an NPC, if he’s not going to be bound by the NPC’s knowledge (or script), then your conversation map just went out the window, and the complexity ramped up even more.

For two, most players won’t care about switching characters at conversation point A versus B, and you can easily concoct a plausible explanation why possession can’t happen in midstream (concentration perhaps). All your work just won’t be used in most game sessions.

Last, the ability to take over an NPC is way more interesting than the ability to do so in the middle of a conversation. If you forbid this, the PC will possess different people, trying to see what they know about the other characters. If the PC can possess someone in the middle of a conversation, he’ll still resort to this serial conversation technique, because there’s no guarantee he can switch in time once he discovers something. Many conversations are one-way streets (“I’ve already talked about that and I’m done with it!”), so he’ll have to go back and start from square one with a new conversation anyways.

My WIP, Seasons, is pretty heavy on conversation, and I’m not using I7, but the same principles apply. Only you’ll probably be more frustrated than I am, due to the endless beta of I7.

If you ask nicely, I’ll write one. :wink:

I think I can tack a little 1-star example onto the documentation on Monday or Tuesday.


You know what would be cool? Becoming another character mid-sentence.

Here you go then.

[spoiler][code]“Ran Over”

Include Speech Motivations by Mike Ciul.

Highway is a room. Jay is a man in highway. Bob is a man in highway.
Bob wears a coat. Jay carries a joint. God is a subject.

The description of the player is “You’re completely naked, and still smarting from your fall out of heaven.”

For getting attention of Bob when Bob is not expected to respond:
forget the concerns of Bob.

First for speaking out loud of something (called the subject matter):
Repeat through Table of Responses:
if the speaker entry is the person asked and the subject entry is the subject matter:
say response entry;
say paragraph break;
rule succeeds;
continue the activity.

For speaking out loud when Bob is the person asked:
say “Bob shrugs.”

For getting attention of Jay when Jay is not expected to respond:
If the new subject matter is Jay or the new subject matter is Bob:
confirm motivation of Jay;
otherwise if someone is expected to respond:
forget the concerns of Jay;
confirm motivation of Jay.

For speaking out loud of something (called the subject matter) when Jay is the person asked:
say “Jay expounds at great length, with multiple interjections of colorful profanity, on the subject of [the subject matter], but at the end you’re still not sure how he feels.”

For printing the name of Jay when the speaking out loud activity is going on and the person asked is Jay:
say “himself”;

Table of Responses
speaker (object) subject (object) response (text)
yourself joint “You comment on Jay’s joint.”
yourself yourself “‘What’s the matter? You never saw a naked black man before?’ you say.”
yourself coat “You tell [the current interlocutor] that you just want to borrow the coat until you can find some other clothes.”
Bob Jay “Bob smiles and pats his friend on the back.”
Bob joint “Bob raises his eyebrows.”
Bob God “Bob shakes his head.”
Bob Bob “Bob grins and thumps his chest.”
Bob yourself “Bob tries not to look at your nakedness.”
Jay joint “‘Dude, have some! First one’s free!’”
Jay coat “‘Dude, [if jay is expected to respond]what are you thinking? My man doesn’t want your dick rubbing all over the inside of his armor!’[otherwise]why you eyeing my man’s coat?’ Jay yells at you.”
Jay yourself “‘I’m not staring at a naked black man. I’m staring at naked black man who just [italic type]fell out of the f***ing sky![roman type]’”

First for speaking out loud of yourself when the person asked is Jay and Jay is not expected to respond:
say “Jay tries to pretend that he’s not staring at your nakedness.”;

For speaking out loud of the coat when Bob is the person asked:
say “Bob removes his coat and hands it to you.”;
end the story finally saying “You are no longer naked.”

test me with “x bob/ask jay about joint/x me/ask jay about me/x coat/ask jay about coat/tell jay about coat/ask jay for coat/ask bob about jay/ask bob about joint/tell bob about god/ask bob about bob/ask bob about me/ask bob about joint/ask bob for coat”[/code][/spoiler]

The updated version, with example, is still at