Conversation management

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
Passero
Posts: 32
Joined: Thu Jan 18, 2018 1:19 pm

Conversation management

Post by Passero »

I am wondering if there are any best practices for splitting up conversations and how to manage it...

If I want to combine it with the quests it feels like I want to create 1 conversation per NPC where it fans out from the root node for every quest where I set the conditions in those 1 level nodes.

This is manageable but once one NPC can give out a lot of quests, it might be difficult to manage.

I was trying out the submenu system which would be great but doesn't seem to work like I expected.
I created following conversations:
NPC1/Welcome
NPC1/Quest1

And tried to trigger DialogueManager.StartConversation("NPC1");
But doesn't seem to work. This would be really great and easy to manage...

So... What is a common technique to manage conversations in quests in a good way in the plugin?
User avatar
nathanj
Posts: 303
Joined: Sat May 28, 2016 12:30 am

Re: Conversation management

Post by nathanj »

Are you talking about withing the Conversation Editor? I agree that it can become quite daunting if you have a lengthy series of conversations.

I'm not sure how hard this would be for Tony to implement, but what about the idea of encapsulating nodes? Something like container nodes that encapsulate all the nodes related to a single quest. I'm coming from a music background and use programs like Reaktor and Max MSP, which are both visual coding programs. The patches become complex very quickly but are easily managed by containing methods within container nodes.

For example, just scroll through the video to get an idea:
https://www.youtube.com/watch?v=EW9glwLu5xw

Is this what you are discussing?

Nathan
User avatar
Tony Li
Posts: 22061
Joined: Thu Jul 18, 2013 1:27 pm

Re: Conversation management

Post by Tony Li »

Nathan's on the right track with encapsulating nodes. In the Dialogue System, they're called group nodes. To turn a node into a group node, just tick its Group checkbox. Group nodes act as passthrough gateways. They don't display to the player, but they can have Conditions and Scripts.

Here's an example of using group nodes in a single conversation:

Image

The Quest1 group is on the left. The conversation will only follow that path if the Conditions are true. (I set them to require that Quest1's state isn't successful yet.)

You can also use groups (or not) with multiple conversations. The screenshot below demonstrates a couple things. I'll break them down first:
  • The database has conversations titled "NPC/Welcome", "NPC/Quest1", and "NPC/Quest2". The conversation title is the full string -- e.g., "NPC/Welcome". In scripts, you'll need to call DialogueManager.StartConversation("NPC/Welcome"). Or use the Conversation Trigger component if you don't want to write any code.
  • The bottom of the dialogue entry node inspector shows where the node links to. The Links To: dropdown lets you link to another conversation.
Image

In the next screenshot, I've prepared another conversation titled "NPC/Quest1". The <START> node is a group node with the condition that Quest1 isn't successful yet. (And similarly for "NPC/Quest2".)

Image

Then, back in "NPC/Welcome", I used the Links To: dropdown to link to those conversations:

Image
User avatar
nathanj
Posts: 303
Joined: Sat May 28, 2016 12:30 am

Re: Conversation management

Post by nathanj »

Amazing. And thanks for the detailed explanation :)
Passero
Posts: 32
Joined: Thu Jan 18, 2018 1:19 pm

Re: Conversation management

Post by Passero »

Ah great! The groups node works like a charm.
Very easy to be able to trigger a quest flow fomr a single conversation.

One other thing that is probably to small to create a different topic but how can I make the player say something without it being a menu?
If I want to player to just say "Thanks" after which the conversation ends. At the moment the user has to click the "Thanks" while I would like the Continue button to show up instead.
User avatar
Tony Li
Posts: 22061
Joined: Thu Jul 18, 2013 1:27 pm

Re: Conversation management

Post by Tony Li »

Passero wrote: Fri Jan 19, 2018 5:13 amOne other thing that is probably to small to create a different topic but how can I make the player say something without it being a menu?
If I want to player to just say "Thanks" after which the conversation ends. At the moment the user has to click the "Thanks" while I would like the Continue button to show up instead.
Inspect the Dialogue Manager, and untick Input Settings > Always Force Response Menu. Whenever the player only has one response, it will auto-play that response instead of showing it in a response menu. Note that the player's subtitle text won't actually be visible unless you've ticked Subtitle Settings > Show PC Subtitles During Line.

If you then want to force a response menu for a specific response, add the markup tag "[f]" to the node's Dialogue Text.
Post Reply