Streamed Levels Not Deserializing when Viewing Replay

Hey guys,

I’ve recently upgraded my project from 4.12 to 4.13 and it seems that the way streaming levels are treated in replays have changed in a way that breaks my playback of demos.

In 4.13 I can see that on frame 1 DemoNetDriver writes the current time followed by a list of StreamingLevels to load out to the .demo file on disc and I’ve confirmed that that is in the file. However, these seem to not be read back in on playback and as result I have an (effectively) empty world.

Any ideas? I’m going to be experimenting with the various serializers to see if I can make this issue reproduce in straight-forward scenario that doesn’t necessarily involve replays.


Found it!

The default it 4.12 and below was to force-load all streaming levels that were present in the persistent level whether or not they were visible while the replay was recording.

Now, in 4.13, streaming sub-levels are written out to the replay file only so they can be re-added as sub-levels if they are missing from the list held by World. The practical consequence of this is that streaming logic works the same as if you weren’t viewing a replay and for me that meant I needed to trigger my sub-levels to load themselves.

The cool benefit of this is that I now get my level-loading screen when loading a replay.