Page 2 of 2
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 9:35 am
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.
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 10:39 am
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:
This is the log:
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 11:35 am
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 (13.61 KiB) Viewed 406 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.
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 12:06 pm
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
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.
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 12:19 pm
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.
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 12:28 pm
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.
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 12:37 pm
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)
Conversation 2:
Re: Wish for demoscene on how to structure multiple quests
Posted: Sat Sep 26, 2020 8:59 pm
by Tony Li
Glad to help. Thanks for sharing your final setup!