Barks seem to ignore a branch?

Announcements, support questions, and discussion for the Dialogue System.
2linescrossed
Posts: 31
Joined: Tue May 16, 2023 10:37 pm

Barks seem to ignore a branch?

Post by 2linescrossed »

Hi, simple question; but why does my barker only seem to return the 2nd and 3rd branches of my bark conversation?


I've got a very basic bark going on, simply just a three-branch conversation of one line each.
I doublechecked, but all three nodes have normal priority. Giving the first node higher priority lets it play like normal, but when all three have normal prio, only 2 and 3 play. Could something else be causing this problem?
User avatar
Tony Li
Posts: 21049
Joined: Thu Jul 18, 2013 1:27 pm

Re: Barks seem to ignore a branch?

Post by Tony Li »

Hi,

If possible, can you back up your project, make sure the backup is good, update to the current version of the Dialogue System, and then check if the issue is still there?

If the issue is still there, do your bark dialogue entries have Conditions? You can temporarily set the Dialogue Manager's Other Settings > Debug Level to Info to see if one of them is evaluating false.

If neither of those are the issue, please let me know how your barks are configured (e.g., Bark On Idle? Dialogue System Trigger? What is the order dropdown set to -- Random? Sequential?).
2linescrossed
Posts: 31
Joined: Tue May 16, 2023 10:37 pm

Re: Barks seem to ignore a branch?

Post by 2linescrossed »

Okay, I updated my dialogue manager, which didn't fix the problem but I did do some further testing.
For whatever reason, the barks seem to specifically always ignore what the '1' link is in the priority. Even though I deleted and remade the node in question, the 'ignored' node is always the one with the '1' number.
Even if I have 2, 3 or 4 nodes, it seems to always be the '1' node that's ignored, even if the internal ID is different.

I don't know where the 'other settings' are for the Dialog System, but I've not set any conditions on any of my barks right now.
The way I'm triggering them shouldn't be the problem; I've basically assigned a scriptable object corresponding to the types of barks I want, then simply tell the object what type of bark to play. I don't think this should be causing the problem because it just randomly retrieves one of the barks from within the conversation... except for the '1' branch.

The script that's triggering the bark is simply doing a DialogueManager.Instance.Bark call, using this.transform as the bark's position. What do you mean by 'Order dropdown'? That may be related to what's currently happening.
User avatar
Tony Li
Posts: 21049
Joined: Thu Jul 18, 2013 1:27 pm

Re: Barks seem to ignore a branch?

Post by Tony Li »

Hi,

The Other Settings > Debug Level dropdown is on the Dialogue Manager GameObject's inspector.
More info: Logging & Debugging Tutorial.

Regarding Order, take a look at the Enemy GameObjects in DemoScene1. They have Bark On Idle components with a Bark Order dropdown that can be Random, Sequential, or First Valid. (If you play the scene, you should also see that the enemies play all 3 bark entries in the Enemy Barks conversation.)

The DialogueManager.Bark() method can accept an optional BarkHistory object. This object has an "order" property that specifies whether the bark should choose randomly from the valid dialogue entries, use them in sequential order, or just grab the first one whose Conditions are true or blank and use that.

Is it possible that your entry '1' isn't linked from <START>, or that the link's priority is lower than the other entries?
2linescrossed
Posts: 31
Joined: Tue May 16, 2023 10:37 pm

Re: Barks seem to ignore a branch?

Post by 2linescrossed »

Hmm, I double checked but the nodes still have normal priority through all of them. Irritatingly, this problem is still present across pretty much every 3-branch bark I've made. I'm genuinely unsure what could be causing it, but besides working around it by adding a dummy '1' node to every bark, are there any possible solutions or other places I should investigate?

The line that calls the bark is this:
DialogueManager.Instance.Bark(dialogTable[responseType], this.transform);
(Dialog table is a dictionary with responseType variables that return a bark, but again, it plays the other two nodes without issue, so I'm unsure what could be causing this.)
Attachments
dialognodes.PNG
dialognodes.PNG (118.36 KiB) Viewed 15728 times
User avatar
Tony Li
Posts: 21049
Joined: Thu Jul 18, 2013 1:27 pm

Re: Barks seem to ignore a branch?

Post by Tony Li »

Hi,

Can you send a reproduction project to tony (at) pixelcrushers.com?
2linescrossed
Posts: 31
Joined: Tue May 16, 2023 10:37 pm

Re: Barks seem to ignore a branch?

Post by 2linescrossed »

Okay, I've sent my example project over, hopefully everything will work. If not, please let me know and I'll attempt re-sending the project files.
User avatar
Tony Li
Posts: 21049
Joined: Thu Jul 18, 2013 1:27 pm

Re: Barks seem to ignore a branch?

Post by Tony Li »

Thanks for sending the reproduction project. I'll let you know what I find by the end of the day.
User avatar
Tony Li
Posts: 21049
Joined: Thu Jul 18, 2013 1:27 pm

Re: Barks seem to ignore a branch?

Post by Tony Li »

The first time you bark a Random bark, the Dialogue System will not use the first dialogue entry, under the assumption that the first entry was most recently used before. To handle this, use BarkHistory.

Here's one way to do it using the example in your reproduction project:

In NPCConvoManager, add a BarkHistory variable:

Code: Select all

public BarkHistory barkHistory = new BarkHistory(BarkOrder.Random);
and in playPlayerDialog() pass it to the Bark() method:

Code: Select all

DialogueManager.Instance.Bark(dialogTable[responseType], this.transform, barkHistory);
2linescrossed
Posts: 31
Joined: Tue May 16, 2023 10:37 pm

Re: Barks seem to ignore a branch?

Post by 2linescrossed »

Much thanks for the response and solution, things seem working better now!
Post Reply