Multiple Small Questions regarding the Dialogue System

Announcements, support questions, and discussion for the Dialogue System.
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

Wow. Perfect timing on your part. I woke up 2 minutes after you replied, haha.

Ah. Both very simple solutions. I actually knew about the Exit Time one from setting up the player animations. I just hadn't thought about it, yet.

I'm using the dialogue system for inanimate objects that you can examine as well. That's what the variable script is for, actually. Those don't have conversant names. Would it just use the persistent data name, or the name of the gameObject perhaps? I was trying to use ConversantIndex because I thought it would simply replace ConversantIndex with the name of the object I was talking to.
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

I'm sorry for double posting, but I found the problem! I spent hours trying to figure out the issue on my own, and eventually managed to hotwire the script to give me the name of the variable it was increasing.

Both of these give the same result, predictably. The name of my main character...

Code: Select all

Debug.Log(DialogueLua.GetVariable("ConversantIndex").asString);
            Debug.Log(conversantVariableName);
It's naming the variable after the Actor somehow, instead of the conversant! Though, in the other conversation setup I have, there IS a conversant, so it works there okay.

I thought that if I left the conversant entirely blank, it would create a new variable named after the GameObject . It's kind of pointless if it's naming it after Actors, since I'd still have to register every Actor variable manually.

How can I make it use the GameObject name for the variable? If it worked that way I could simply put that into the conditional as the variable name and be done with it.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Multiple Small Questions regarding the Dialogue System

Post by Tony Li »

Hi,

These are the rules the Dialogue System Trigger component uses for the current actor and conversant:

Character GameObject Assignments

Assuming you're using Dialogue System Triggers, can you assign the GameObject to the Dialogue System Trigger's Actions > Start Conversation > Conversation Conversant?

Or, if you're using barks, assign it to the Barker field, which will be the actor (so you'll need to use "ActorIndex").
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

Game_Proof_01.png
Game_Proof_01.png (122.13 KiB) Viewed 489 times
I was already doing that, actually. Part of the reason I got so frustrated. I even went through the entire Logic and Lua page to try and figure out where it was going wrong.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Multiple Small Questions regarding the Dialogue System

Post by Tony Li »

Try setting the Dialogue Actor components' Actor fields manually. Here's an example scene:

DS_InanimateObjectsExample_2023-08-28.unitypackage

The first two objects (UI buttons in this example for simplicity) rely on Variable["ConversantIndex"] conditions. The third button uses the DS Trigger's Specify Starting Entry feature.
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

...You know that little circular button you can press to manually assign the actor a name? Yeah, I didn't really know it existed. I had seen it, but just thought it disabled that field or something. The dialogue's working now, thankfully.

I'm setting up animated portraits like in your UI video. (Is that your voice, by the way? It's a great voice for videos.) I'd like to randomize the time between blinks. Or at the very least, have 3 or so times it can choose between- whichever works.

I'm also having a few quirks with the UI itself. When I talk to someone for the first time, the box says "Subtitle Text" for a second, before replacing it with the correct text. This is especially odd as I removed the default text in the UI and replaced it with numerous other things, including nothing, to try and stop it.

The animated cursor works great now, but when I choose an option, the cursor jumps up to the top option. It still shows the correct text, so this issue is only visual.

After choosing an option, the Continue Button is fully visible for a split second before vanishing and doing its Show animation. It otherwise works fine. This only happens immediately after choosing a dialogue option.

There also seems to be lag, or something like it, after choosing a dialogue option. The system takes a couple seconds to switch to the next line.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Multiple Small Questions regarding the Dialogue System

Post by Tony Li »

The_Kihng wrote: Mon Aug 28, 2023 8:19 pmI'm setting up animated portraits like in your UI video. (Is that your voice, by the way? It's a great voice for videos.) I'd like to randomize the time between blinks. Or at the very least, have 3 or so times it can choose between- whichever works.
I spent last Saturday chatting with Corvalis Cohen at the GameDevGuild AI Conference. Now that dude has a voice that'll make anyone feel like they don't measure up when recording video. ;) Anyway, to avoid having to write and maintain code, I recommend making a longer animation clip that places 3-5 blinks at irregular intervals during the clip. It'll look random to players.
The_Kihng wrote: Mon Aug 28, 2023 8:19 pmI'm also having a few quirks with the UI itself. When I talk to someone for the first time, the box says "Subtitle Text" for a second, before replacing it with the correct text. This is especially odd as I removed the default text in the UI and replaced it with numerous other things, including nothing, to try and stop it.
Strange that it shows Subtitle Text even if you've removed that text. Maybe you modified an instance in the scene but the Dialogue Manager's Dialogue UI field still points to a prefab? Anyway, try ticking the subtitle panel's Clear Text On Conversation Start checkbox. I assume you're using the current DS version (2.2.39+). But, if not, please back up your project and update.
The_Kihng wrote: Mon Aug 28, 2023 8:19 pmThe animated cursor works great now, but when I choose an option, the cursor jumps up to the top option. It still shows the correct text, so this issue is only visual.
When you choose an option, the StandardUIMenuPanel will set all response buttons to be non-interactable. This will make them play their Disabled transition animation. Configure this animation to hide the cursor.
The_Kihng wrote: Mon Aug 28, 2023 8:19 pmAfter choosing an option, the Continue Button is fully visible for a split second before vanishing and doing its Show animation. It otherwise works fine. This only happens immediately after choosing a dialogue option.
If you're not using DS 2.2.39+, please back up your project and update to make sure you have all the latest UI updates. The continue button should stay disabled until the text actually appears. Is the continue button a child of the subtitle panel? If not, maybe it's being activated too soon. You could try configuring the subtitle panel's OnOpen() event to deactivate the continue button. The StandardUISubtitlePanel should activate it if necessary in the next frame.
The_Kihng wrote: Mon Aug 28, 2023 8:19 pmThere also seems to be lag, or something like it, after choosing a dialogue option. The system takes a couple seconds to switch to the next line.
Could it be playing the Dialogue Manager's Default Sequence? If the Dialogue Manager's Display Settings > Camera & Cutscene Settings > Default Player Sequence is set to anything, dialogue options will play this sequence. Try clearing the Default Player Sequence if it's set, unless you actually need it to do something.

If that doesn't help, turn on verbose logging by setting the Dialogue Manager's Other Settings > Debug Level to Info.
Tutorial: Logging & Debugging
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

Tony Li wrote: Mon Aug 28, 2023 9:06 pm I spent last Saturday chatting with Corvalis Cohen at the GameDevGuild AI Conference. Now that dude has a voice that'll make anyone feel like they don't measure up when recording video. ;) Anyway, to avoid having to write and maintain code, I recommend making a longer animation clip that places 3-5 blinks at irregular intervals during the clip. It'll look random to players.
Wow that's a deep voice. Also noted. I'm pausing the portraits for the moment until I get the rest of this cleared up.
Tony Li wrote: Mon Aug 28, 2023 9:06 pm Strange that it shows Subtitle Text even if you've removed that text. Maybe you modified an instance in the scene but the Dialogue Manager's Dialogue UI field still points to a prefab? Anyway, try ticking the subtitle panel's Clear Text On Conversation Start checkbox. I assume you're using the current DS version (2.2.39+). But, if not, please back up your project and update.
I double checked all of that. It's up to date, and it's pointing to the asset I'm modifying. No instances. I checked the box but no luck. It's even doing the Typewriter Effect for the Subtitle Text, which is odd. It wasn't doing this before, so I'm unsure as to what's causing it. I'll keep working on it.
Tony Li wrote: Mon Aug 28, 2023 9:06 pm When you choose an option, the StandardUIMenuPanel will set all response buttons to be non-interactable. This will make them play their Disabled transition animation. Configure this animation to hide the cursor.
Hmm. I did as you suggested but it's still happening. I might just be doing it wrong, however, as the whole Animation window is a bit confusing even after reading the documentation.
Tony Li wrote: Mon Aug 28, 2023 9:06 pm If you're not using DS 2.2.39+, please back up your project and update to make sure you have all the latest UI updates. The continue button should stay disabled until the text actually appears. Is the continue button a child of the subtitle panel? If not, maybe it's being activated too soon. You could try configuring the subtitle panel's OnOpen() event to deactivate the continue button. The StandardUISubtitlePanel should activate it if necessary in the next frame.
Fixed! I had to put it on the response button's OnClosed event to make it work.
Tony Li wrote: Mon Aug 28, 2023 9:06 pm Could it be playing the Dialogue Manager's Default Sequence? If the Dialogue Manager's Display Settings > Camera & Cutscene Settings > Default Player Sequence is set to anything, dialogue options will play this sequence. Try clearing the Default Player Sequence if it's set, unless you actually need it to do something.

If that doesn't help, turn on verbose logging by setting the Dialogue Manager's Other Settings > Debug Level to Info.
Tutorial: Logging & Debugging
I already have that on from the variable issue, fortunately. It's calling a delay sequence from somewhere. The Default Sequence only says:

Code: Select all

Delay({{end}})
and the Default Player Sequence is blank. Removing the little line in the Default Sequence seems to change nothing.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Multiple Small Questions regarding the Dialogue System

Post by Tony Li »

The_Kihng wrote: Mon Aug 28, 2023 9:59 pmI double checked all of that. It's up to date, and it's pointing to the asset I'm modifying. No instances. I checked the box but no luck. It's even doing the Typewriter Effect for the Subtitle Text, which is odd. It wasn't doing this before, so I'm unsure as to what's causing it. I'll keep working on it.
While playing, get a conversation going and then pause the game. Inspect the Dialogue Manager's hierarchy. Maybe it's using a different copy of the dialogue UI for some reason. Check the subtitle text GameObject of the subtitle panel you think it should be using. Make sure it actually contains the text that's being shown onscreen.
The_Kihng wrote: Mon Aug 28, 2023 9:59 pmHmm. I did as you suggested but it's still happening. I might just be doing it wrong, however, as the whole Animation window is a bit confusing even after reading the documentation.
I could also be misunderstanding what the problem is. Feel free to post a screenshot indicating the issue.
The_Kihng wrote: Mon Aug 28, 2023 9:59 pmIt's calling a delay sequence from somewhere. The Default Sequence only says:

Code: Select all

Delay({{end}})
and the Default Player Sequence is blank. Removing the little line in the Default Sequence seems to change nothing.
You can keep the "Delay({{end}})" line in the Default Sequence.

Does the dialogue entry that you're choosing from the menu have anything in its Sequence field? Maybe that's what's causing the delay.
The_Kihng
Posts: 11
Joined: Fri Aug 25, 2023 10:23 am

Re: Multiple Small Questions regarding the Dialogue System

Post by The_Kihng »

Tony Li wrote: Mon Aug 28, 2023 10:35 pm While playing, get a conversation going and then pause the game. Inspect the Dialogue Manager's hierarchy. Maybe it's using a different copy of the dialogue UI for some reason. Check the subtitle text GameObject of the subtitle panel you think it should be using. Make sure it actually contains the text that's being shown onscreen.
Okay. Get this. I followed your instructions. The dialogue manager is using my prefab, and if you observe the Subtitle TMP object in the inspector as you start a conversation, it inserts Subtitle Text before the dialogue comes up. I've checked and double checked seemingly everything. There is no mention of that phrase anywhere... Not in the conversation, not in the UI, not in any of the Actor's or Conversants' components... Nothing! The only thing I can think of is that the example you sent me still has that. I'm going to delete it just to be safe. ... Nope, that wasn't it. I am dumbfounded. Bewildered, even.

Edit: Thought this might be important. It only shows up the first time you run dialogue. Subsequent conversations don't show it.
Tony Li wrote: Mon Aug 28, 2023 10:35 pm I could also be misunderstanding what the problem is. Feel free to post a screenshot indicating the issue.
This is even weirder than the other issue. For a bit I thought I had broken it, because the cursor wasn't showing up. I finally checked the object, and it was to the far right of the canvas, being masked. So I put it back. Then it was in the middle of the response button. So I checked again, and it was there. Okay, weird. So I put it back. Turns out whenever I resize the game or scene window horizontally, the cursor doesn't move along with everything else despite being childed, even when the game is running. It might be because I have it set to 'Ignore Layout' because if I don't, it gets attached to the inside of the Response Button and stretched horribly. Not sure what to do about that, but I can definitely grab those screenshots if you want them. I think a recording might be more apt, though.
Tony Li wrote: Mon Aug 28, 2023 10:35 pm You can keep the "Delay({{end}})" line in the Default Sequence.

Does the dialogue entry that you're choosing from the menu have anything in its Sequence field? Maybe that's what's causing the delay.
Nope. Also it doesn't seem as bad now that the issue with the Continue Button is fixed. It's still happening, but for maybe half the duration now. So this isn't a big of a concern as the others. I'm sorry to be taking up so much of your time, but this has me absolutely stumped.
Post Reply