How to have two Dialogue System Controller running at the same time?
-
- Posts: 7
- Joined: Sat Apr 17, 2021 2:17 pm
How to have two Dialogue System Controller running at the same time?
Greetings, Tony!
I have searched the forum and couldn't find anything this complicated, so here I am.
I'd like to apologize in advance for a long post.
I have two sets of actors.
The first pair is player and NPC, Player and TestNPC, they use a modified Standard Dialogue UI, and the usual stuff.
The second pair is two NPCs, Hrugor and Kihae, they use a modified Bubble Standard Bark UI to do "bark conversations", since both require vastly different display settings, these two NPCs would override the Dialogue System Controller's settings when they start a conversation.
However, when one pair starts their conversation before another finishes, they would fight for the control of the single Dialogue System Controller, making a huge mess. So I thought that the easiest way to have this all working is to have two Dialogue System Controllers.
Can you show me some pointers? Or am I missing something really obvious?
And if it helps, I have attached photos of my setup.
And here is a more detailed description of my bugs:
One is that:
When I start the Npc-player-conversation and then trigger the npcs-conversation before Npc-player-conversation finishes, the current line of npc-player-conversation would disappear. And then if I choose the option that ends the conversation, one of the npcs, Hrugor (the npc that triggers the npcs-conversation) would disappear.
The log says that "Unregistering transform Hrugor from actor 'Hrugor'."
Second bug is that:
When I start the Npc-player-conversation and finish it, then start the npcs-conversation and also let it finish. Sometimes, the npc-player-conversation would refuse to start, even though there is not condition blocking it, however, the npcs-converstaion works fine.
The console outputs: "Dialogue System: Bark (speaker=TestNPC (UnityEngine.Transform), listener=Player (UnityEngine.Transform)): 'Greetings!' speaker has no bark UI."
It seems like the npc is not overriding the display settings back properly.
The conversations worked flawlessly when I built them individually and didn't try to start the two at the same time. So I love the tool Tony, don't get me wrong, I just want to get this working. And I'm so so sorry for the long post. If you need more info, I will provide.
I have searched the forum and couldn't find anything this complicated, so here I am.
I'd like to apologize in advance for a long post.
I have two sets of actors.
The first pair is player and NPC, Player and TestNPC, they use a modified Standard Dialogue UI, and the usual stuff.
The second pair is two NPCs, Hrugor and Kihae, they use a modified Bubble Standard Bark UI to do "bark conversations", since both require vastly different display settings, these two NPCs would override the Dialogue System Controller's settings when they start a conversation.
However, when one pair starts their conversation before another finishes, they would fight for the control of the single Dialogue System Controller, making a huge mess. So I thought that the easiest way to have this all working is to have two Dialogue System Controllers.
Can you show me some pointers? Or am I missing something really obvious?
And if it helps, I have attached photos of my setup.
And here is a more detailed description of my bugs:
One is that:
When I start the Npc-player-conversation and then trigger the npcs-conversation before Npc-player-conversation finishes, the current line of npc-player-conversation would disappear. And then if I choose the option that ends the conversation, one of the npcs, Hrugor (the npc that triggers the npcs-conversation) would disappear.
The log says that "Unregistering transform Hrugor from actor 'Hrugor'."
Second bug is that:
When I start the Npc-player-conversation and finish it, then start the npcs-conversation and also let it finish. Sometimes, the npc-player-conversation would refuse to start, even though there is not condition blocking it, however, the npcs-converstaion works fine.
The console outputs: "Dialogue System: Bark (speaker=TestNPC (UnityEngine.Transform), listener=Player (UnityEngine.Transform)): 'Greetings!' speaker has no bark UI."
It seems like the npc is not overriding the display settings back properly.
The conversations worked flawlessly when I built them individually and didn't try to start the two at the same time. So I love the tool Tony, don't get me wrong, I just want to get this working. And I'm so so sorry for the long post. If you need more info, I will provide.
- Attachments
-
- Scene Tree.png (30.59 KiB) Viewed 483 times
-
- Pair 2 NPC 2.png (73.66 KiB) Viewed 483 times
-
- Pair 2 NPC 1.png (38.5 KiB) Viewed 483 times
-
- Pair 1 Player.png (57.45 KiB) Viewed 483 times
-
- Pair 1 NPC.png (76.19 KiB) Viewed 483 times
-
- Dialogue System Controller setup.png (76.57 KiB) Viewed 483 times
Re: How to have two Dialogue System Controller running at the same time?
Hi,
The Dialogue Manager/DialogueSystemController works as a singleton. There should only be one in the scene. Set it up to work with the Player and TestNPC conversation.
Add an Override Display Settings component to Hrugor or Kihae. Configure it to use whatever settings you need for their conversation.
If that doesn't do the trick, please let me know what issue(s) are occurring with it.
The Dialogue Manager/DialogueSystemController works as a singleton. There should only be one in the scene. Set it up to work with the Player and TestNPC conversation.
Add an Override Display Settings component to Hrugor or Kihae. Configure it to use whatever settings you need for their conversation.
If that doesn't do the trick, please let me know what issue(s) are occurring with it.
-
- Posts: 7
- Joined: Sat Apr 17, 2021 2:17 pm
Re: How to have two Dialogue System Controller running at the same time?
Thanks for the quick reply but I have tried this. In fact, this is also what I have setup currently, as shown in the pictures.
This is the bug I'm encountering.
Say that the NPCs start their conversation and overrides the Dialogue System Controller to do their thing.
Before they finish, the Dialogue System Controller will have the setting overridden by the NPCs.
And if I start a NPC-player-conversation, which the Dialogue System Controller was originally designed for, it would use the NPCs display settings instead.
To counter this, I have also added the Display Settings Override module to the NPC that was supposed to talk to the player.
However, my NPCs would randomly get deleted or the one NPC that's supposed to talk to the player won't start their conversation.
The detail to both bugs I have found are already stated in the original post, along with the console output.
Let me quote myself here.
This is the bug I'm encountering.
Say that the NPCs start their conversation and overrides the Dialogue System Controller to do their thing.
Before they finish, the Dialogue System Controller will have the setting overridden by the NPCs.
And if I start a NPC-player-conversation, which the Dialogue System Controller was originally designed for, it would use the NPCs display settings instead.
To counter this, I have also added the Display Settings Override module to the NPC that was supposed to talk to the player.
However, my NPCs would randomly get deleted or the one NPC that's supposed to talk to the player won't start their conversation.
The detail to both bugs I have found are already stated in the original post, along with the console output.
Let me quote myself here.
One is that:
When I start the Npc-player-conversation and then trigger the npcs-conversation before Npc-player-conversation finishes, the current line of npc-player-conversation would disappear. And then if I choose the option that ends the conversation, one of the npcs, Hrugor (the npc that triggers the npcs-conversation) would disappear.
The log says that "Unregistering transform Hrugor from actor 'Hrugor'."
Second bug is that:
When I start the Npc-player-conversation and finish it, then start the npcs-conversation and also let it finish. Sometimes, the npc-player-conversation would refuse to start, even though there is not condition blocking it, however, the npcs-converstaion works fine.
The console outputs: "Dialogue System: Bark (speaker=TestNPC (UnityEngine.Transform), listener=Player (UnityEngine.Transform)): 'Greetings!' speaker has no bark UI."
It seems like the npc is not overriding the display settings back properly.
Re: How to have two Dialogue System Controller running at the same time?
Hi,
Sorry, when you asked about two DialogueSystemControllers running at the same time (not allowed), it confused me.
What do you mean by "my NPCs would randomly get deleted"?
I'm just trying to get all the information to be able to provide as accurate an answer as possible.
Sorry, when you asked about two DialogueSystemControllers running at the same time (not allowed), it confused me.
What do you mean by "my NPCs would randomly get deleted"?
I'm just trying to get all the information to be able to provide as accurate an answer as possible.
-
- Posts: 7
- Joined: Sat Apr 17, 2021 2:17 pm
Re: How to have two Dialogue System Controller running at the same time?
It's alright, I'm sorry for now showing this clearly.
Here's a video demonstration the intended effects and the bugs:
00:00 Normal Player-NPC conversation, expected behaviour.
00:11 Normal NPCs conversation, expected behaviour.
00:40 "NPC would randomly get deleted", one of the NPCs in NPCs-conversation gets removed when I end Player-NPC conversation, which is totally unrelated.
00:58 NPC stops talking to the player after the settings has been overridden by the other two NPCs. Note that the NPC that stops talk also has a Display Setting Override script attached.
01:30 Current line disappears when another conversation starts.
And I have also attached my conversation setup.
The nodes has only simple scripts such as and for conditions.
Thanks again, Tony, for sticking with me here.
Here's a video demonstration the intended effects and the bugs:
00:00 Normal Player-NPC conversation, expected behaviour.
00:11 Normal NPCs conversation, expected behaviour.
00:40 "NPC would randomly get deleted", one of the NPCs in NPCs-conversation gets removed when I end Player-NPC conversation, which is totally unrelated.
00:58 NPC stops talking to the player after the settings has been overridden by the other two NPCs. Note that the NPC that stops talk also has a Display Setting Override script attached.
01:30 Current line disappears when another conversation starts.
And I have also attached my conversation setup.
The nodes has only simple scripts such as
Code: Select all
Continue()@1
Code: Select all
randomValue == 2
Thanks again, Tony, for sticking with me here.
- Attachments
-
- Player-NPC conversation setup.png (152.83 KiB) Viewed 475 times
-
- NPCs-Conversation.png (157.71 KiB) Viewed 475 times
Re: How to have two Dialogue System Controller running at the same time?
Thanks for the details. It looks like a bug. I can reproduce it here. I'll work on a fix and try to have it ready by the end of tomorrow.
-
- Posts: 7
- Joined: Sat Apr 17, 2021 2:17 pm
Re: How to have two Dialogue System Controller running at the same time?
Nice! I'm glad that it's reproducible on your end.
I look forward to seeing all my bugs vanish.
I look forward to seeing all my bugs vanish.
Re: How to have two Dialogue System Controller running at the same time?
I have a fix that passes all of my test cases. It will take a little time to make sure it won't have any impact to existing projects. I'll try to send you a patch to test by tomorrow morning.
Re: How to have two Dialogue System Controller running at the same time?
Hi,
Please try this patch:
DS_SimultaneousConversationOverridePatch_2021-04-20.unitypackage
These changes will be in version 2.2.17 also.
Please try this patch:
DS_SimultaneousConversationOverridePatch_2021-04-20.unitypackage
These changes will be in version 2.2.17 also.
-
- Posts: 7
- Joined: Sat Apr 17, 2021 2:17 pm
Re: How to have two Dialogue System Controller running at the same time?
New problem.
The current conversation ends abruptly when the new conversation with UI override starts.
Here's a video demonstrating this.
Are there problems with how my objects are setup? Am I using the right scripts? Everything has remained the same from the previous screenshots.
The current conversation ends abruptly when the new conversation with UI override starts.
Here's a video demonstrating this.
Are there problems with how my objects are setup? Am I using the right scripts? Everything has remained the same from the previous screenshots.