Saving actors inside level

i would use a base class instead of an interface instead.
interfaces are very limiting.
in such baseclass you can add functions for load/save.
and also variables (which in usual terms you can’t put in interfaces) for stuff like positions and interacted.

then you can call load/save of any actor without having to deal with all that stuff.
i think it will be helpful in the future.

also, instead of saving all actors to a variable, which could prevent them to be deleted, (unless you use a weak reference, but then you need to check validity), i would recommend changing the actor location into a map, and using an id as index, maybe the actor’s name will suffice (use the Name type not the String, since is much more performant on comparisons and lookups).

but i really recommend the baseclass one.
as it keeps all stuff loading/saving in one place.
you can even make it overrideable (virtual) so that child objects can add extra functionality specific to that class, or handle specific details.
maybe one class saves an extra variable, maybe a class has to do something to reset, etc…
which you can’t easily do with the other method.
and you’ll keep adding variables and variables to the game state.
(but if you really really wanna go through the game state route. please consider using a struct to store all data)