Page 1 of 1
Conversation management
Posted: Thu Jan 18, 2018 6:56 pm
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?
Re: Conversation management
Posted: Thu Jan 18, 2018 7:32 pm
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
Re: Conversation management
Posted: Thu Jan 18, 2018 9:12 pm
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:
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.
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".)
Then, back in "NPC/Welcome", I used the
Links To: dropdown to link to those conversations:
Re: Conversation management
Posted: Thu Jan 18, 2018 9:15 pm
by nathanj
Amazing. And thanks for the detailed explanation
Re: Conversation management
Posted: Fri Jan 19, 2018 5:13 am
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.
Re: Conversation management
Posted: Fri Jan 19, 2018 8:46 am
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.