World Partition and Save System

Now that World Partition seems to be goto Solution for Open-Worlds, I wonder how saving a game with World Partition would work.

Just a quick outline what the extra challenge is:
Because World Partition constantly unloads Actors and not all Actors are in Memory all the time you can’t just call “For each Actor I want to Save, get their SaveData and Save to Disk” because some of them might be unloaded and not exist anymore.
Now a bad hack is to just to flag all the Saveable Actors Persistent, but that seems like a bad idea. You can have thousands of Saveable Actors, for example, in a RPG.

My questions are:

  1. Is there any Callback/Event for when an Actor is unloaded by World Partition? That would be an good place to gather save data.

  2. How are moving Actors handled by World Partition? Do moving Actors always belong to one Partition? Are they automatically moved to other Partitions based on their Position? If no, how can you do that yourself?

  3. Are there any Plans for a new SaveSystem replacing the old SaveGameObjects? The old System is very limited and doesn’t support World Partition.

1 Like

I imagine you can create a separate Level that doesn’t partition, and that can hold your actors. If they simulate, you’d have to pause them when unloading the world segment, though.

1 Like

As far as I can see from code World Partition works with ULevelStreaming. So nothing is changed in terms of how data is loaded/unloaded. If you old save system works with World Composition or level streaming then it works with World Partition.