Page 1 of 2
Creating in-game tutorials
Posted: Tue Dec 24, 2024 11:11 am
by 1988Oleg1988
Hello!
I bought this wonderful asset a couple of years ago and now I'm trying to learn how to work with it. I watch lessons, read documentation.
But it's terribly long.
In my game, I need to make a tutorial. I need a solution to a simpler problem, i.e. show the inscription, move the camera, etc.
I want to ask if this asset is suitable for creating a tutorial in the game. It's just that the examples on the official channel are focused on creating quests with dialogues and so on. Is there a lesson where I could look more specifically at solving my problem?
Re: Creating in-game tutorials
Posted: Tue Dec 24, 2024 11:44 am
by 1988Oleg1988
Another error appeared when creating a quest.
StackOverflowException: The requested operation caused a stack overflow.
System.Int32.Equals (System.Int32 obj) <0x272a82da400 + 0x00018> in <1fd52158108c4fe3a6817b50854eb75e>:0
System.Collections.Generic.GenericEqualityComparer`1[T].Equals (T x, T y) (at <1fd52158108c4fe3a6817b50854eb75e>:0)
System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) (at <1fd52158108c4fe3a6817b50854eb75e>:0)
System.Collections.Generic.Dictionary`2[TKey,TValue].TryGetValue (TKey key, TValue& value) (at <1fd52158108c4fe3a6817b50854eb75e>:0)
PixelCrushers.QuestMachine.Quest.GetContentByID (System.Int32 contentID) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:1202)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:26)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
PixelCrushers.QuestMachine.LinkQuestContent.GetEditorName () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Subasset/Quest Content/LinkQuestContent.cs:27)
Re: Creating in-game tutorials
Posted: Tue Dec 24, 2024 12:30 pm
by Tony Li
Hi,
Regarding that error, did you try to link the quest content to itself (i.e., link it to the Link quest content)? (In QM version 1.2.51, to prevent you from making this kind of infinite loop, the editor won't allow you to point a Link quest content to a Link quest content.)
Do you happen to have a license for the Dialogue System for Unity? There is a tutorial example for that. You might prefer to use the Dialogue System in this case.
However, if you don't have the Dialogue System, or if you prefer to use Quest Machine, here's a tutorial example:
QM_TutorialExample_2024-12-24.unitypackage
Re: Creating in-game tutorials
Posted: Wed Dec 25, 2024 9:54 am
by 1988Oleg1988
Regarding that error, did you try to link the quest content to itself (i.e., link it to the Link quest content)? (In QM version 1.2.51, to prevent you from making this kind of infinite loop, the editor won't allow you to point a Link quest content to a Link quest content.)
After restarting unity the error disappeared
Do you happen to have a license for the Dialogue System for Unity? There is a tutorial example for that. You might prefer to use the Dialogue System in this case.
Yes, I have a license for the dialog system. I have already used it to create a tutorial.
I still don't understand what the fundamental functional difference is between the Quest machine and the dialogue system. I thought that they complement each other, but I come to the conclusion that these are 2 parallel branches.
I also thought that the Quest machine could save the status of completed quests.
Re: Creating in-game tutorials
Posted: Wed Dec 25, 2024 10:33 am
by Tony Li
Hi,
Here's the comparison chart:
Dialogue System & Quest Machine
You can use them together (they have integration) or separately.
Quest Machine and the Dialogue System share the same save system. When you import either asset, it imports the save system. Quest Machine can save the state of completed quests. You have the option to remember completed quests or not. See the Quest Journal component's Save Settings > Remember Completed Quests checkbox. Sometimes devs like to UNtick this checkbox so keep the size of the Quest Journal smaller. You can also specify whether to remember a completed quest on the quest itself.
Re: Creating in-game tutorials
Posted: Wed Dec 25, 2024 11:53 am
by 1988Oleg1988
I have read the Save System Manual, but I would like to know if there is a video tutorial?
Re: Creating in-game tutorials
Posted: Wed Dec 25, 2024 8:24 pm
by Tony Li
Hi,
There's a video tutorial in the Dialogue System playlist:
Save System.
Most of the same info applies to Quest Machine since they use the same save system. If you have any questions, don't hesitate to ask. I'll be happy to answer any questions.
Re: Creating in-game tutorials
Posted: Thu Dec 26, 2024 12:01 pm
by 1988Oleg1988
Thanks for the help, but I didn't develop any love for quest machines. I'll continue using only the dialogue system. Can I continue asking questions about the dialogue system here or is it better to create a separate topic?
Re: Creating in-game tutorials
Posted: Thu Dec 26, 2024 12:33 pm
by Tony Li
Hi,
For Dialogue System questions, please create a post in the Dialogue System section to avoid confusion.
Re: Creating in-game tutorials
Posted: Sat Dec 28, 2024 10:40 am
by 1988Oleg1988
What you have done is an incredibly cool system, but unfortunately there are few examples of its use.
Since the system is complex and it is difficult for a beginner to understand what is what, I tried to find examples as similar as possible to my case.
In order to implement the solution to my problem using the principle of analogies.
In my opinion, I lacked a certain fundamental scheme of how things work, where and what scripts should be located.
There was not enough example for implementing quests in a turn-based game, where I built something for the execution of some mission (I gave the construction conditionally).
There was not enough example of how to save and load a dialogue with the built-in system and an external save system with subsequent configuration of the system from the script.
I hope that I did not offend anyone, I just expressed my opinion.