Quests not showing up in Quest Journal UI

Announcements, support questions, and discussion for Quest Machine.
Post Reply
dkrusenstrahle
Posts: 39
Joined: Sat Apr 20, 2024 7:03 pm

Quests not showing up in Quest Journal UI

Post by dkrusenstrahle »

My accepted quests are not showing up in the journal UI.
The quest is added to the players activate quests but now showing up.

I tried with default prefab for ui. Same result.
Attachments
Screenshot 2024-11-12 at 18.26.26.png
Screenshot 2024-11-12 at 18.26.26.png (78.31 KiB) Viewed 184 times
Screenshot 2024-11-12 at 18.25.50.png
Screenshot 2024-11-12 at 18.25.50.png (18.73 KiB) Viewed 184 times
Last edited by dkrusenstrahle on Tue Nov 12, 2024 12:45 pm, edited 1 time in total.
User avatar
Tony Li
Posts: 22104
Joined: Thu Jul 18, 2013 1:27 pm

Re: Quests not showing up in Quest Journal UI

Post by Tony Li »

Hi,

Are there any errors or warnings in the Console window?

If you play the game in the Unity editor's play mode, accept the quest, and then inspect the player (i.e., GameObject with QuestJournal component), what are the states of the quest nodes in the Quest Editor window? Is the main quest state set to Active?

If you download and play the completed tutorial scene (link in tutorial's description), does the quest show up in the quest journal UI?
dkrusenstrahle
Posts: 39
Joined: Sat Apr 20, 2024 7:03 pm

Re: Quests not showing up in Quest Journal UI

Post by dkrusenstrahle »

No direct errors in the console (see screenshot).
The Quest is set to Successful (no journal entries during the quest either).
All nodes seems done.

I also tried the demo but there is no way to interact with the quest givers (I pressed B and all other keys) so I cannot start a quest to try to see if it ends up in the journal.

And yes, when I download the tutorial assets it shows up in the journal after accepting the quest.
I tried the Quest Machine prefab in my own scene and get the same result. The whole process works (just like with my prefab) but the quest does not show up in the Journal. I also tried with the Quest Giver from the working tutorial scene and the database and quest from that scene to. Still does not show up.

I also tried my prefab UI in the working scene and using that one the quest does NOT show up in my journal UI there either. Very strange. During runtime I check the actual UI parts that should be showing the quest in the journal and they are turned off and they are only templates (no actual data) so it can¨t be a UI hidden/visibility issue.
Attachments
Screenshot 2024-11-13 at 00.11.28.png
Screenshot 2024-11-13 at 00.11.28.png (85.94 KiB) Viewed 145 times
Screenshot 2024-11-12 at 23.33.38.png
Screenshot 2024-11-12 at 23.33.38.png (458.74 KiB) Viewed 150 times
Screenshot 2024-11-12 at 23.22.33.png
Screenshot 2024-11-12 at 23.22.33.png (38.52 KiB) Viewed 151 times
Screenshot 2024-11-12 at 23.21.39.png
Screenshot 2024-11-12 at 23.21.39.png (82.65 KiB) Viewed 151 times
Screenshot 2024-11-12 at 23.21.01.png
Screenshot 2024-11-12 at 23.21.01.png (58.47 KiB) Viewed 151 times
Last edited by dkrusenstrahle on Wed Nov 13, 2024 4:52 am, edited 2 times in total.
User avatar
Tony Li
Posts: 22104
Joined: Thu Jul 18, 2013 1:27 pm

Re: Quests not showing up in Quest Journal UI

Post by Tony Li »

Hi,

> The Quest is set to Successful (no journal entries during the quest either).
> All nodes seem done.

Does this happen as soon as you accept the quest? If so, then the conditions on the "Enter circle" and "Return" nodes are become true immediately for some reason. The quest and those nodes should remain in the Active state until you complete their conditions. If you intend for the quest to be active at this point, check the conditions on the nodes.


> I also tried the demo but there is no way to interact with the quest givers (I pressed B and all other keys) so I cannot start a quest to try to see if it ends up in the journal.

The gamepad B button (East button) or right mouse click should interact with NPCs in Quest Machine's Demo scene. Note: The Demo scene assumes you're using Unity's built-in input manager with default input settings. If you've switched to a different input system, such as the Input System package, you'll need to update the Demo scene to work with whatever input system you're using.


> And yes, when I download the tutorial assets it shows up in the journal after accepting the quest.
> ...
> I also tried my prefab UI in the working scene and using that one the quest does NOT show up in my journal UI there either.

This sounds like it's an issue with the prefab UI. Are all of the fields of the UnityUIQuestJournalUI component assigned?
dkrusenstrahle
Posts: 39
Joined: Sat Apr 20, 2024 7:03 pm

Re: Quests not showing up in Quest Journal UI

Post by dkrusenstrahle »

The whole process works fine (almost).

1. I approach the Quest Giver.
2. I am presented with a quest.
3. I accept it (and the node is active)
4. I visit the area (and that node is active)
5. I return to the captain (and now all nodes are active)

All GUI elements updates as they should, when they should. The only issue is that the quest never appears in the Journal (even though I complete all parts and there is texts in all relevant places).

I also tried the tutorial database (with quest) and same result.
And as I said, I even tried with the tutorial prefabs. Same result.


I created a script that checks the journal when hitting U key.

1. I check after accepting the quest and get this:

Quest in journal: ExploreCircleAndReturn
Quest state: Active

2. I check after completing first step and get this:

Quest in journal: ExploreCircleAndReturn
Quest state: Active

3. I check after returning to the captain (last step) and get this:

No quests found in the journal.

Debug says:

Quest Machine: ExploreCircleAndReturn.SetState(Disabled, informListeners=True)
UnityEngine.Debug:Log (object,UnityEngine.Object)
PixelCrushers.QuestMachine.Quest:SetState (PixelCrushers.QuestMachine.QuestState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:933)
PixelCrushers.QuestMachine.Quest:DestroyInstance (PixelCrushers.QuestMachine.Quest) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:679)
PixelCrushers.QuestMachine.QuestListContainer:DeleteQuest (PixelCrushers.QuestMachine.Quest) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:327)
PixelCrushers.QuestMachine.QuestJournal:CheckQuestState (PixelCrushers.MessageArgs) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestJournal.cs:172)
PixelCrushers.QuestMachine.QuestJournal:OnMessage (PixelCrushers.MessageArgs) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestJournal.cs:139)
PixelCrushers.MessageSystem:SendMessageToListener (PixelCrushers.MessageSystem/ListenerInfo,object,object,string,string,PixelCrushers.MessageArgs) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:402)
PixelCrushers.MessageSystem:SendMessageWithTarget (object,object,string,string,object[]) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:377)
PixelCrushers.MessageSystem:SendMessage (object,string,PixelCrushers.StringField,object[]) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:489)
PixelCrushers.QuestMachine.QuestMachineMessages:QuestStateChanged (object,PixelCrushers.StringField,PixelCrushers.QuestMachine.QuestState) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Utility/QuestMachineMessages.cs:160)
PixelCrushers.QuestMachine.Quest:SetState (PixelCrushers.QuestMachine.QuestState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:948)
PixelCrushers.QuestMachine.QuestNode:SetState (PixelCrushers.QuestMachine.QuestNodeState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Node/QuestNode.cs:473)
PixelCrushers.QuestMachine.QuestNode:SetState (PixelCrushers.QuestMachine.QuestNodeState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Node/QuestNode.cs:465)
PixelCrushers.QuestMachine.QuestNode:OnParentStateChange (PixelCrushers.QuestMachine.QuestNode) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Node/QuestNode.cs:540)
PixelCrushers.QuestMachine.QuestNode:SetState (PixelCrushers.QuestMachine.QuestNodeState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Node/QuestNode.cs:450)
PixelCrushers.QuestMachine.QuestNode:OnConditionsTrue () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Node/QuestNode.cs:527)
PixelCrushers.QuestMachine.QuestConditionSet:SetTrue () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Condition Set/QuestConditionSet.cs:222)
PixelCrushers.QuestMachine.QuestConditionSet:OnTrueCondition () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Condition Set/QuestConditionSet.cs:217)
PixelCrushers.QuestMachine.QuestCondition:SetTrue () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Condition/QuestCondition.cs:75)
PixelCrushers.QuestMachine.MessageQuestCondition:PixelCrushers.IMessageHandler.OnMessage (PixelCrushers.MessageArgs) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Condition/MessageQuestCondition.cs:171)
PixelCrushers.MessageSystem:SendMessageToListener (PixelCrushers.MessageSystem/ListenerInfo,object,object,string,string,PixelCrushers.MessageArgs) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:402)
PixelCrushers.MessageSystem:SendMessageWithTarget (object,object,string,string,object[]) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:377)
PixelCrushers.MessageSystem:SendMessageWithTarget (object,object,string,PixelCrushers.StringField,object[]) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/Message System/MessageSystem.cs:441)
PixelCrushers.QuestMachine.QuestMachineMessages:DiscussedQuest (object,object,PixelCrushers.StringField,PixelCrushers.StringField) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Utility/QuestMachineMessages.cs:235)
PixelCrushers.QuestMachine.QuestGiver:ShowActiveQuest (PixelCrushers.QuestMachine.Quest) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:774)
PixelCrushers.QuestMachine.QuestGiver:StartMostRelevantDialogue () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:684)
PixelCrushers.QuestMachine.QuestGiver:StartDialogue (UnityEngine.GameObject) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:597)
PixelCrushers.QuestMachine.QuestGiver:StartDialogueWithPlayer () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:567)
UnityEngine.Events.UnityEvent`1<UnityEngine.GameObject>:Invoke (UnityEngine.GameObject)
PixelCrushers.TriggerEvent:OnTriggerEnter (UnityEngine.Collider) (at Assets/ThirdParty/Pixel Crushers/Common/Scripts/UnityEvents/TriggerEvent.cs:36)

Quest Machine: ExploreCircleAndReturn.SetState(Disabled, informListeners=True)
UnityEngine.Debug:Log (object,UnityEngine.Object)
PixelCrushers.QuestMachine.Quest:SetState (PixelCrushers.QuestMachine.QuestState,bool) (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:933)
PixelCrushers.QuestMachine.Quest:OnDestroy () (at Assets/ThirdParty/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:665)

This is my script:

Code: Select all

using UnityEngine;
using PixelCrushers.QuestMachine;
using System.Collections.Generic;

public class QuestDebugger : MonoBehaviour
{
    private QuestJournal questJournal;

    void Start()
    {
        questJournal = GetComponent<QuestJournal>();

        if (questJournal == null)
        {
            Debug.LogWarning("QuestJournal component not found on this GameObject.");
        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.U))
        {
            CheckQuestsInJournal();
        }
    }

    public void CheckQuestsInJournal()
    {
        if (questJournal == null)
        {
            Debug.LogWarning("QuestJournal component is missing.");
            return;
        }

        List<PixelCrushers.QuestMachine.Quest> quests = questJournal.questList;

        if (quests == null || quests.Count == 0)
        {
            Debug.Log("No quests found in the journal.");
            return;
        }

        foreach (PixelCrushers.QuestMachine.Quest quest in quests)
        {
            Debug.Log("Quest in journal: " + quest.id);
            Debug.Log("Quest state: " + quest.GetState().ToString());
        }
    }
}

At no point does the quest appear in the journal.
I am using More Mountains top down engine if that is important
User avatar
Tony Li
Posts: 22104
Joined: Thu Jul 18, 2013 1:27 pm

Re: Quests not showing up in Quest Journal UI

Post by Tony Li »

The addition of TDE is fine; that shouldn't be a problem.

Would it be possible for you to send a reproduction project to tony (at) pixelcrushers.com?
Post Reply