Page 1 of 1

Are Interactive Dialogue Experiments Easier with the Dialogue System Plugin?

Posted: Tue Jan 21, 2020 5:33 pm
by hanage
Hello, I am prototyping a game/experiment with conversations that give players two sets of options each time the PC has a chance to respond: one being dialogue choices and the other being line-of-thought choices.

Below is an explanation of how that plays out:

- NPC says something that warrants a response from the PC; for the sake of this explanation, the player enters "Response Mode".
- Upon entering this mode, two lists (or wheels) appear on both sides of the screen: left is a list of thoughts to potentially follow; right is a list of dialogue options.
- The player can operate ('scroll through' or 'move the radial cursors of') both lists at the same time
- If the player chooses a dialogue option (from the right set of choices) the player will leave Response Mode, prompting the PC to say the selected dialogue option.
- If the player chooses a line-of-thought option (from the left set of choices), the player will be given a whole new set of line-of-thought options based off the choice the player just made. For example, choosing "cat" might give "cute", "internet", "cat types", and "cat-lovers".
- Some line-of-thought options add new dialogue options or improve current dialogue options, hence the main point of line-of-thought options.
- Every instance of Response Mode only allows a few line-of-thought choices before the player is forced to choose a dialogue option
- Ideally, these line-of-thought options might appear during exploration gameplay too, outside of conversations, unlocking environmental interactions and such.

My problem is this. I'm just a "junior" developer (I have a game design diploma and some experience), and my goal in the industry is to be a narrative designer or writer; learning how to program like a pro isn't high on my list of priorities, so I'm looking for shortcuts to more quickly develop my main skill set. To anyone who knows the Dialogue System plugin well, can this plugin easily pull off the above game system or is it too far and beyond what the plugin is meant for? Will it be faster to develop without the plugin, using the Animation system or something? (For the record, I already bought the Dialogue System, so up-selling is unnecessary.)

Re: Are Interactive Dialogue Experiments Easier with the Dialogue System Plugin?

Posted: Tue Jan 21, 2020 8:44 pm
by Tony Li
Hi,

It certainly possible. Here's one way to do it without programming:

1. Create a dialogue UI with positioned response buttons. There are two ways that the Dialogue System can set up a response menu:
  • You can assign a single UI button to the dialogue UI's Standard UI Menu Panel > Button Template. When setting up a response menu at runtime, the dialogue UI will make as many copies of this template as needed to fill out the menu. The Basic Standard Dialogue UI does this.
  • Or you can create a set of buttons at design time and assign them to the Standard UI Menu Panel's Buttons list. Since the list is numbered, each button will have a number (0, 1, 2, etc.). Normally, the menu will fill buttons in order (0, 1, 2, etc.) as many as needed, and hide the unused ones. However, you can also use the [position=#] tag in a node's text to force it to use a specific button. For example, "[position=2] Intimidate the citizen" will use button 2. The Wheel Standard Dialogue UI, as seen in the Demo, uses this kind of dialogue UI.
When creating your dialogue UI, use the second one (all buttons added at design time, not using Button Template).

Add 2 sections to your menu UI. Add, say, 10 buttons to the left (dialogue option) section. Assign these to the Buttons list as elements 0-9. Add another 10 buttons to the right (line-of-thought) section. Assign these to the Buttons list as elements 10-19.

2. When you add a dialogue option node to your conversation, specify a button position 0-9 by including the tag [position=#] where # is a number 0-9. When you add a line-of-thought option, specify a button position 10-19.

Example:
The NPC asks "Want to grab a burger?"

You want to show two dialogue options:
  • "Sure; sounds good. [position=0]"
  • "No thanks; I'm not hungry. [position=1]"
Note that I added position tags to each one. They're in the range 0-9, so they'll appear in the left section.

And you want to show three line-of-thought options:
  • "Should I really break my diet already? [position=10]"
  • "I wonder if this is a date. [position=11]"
  • "I hope I don't get food poisoning again. [position=14]"
I added position tags in the range 10-19, so they'll appear in the right section. Note that there's a gap between 11 and 14. You can add a Vertical Layout Group component to the section to automatically lay out the visible elements of the list vertically without gaps. (Layout Groups are a little complicated to set up if you haven't used them before. See the Unity UI tutorials in Unity's Learn section if you have questions about setting it up.)

---

There's more than one way to skin a cat. Someone with a programming focus might take a different approach instead of everything described above. For example, they might make a subclass of StandardUIMenuPanel and override the ShowResponses method to populate the two sections programmatically.

Someone did something similar a while back, documented in the Dialogue System's Unity forum thread, roughly around here. Response options would pop in and out of the response menu based on time and context. Here's one of his short prototypes, updated for Dialogue System version 2.x:

DS2_InterjectableResponsesExample_2018-03-04.unitypackage

It uses the deprecated UnityUIDialogueUI instead of StandardDialogueUI, so the scene will log some deprecation warnings. But the concept still holds.