Wish for demoscene on how to structure multiple quests

Announcements, support questions, and discussion for the Dialogue System.
User avatar
Tony Li
Posts: 22051
Joined: Thu Jul 18, 2013 1:27 pm

Re: Wish for demoscene on how to structure multiple quests

Post by Tony Li »

Hi,
Ultroman wrote: Sat Sep 26, 2020 4:34 amIt still fades the menu in and out when it doesn't find any valid entries. Is that default behaviour? I'd like it to not show at all when there are no valid conversations.
Your Dialogue System Trigger's 'Skip If No Valid Entries' checkbox is ticked, so it will skip the conversation if it doesn't find any nodes whose Conditions are true or blank.

However, in your case, I suspect it's picking up the secondary <START> nodes that you're linking to, or something like that.

Try moving your first level of checks into the initial conversation (Griselda 1./Wakey wakey!), or link the initial conversation's <START> node to a single gatekeeper node that then links to the other conversations. In the gatekeeper node, return true only if you know one of the other conversations will have some content.
Ultroman
Posts: 39
Joined: Thu Sep 17, 2020 7:47 am

Re: Wish for demoscene on how to structure multiple quests

Post by Ultroman »

Tony Li wrote: Sat Sep 26, 2020 9:35 am However, in your case, I suspect it's picking up the secondary <START> nodes that you're linking to, or something like that.
I'm linking to a normal branching-node in the second conversation now, not the START-node. It's not too obvious in the screenshot, but in the previous screenshots, the "Quest Splitter" node in the first conversation is linking directly to the"Branching Node" in the second conversation.
Tony Li wrote: Sat Sep 26, 2020 9:35 am Try moving your first level of checks into the initial conversation (Griselda 1./Wakey wakey!), or link the initial conversation's <START> node to a single gatekeeper node that then links to the other conversations. In the gatekeeper node, return true only if you know one of the other conversations will have some content.
I would really like to avoid having a gatekeeper node with a huge condition checking all the quest states and then make it do quest checks again to see which one to pick. That's something I'll definitely forget to maintain when making new quests down the line. But if I have to, then I guess I have to.

It still fades in and out if I create the exact same node progression within a single conversation, so without a conversation link. In my new test-setup below, it still fades the dialogue menu in/out, despite only hitting None() and Continue() nodes. Note that the log is from after the first quest has been completed and the player has the second quest, and there are no nodes for when the second quest is "active" yet, so it's blocked by every node on the way, including the "Welcome to the workshop"-node, but it does a Continue() for each of them. I don't know which part is triggering the dialogue panel to open despite not hitting anything interesting:
Spoiler
Image
This is the log:
Spoiler
Image
User avatar
Tony Li
Posts: 22051
Joined: Thu Jul 18, 2013 1:27 pm

Re: Wish for demoscene on how to structure multiple quests

Post by Tony Li »

If the conversation tries to start and accepts any node as valid, even if its Sequence is None() or Continue(), it will open the dialogue UI in preparation for lines that may need to be visible.

You don't strictly have to use a gatekeeper node. That was a suggestion off the top of my head. But I acknowledge that it's not great because it has to be maintained.

Link Wakey wakey's <START> node to group nodes that have conditions. As long as none of those conditions are true, there won't be any valid nodes, so it will skip the conversation. Here's a simplified example:

falseGroups.png
falseGroups.png (13.61 KiB) Viewed 403 times

<START> links to two group nodes (false A and false B), both of which have conditions that evaluate to false. This means that their child nodes A and B are never considered, so there are no valid nodes. If you set the Dialogue Manager's Other Settings > Debug Level to Info, then when the Dialogue System Trigger tries to start, it will log:

Dialogue System: Conversation triggered on (GameObject name) but skipping because no entries are currently valid.
Ultroman
Posts: 39
Joined: Thu Sep 17, 2020 7:47 am

Re: Wish for demoscene on how to structure multiple quests

Post by Ultroman »

Ah, I think I understand. I thought it would plough through the conversation and only open the dialogue window if there's text to show.

Just to be clear: if I don't want the dialogue window to pop up at all, all the child-nodes of the START-node of the initial conversation MUST have a condition that blocks it from even considering that child-node?

Does that not mean, that if I made a conversation with child-nodes, each of which links to separate quest-conversation (handling their state between "unassigned" and "success"), then as long as one of those quests' condition resolves to true, but the quest-conversation has no valid nodes, then it'll still show the dialogue UI?

Is there perhaps a way to make it only show the dialogue UI when the first node with actual dialogue or responses is reached or something? That would be very useful. I thought that was what "SkipIfNoValidPoints" did, but it seems to only do half of what I thought it did :D It would remove the requirement to make these very specific structures, thus making the whole system more flexible. Especially, if it also works across conversation-links. Then I can spin a web of quests however I want, and if it hits a dead end, it just doesn't show anything. I have a use-case for this, where I need the player to wait for something, and while the player waits for the bool-Variable to be set to true, the questgiver should not say anything when prompted. I could fix this with conditions and more variables, but it would be so nice if it just didn't show when there's no dialogue to be had.
User avatar
Tony Li
Posts: 22051
Joined: Thu Jul 18, 2013 1:27 pm

Re: Wish for demoscene on how to structure multiple quests

Post by Tony Li »

I'll give that some thought, but my initial impression is that it will stay the way it is now. In some existing projects, the dialogue UI may open to indicate that a conversation has started, but the conversation may be configured to not show any subtitles. Perhaps it's all in voice acting, or something like that.

You should be able to simply change those initial condition-checking nodes in your conversations to Group nodes. Then they won't appear in the list of valid nodes.
Ultroman
Posts: 39
Joined: Thu Sep 17, 2020 7:47 am

Re: Wish for demoscene on how to structure multiple quests

Post by Ultroman »

Tony Li wrote: Sat Sep 26, 2020 12:19 pm I'll give that some thought, but my initial impression is that it will stay the way it is now. In some existing projects, the dialogue UI may open to indicate that a conversation has started, but the conversation may be configured to not show any subtitles. Perhaps it's all in voice acting, or something like that.
Please do consider it, at least as an option. It seems non-destructive to me, especially if it's made as a separate option, but I obviously don't have the knowledge of the project you possess, so what do I know xD But I can definitely see strong benefits from both modes of function, depending on which kind of control and UI you're going for at runtime.
Tony Li wrote: Sat Sep 26, 2020 12:19 pm You should be able to simply change those initial condition-checking nodes in your conversations to Group nodes. Then they won't appear in the list of valid nodes.
Thank you. I will look into that some more.
Ultroman
Posts: 39
Joined: Thu Sep 17, 2020 7:47 am

Re: Wish for demoscene on how to structure multiple quests

Post by Ultroman »

Dude, as soon as I made all my branching-nodes into Group-nodes, everything now works as intended. Even across Conversation-links. THANKS A WHOLE HEAP <3

For posterity, this setup with a conversation-link now works, where it doesn't show the dialogue UI at all.

Conversation 1: (the "Quest Splitter"-node has a conversation link to the "Branching Node" in Conversation 2, which has lower priority than the dialogue in Conversation 1, which is only shown once because of conditions)
Spoiler
Image

Conversation 2:
Spoiler
Image
User avatar
Tony Li
Posts: 22051
Joined: Thu Jul 18, 2013 1:27 pm

Re: Wish for demoscene on how to structure multiple quests

Post by Tony Li »

Glad to help. Thanks for sharing your final setup!
Post Reply