What are some best practices for serializing level world state?

Out of the box nothing is made to serialize state in the game framework.
I was curious how others are approaching the following:

  • Saving destructible components state
  • Saving dynamic spawned objects state
  • Saving blueprint created objects
  • Saving level blueprint variables

Destructibles don’t replicate and don’t have any properties marked up with SaveGame so I’d have to add support for this.

Dynamic objects can be saved by saving their class, fullname, transform and their SaveGame properties to a struct and then spawning a new actor with the old serialized info post load.
See second answer in by Ben Zeigler for the code here.

I don’t know how to identify blueprint created objects in code.
I don’t know how to identify or serialize a level blueprint actor and its respective blueprint created variables that are marked with SaveGame.

Furthermore, I don’t know to clear all spawned or transient objects in the world that I don’t care about without doing a server travel. I wish LevelRest() in game mode did more work on more actors.

Yea, I would like to read answers for your questions too.