Optimizing Large Open-Worlds in UE5?

Have you ever optimize performance in a large open-world game using Unreal Engine 5, especially with Nanite and Lumen enabled? Please gimme some tips.

There aren’t even any released games using UE5.
And there is no such thing as optimizing something that sits in an Alpha stage.

Wait the 3 to 6 years for epic to get their act together, then maybe you can consider using UE5 in videogame production as an indy dev without needing a full team to tear it down and re-build the bits that don’t work.

Otherwise, pull the source code, build the engine, and start replacing out modules that dont work to get to something playable.
Chanches are you won’t be able to anyway, the FPS are something below 30 for 800x600 when you enable all the nice features…

Oh. And probably forget large.
The engine in its current state cant even do 8km maps appropriately.

Ue4 on the other hand handles large world suff just fine. So consider that.

This is a really vague question that’s hard to answer without knowing where specifically you’re bottlenecked, but some rules of thumb that work for me with World Partition:

  • Always have multiple World Partition grids for different scales of objects (i.e. A grid for Terrain, a grid for Buildings, a grid for smaller decorative stuff, etc), and set your cell sizes and streaming distances for those grids progressively smaller. Largest cell size and streaming distance for largest stuff, smallest for smallest stuff. You can also tweak the streaming priorities for the different grids so the CPU isn’t dedicating the same resources for each one when the cells load.
  • For the Terrain grid, set the grid cell size to the same size as the Landscape Streaming Proxy actors, and offset the origin so that the grid is perfectly aligned with those actors.
  • World Partition HLODs are counterintuitive and very poorly documented. The thing to know about them is that HLODs are generated based on the previous grid’s cell size, not the HLOD grid’s cell size. Also, it’s a good idea to make sure that the ‘Default HLOD Layer’ is set to nothing in the World Settings so you don’t have to manually exclude stuff from HLODs.
  • The first layer of Landscape HLODs will ignore all of the HLOD layer settings. You’ll have to edit the Landscape HLOD Builder class in the engine if you want more control over how that layer is built.
  • Nanite Landscape can provide a pretty significant performance boost (in my current project, Nanite Landscape took ~3ms off my frametime in VR), but if you use Nanite Tesselation and Displacement on the landscape you’re likely to squander those gains.
  • A real-time day/night cycle is going to incur a performance cost due to virtual shadow map rebuilds. There’s no real way around this (other than disabling virtual shadow maps, but that may introduce a significant shadow quality hit), so you just have to take it into account and try to make up for it elsewhere.

Check the Lumen Performance Guide for Lumen tips, these are equally applicable for large open worlds or smaller indoor games. Disabling detail traces can give a pretty big performance boost and the hit to GI quality isn’t too noticeable.

Have a look at some RD2 shadows.
Nothing wrong with the quality taking a hit when everything else is done Right…

The problem you have there is Lumen being an alpha release that just doesn’t work one lick like they originally made it seem like it would.
What was once supposed to be a good - performance friendly - realtime GI, is for all intensive purposes worse than ray traced shadow performance on a ue4.25 build.

if you want good, runtime GI, then you should look at CryEngine and their Voxel based raytraced illumination methods instead.
Basically what Epic wishes they could copy but are just incompetent enough to do so… (because we know trhough them constantly stealing stuff from other games on Fortnite that “legal” and “patents” dont matter at all to Epic).