Multiple Small Questions regarding the Dialogue System
Re: Multiple Small Questions regarding the Dialogue System
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.
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.
Re: Multiple Small Questions regarding the Dialogue System
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...
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.
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);
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.
Re: Multiple Small Questions regarding the Dialogue System
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").
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").
Re: Multiple Small Questions regarding the Dialogue System
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.
Re: Multiple Small Questions regarding the Dialogue System
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.
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.
Re: Multiple Small Questions regarding the Dialogue System
...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.
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.
Re: Multiple Small Questions regarding the Dialogue System
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.
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 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.
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.
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.
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
Re: Multiple Small Questions regarding the Dialogue System
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 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.
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 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.
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.
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 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.
I already have that on from the variable issue, fortunately. It's calling a delay sequence from somewhere. The Default Sequence only says: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
Code: Select all
Delay({{end}})
Re: Multiple Small Questions regarding the Dialogue System
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 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.
I could also be misunderstanding what the problem is. Feel free to post a screenshot indicating the issue.
You can keep the "Delay({{end}})" line in the Default Sequence.The_Kihng wrote: ↑Mon Aug 28, 2023 9:59 pmIt's calling a delay sequence from somewhere. The Default Sequence only says:and the Default Player Sequence is blank. Removing the little line in the Default Sequence seems to change nothing.Code: Select all
Delay({{end}})
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.
Re: Multiple Small Questions regarding the Dialogue System
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.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.
Edit: Thought this might be important. It only shows up the first time you run dialogue. Subsequent conversations don't show it.
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.
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.