My approach is based on the method shown in the godot documentation article “Saving Games” https://docs.godotengine.org/en/stable/tutorials/io/saving_games.html
- Represent each entity’s state as Class, but save them as Dictionaries
- No more guesswork, as it was the case when only dictionaries were used!
- Instead of deleting and instantiating every node that we read from a save file, only instantiate nodes that were created dynamically
- Use Reflection Feature (get_property_list() & set_property()) of gdscript to automate the process of serialization
- A presentation of the method can be found here