+1 vote

Hi!

I'm following the godot saving games article over on the godot docs, and I have a problem with the save system that I don't know how to fix. Basically I'm putting all objects that I want to save in a group, writing a save function for each object that returns a dictionary, finding all objects that are in the group, converting them to JSON and saving them serially in a file. When I load the game I convert each line in the save file to JSON, load the objects by type and add the new object as a child of the parent (defined in the save method).

The problem is that if I add an object to the scene when I already have a save file it will be removed. Is there a way to fix this? The code is basically the one on the docs but with some small modifications that aren't necessary to solve this problem.

Thanks!

asked Mar 15 in Engine by Freeranger Studios (17 points)

Not sure, if I understand your problem correctly. Creating and loading a save file works? But if you create new objects after loading it, these objects are "removed"? By what? When? Why? Or do you simply mean, they aren't written to the save file?

The code is basically the one on the docs but with some small modifications that aren't necessary to solve this problem.

How do you know this, if you haven't solved the problem yet? ;) Honestly, it just sounds like you forgot to add the newly created objects to the "Persist"-group.

Sorry if my question wasn't clear enough. Creating and loading works fine. The problem is that the code removes all objects in the group "persist" and then loads the ones that are in the save file, to prevent duplicates. That's where the problem is. The new objects (which are in the "persist" group) get deleted, and since they aren't in the save file they won't be replaced by another object in the same location. This is the problem that I'm trying to solve, but I can't come up with a valid solution.

Sorry, I still don't get it. :( You load from your save-file, create some additional nodes, add them to the "Persist"-group and then...? If you save again afterwards, they should be added to the save-file. But you claim they are not: "and since they aren't in the save file". So the only logical conclusion would be, that you haven't saved again. But in this case, I don't understand, why you expect them to be restored in the first place?

Thanks for trying to help, the problem was that in order to prevent duplicates when the game started (objects created from save file and the already existing objects) I removed all objects in the "persistent" group. Instead of removing all of them, I gave each object an ID, and if 2 objects had the same ID, the initial one was removed. Thanks for your help though!

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.