How to stream levels async/hitch-free?

UE 4.6, Win 8.1, 32 GB RAM, W540 workstation with Nvidia Quadro 2 or 3 GB VRAM; world-composition level-streaming enabled:

I have for testing purposes a 24x24km “world” of 6x6 seamless landscape tiles. Each of those 4x4km tiles was imported (via import-tiled-terrain feature) from a 4033x4033 heightmap so roughly 1m resolution. A custom layer ensures distance-based stream-in/out at 1.5km distance.

For now, no LODs, no foliage, no other meshes or content, all tiles share the same simple single-texture material (rock_sandstone starter content). As simple as it gets.

Now a pressing question!

As levels are streamed in and out in Play mode, there’s always a hitch or game freeze of 1-3 seconds. That’s not what I’d call “streaming”… how do I enable or fine-adjust async-streaming here? I assume this is normal texture streaming to low mip-levels are uploaded first and big textures will most likely be uploaded partially over multiple frames. Looks like I’d need to tweak something here because as it is now.


Level streaming performance can be only measured in a packaged build. In the editor environment it will hitch most of the time. Also I would not recommend to add “details” to the landscape tile sub-level. For “details” you should create smaller sub-levels with shorter streaming distance (only foliage has to be in the same sub-level).

For second question it’s better to create new topic.

Good to know, thanks! Will remove the 2nd question and ask it in a new question.

So I made a Win32 build, “shipping”/“production” build configuration, and the hitching is just as bad, subjectively even slightly worse, than in-editor… how odd! Considering this mid-2014 model is one of the fastest mobile workstations around (all specs maxed out and no energy-saving etc enabled), and considering I have nothing but a 3rd-person pawn, a sky, and streaming landscape tiles without foliage all sharing nothing-but-a-single-grass-texture that’s supremely discouraging… no custom code that could slow things down, nothing but raw UE4.6 starter pawn and some world-comp/streamed landscape tiles.

Uploading a copy of the project to here (5GB just for heightmaps? oh well :wink: in case anyone ever wants to check it out…

We currently working on level streaming performance, it’s in our high priority list. You will see improvements in next 2 releases.

Editor does not stream sub-levels from disk when you run PIE, it duplicates them in memory. That is probably why you see shorter hitches in the editor.

Right now streaming does not work well on sub-levels with high number of primitives. By default 4x4km landscape tiles use about 1000 components, try to create landscape tiles with smaller number of components, it should help.

“By default 4x4km landscape tiles use about 1000 components, try to create landscape tiles with smaller number of components” — will see if this is feasible, at 24x24km (20km game-world plus 2km “non-enterable border-lands mountaineous backdrop padding each side”) we’d be looking at 12x12=144 tiles if I switched to 2017x2017 tiles, see that as slightly unmanageable but OK maybe I’ll try it out.

If streaming performance is a top-priority for the dev team I’m glad already… must be tough to optimize & debug this stuff, major props to the devs. Would always suggest to test with extreme-case maxed-out open-worlds like this here case… :wink: