Proper way of saving changes in the level.

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By gromhunter
:warning: Old Version Published before Godot 3 was released.

I know this question is probably gets asked a lot but what i have a problem with is particulars of its implementation rather that how it is done i general.

My project is sort of 2D top down zelda-like

  1. Right now i have a main game scene and levels are loaded as children of said game scene( new scene is loaded, old is freed).
    What i want to do is to save changes in the scene when i load another one( like object that i picked up, or enemies killed), so that when i return they wont be reloaded as in default scene state.
    I do understand that i need to save each object individually and serialize it into save file, and then when loading scene just to restore all saved objects.

What bugs me is that when scene is initially changed it is loaded in its default state( with all enemies still alive, and all pickups untouched), and then i would need to free all of this loaded objects and load saved ones.
So i was wondering how to approach this more properly, so that i load only what i need to load.

Do i change the way my level data is stored and somehow save dynamic(pickups, enemies, etc) and static objects(walls, floors, all that) in different scenes? And then only initially load static stuff, and check dynamic one if i need to load default state or the one from the save?

Or do i ditch it completely and just serialize default levels same way i would saved data, and just solve all my problems with my own loading function.

It just seems that i am missing something. Is there any good examples i can look at that were made on Godot engine somewhere, that would be most helpful.