Saving only quests and quest variables

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
LovreG
Posts: 4
Joined: Wed Aug 23, 2023 1:15 pm

Saving only quests and quest variables

Post by LovreG »

Hi everyone!
So I've been playing around the dialogue system the whole day today and I finally decided okay, let's check out the save system. As I previously already had saving system implemented in my game I didn't really need much of it. What I do need is to save quests and it's variables. Now, I tried researching this topic and found this forum post: https://pixelcrushers.com/phpbb/viewtop ... ave#p40173
Sadly, it didn't work for me. I tried implementing the whole saving system too, and after I do it quests do kind of save, but I can't open the quest log nor interact with npcs (plus the game is like 10 times slower). I would love to save only the quests though if that is possible. So if anyone has an idea of what to do, please do leave a comment!Thank you in advance! :D
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Saving only quests and quest variables

Post by Tony Li »

Hi,

What part of

Code: Select all

string s = PixelCrushers.DialogueSystem.PersistentDataManager.GetSaveData();
and

Code: Select all

PixelCrushers.DialogueSystem.PersistentDataManager.ApplySaveData(s);
didn't work for you? After applying save data, you may also want to call DialogueManager.SendUpdateTracker() to tell the quest tracker HUD to update its display with the restored data.
LovreG
Posts: 4
Joined: Wed Aug 23, 2023 1:15 pm

Re: Saving only quests and quest variables

Post by LovreG »

After using those lines of code and saving it in the string variable s, after I try to retrieve the data next time I load up the game (I do it at the start method in the script, not with a public method with a button) nothing happens. I'm not sure what I'm doing wrong.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Saving only quests and quest variables

Post by Tony Li »

Try waiting until the Dialogue System is initialized. There are a few ways to do this, such as hooking into the DialogueManager.instance.initializationComplete C# event in an Awake() method, or waiting for DialogueManager.instance.isInitialized to be true. But the easiest is to wait until the end of the start frame:

Code: Select all

IEnumerator Start()
{
    yield return new WaitForEndOfFrame();
    PixelCrushers.DialogueSystem.PersistentDataManager.ApplySaveData(s); // Assumes 's' contains save data
}
LovreG
Posts: 4
Joined: Wed Aug 23, 2023 1:15 pm

Re: Saving only quests and quest variables

Post by LovreG »

I did that. I set the string s to public to see what is going on, it saves it but when i restart play mode it does not load it. It's values remain empty. I even tried making a public LoadQuest method to try to load it from the button, it doesn't do anything. I followed your tutorial on youtube so I know the quest is set up properly. I'm sorry for taking so much of your time, I feel like an idiot haha.
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Saving only quests and quest variables

Post by Tony Li »

Hi,

After you run this code:

Code: Select all

string s = PixelCrushers.DialogueSystem.PersistentDataManager.GetSaveData();
Are you saving the value of s anywhere in your own saving system?

Make sure to retrieve the value of s from your own saving system before passing it to:

Code: Select all

PixelCrushers.DialogueSystem.PersistentDataManager.ApplySaveData(s);
Otherwise you'll just be passing an empty string, which will do nothing.
LovreG
Posts: 4
Joined: Wed Aug 23, 2023 1:15 pm

Re: Saving only quests and quest variables

Post by LovreG »

I think I figured it out, I was at fault all along, being such an newbie I had an issue with my SaveSystem script. Thank you so much for your time!
User avatar
Tony Li
Posts: 22118
Joined: Thu Jul 18, 2013 1:27 pm

Re: Saving only quests and quest variables

Post by Tony Li »

Glad you got it figured out!
Post Reply