On my game, i have a large map with detailed buildings and locations, and I utilize streaming enabled to reduce memory and optimize the experience, however doing this causes some massive lag spikes when streaming in or out parts of the map, causing for a very unpleasant experience, meaning i cannot utilize streaming.
Repro file and steps are contained in staff message
Expected behavior
I expect streaming in and out parts of the map to be smooth and not heavily impact my framerate.
I have an, arguably, drastically more detailed map than what OP has - as we have a 1 to 1 recreation of a city in Kyoto
The streaming in/out lag spikes is jarring, and doesn’t align with any other AAA engine platform standards. I had assumed this was always just intended functionality, but seeing other bug reports, wanted to jump in
Here is a video of myself using our taxi system in our, marginally, outrageously detailed map. And, as you can see, the lag spikes are almost entire frame stops:
Our game typically uses VisTools to fix areas where engine fails on optimization, I’ve disabled it for the sake of the above video
For the sake of the video, I also lowered our streaming radius. I have it relatively large right now to mitigate the streaming freeze frames, but my ideal optimization route would be streaming having a lower target radius. Which just isn’t possible as is. My ideal radius for such a detail-heavy map would be about 145, but I have to have it at around 1024 so that the game doesn’t completely freeze frame
I really wanted to keep streaming radius as low as possible as, in principle, a low streaming radius would allow for a way more optimized experience with much less assets loaded. But as you can see by the literal freeze frames, it does more harm than good
My hope is that perhaps this gets better with Slim? But if this is not intended functionality with streaming, it is REALLY bad
This seems to be an inherent design flaw with instance streaming.
When stuff gets streamed in, you’re having to download all that data so you get Replicator ProcessPacket spikes because of all the new instances being added, on top of the fact that you’re likely having to build those instances as well.
So each time things stream in and out, you’re having to process a bunch of packets and create/destroy instances.