How would you realize multi-person conversations?

Surf Solar

So Old I'm Losing Radiation Signs
That's what I want to know. :P
What I want, is that for example I have a companion in my party, I want that he actively engages in conversations I hold with other NPC if (s)he has something to say, making them more liveable, so that if you screw up with an NPC the companion likes, he might get pissed, or vice versa... There could also be just a group of NPC talking to you, I think in Fallout 1 at the water merchants such a thing was used.

Basically, I'd think of two options:


a) You talk with npc A, finish all the arbitrary dialog nodes, the window closes and npc B immediately talks to you. This is I guess commonly used, but for me it feels a bit artificial since npc b patiently waiting for you to finish conversation takes away urgency if there are really important topics npc B might be interested in. However, with this method you can easily keep an overview whom you are talking with right now.

b) Write all the possible companions lines he might drop directly in the npc dialogue files and make conditions, so that when you have said companion in your party, those nodes get activated, if not, only the player and the npc talk with each other. From a conversation point of stand it makes more sense, since the companion can actively engage in the conversation, but it makes things messy in the dialog files and the biggest Issue is that you can't tell who is who directly in the dialog, except maybe you write "NPC says:" "Companion XY says:" but it still looks ugly...

How would you handle that?
 
I´d go for A) with the Fallout (FOnline?) dialogue system, as it was meant that way.

For B), you need a datastructure / specialised tree which is designed to do that - otherwise you´ll end up hacking every dialogue for hours - if you last that long.

Branching dialogues itself are non-trivial, but taking mulitple (optional!) answers into account - that´s IMO a nightmare without the proper tools / code.

That´s at least from my programmers pov - regarding the usage of this feature on a regular bases. If you just want to have one dialogue behave this way, you can hack your way to the goal.
 
Well, option b sure is a bit more messy, but the Dialog Editor for FOnline (and me) can handle it, I think..
 
If you keep entry points for npc interruptions static, it might work. Other question would be: can the FOnline dialogue player interface handle that? Or does it require a constant npc-pc-ping-pong?
 
Yep, that's what I meant. Either you make it ping ponging back and forth, or you store the companions lines directly in the NPC you talk to, so the dialog interface doesn't need to constantly open, reopen, etc..
 
Yip, that´d be the hackish way then. And you only can trigger such a dialogue by talking to a certain npc I guess...? You can´t e.g. let companion X (if present) start the conversation in the first place, but always need to rely on npc Y - or let companion Z drop a line and init the dialogue. You´d always have to follow the npc->pc->branch or npc->branch style.

As said, that brings a lot of limitations with it - which kick in a soon as you wrote some of these dialogues. Then it prolly starts with "mmh... but having that would be nice, too...". And there you need a specialised datastructure :)
 
Option b of course. It makes no sense to overcomplicate the dialogue with closing window and reopening it, etc. Adding some companion nodes inside the dialogue will not make it more messy than before and even if you close and reopen the dialogue window, you will need to write something like "[Hans interrupts your speech.] Blah blah blah."

If you are talking about companion dialogue *after* you have talked with some npc, then you set some variable while talking with the npc (and if your companion x is around) and later you start the companion dialogue, if the respective variable is true.

Pretty much depends on what you want to do. Companion talk while talking to npc == write it in the dialogue file. Companion talk after talking to npc == write it in companion dialogue.
 
I know, I know.. What I meant, is that with Option b it can get quite confusing in conversations, if it's not just 1-2 lines but entire, well, conversations, back and forth from the "source" npc, to you, to the companion, etc.

The Infinity Engine games have some nice feauture where the camera automatically would center at the npc/player depending who speaks right now, Fallout/FOnline hasn't. The IE games also always have the name of the NPC infront of each line uttered, hm. I guess I'll experiment a bit.

Could be a bit better for overview if all lines the companion says in the dialog would be cornered with " *text here*" or "<text>" instead of the usual blank text, just to distinguish those lines from the normal npc. hm.
 
mmh .. don´t you have engine access via FOnline script? Centering a camera on a given game entity should be in the engine´s repertoire. Or any other "highlighting" would be sufficient (outline, add a symbol above the currently speaking character etc...)

In Zero I´d hijack the result package of each node and do it that way ( engine.highlight(entity_id) etc. pp)
 
Yeah, centering the camera to the one talking should work, but I'm not the scripter and don't want to promise anything which doesn't 100% work. ;D One thing which can be done is to colorize the text, but to do that the engine needs some updates and it's still not done yet. :( (that's the reason I still have ugly green text on orange background)

But still, not looking at FOnline, I'd wonder how the writers working on Fallout 2 Modding would do that. Share your tricks with us. ;)

The "Symbol above active character" sounds like a decent workaround, but I think I'll need to make the game-area visible in dialoges a bit bigger for that:

(beware of eye-cancer!)
 
Back
Top