UE 5.4 Mobile development, large open world landscape optimization. Need help, advice, everybody welcome!
So I develop game for years already. It’s an RPG like game like legend of Zelda, exactly, yeah.
I used to use world composition and switched to world partition. Size of map is 8x8 km which I import from 8k height map.
I was optimizing my valley POI to death and found out that 40-50% of drawcalls that I’m fighting against just comes from landscape alone.
So the problem is that I have WP landscape with 1024 components and 1024 proxies and loading only 4 tiles at time maximum, if player controller is at the edge of them simultwneously. But drawcalls are ridiculous. I tried to switch to 256 components and 256 tiles but decrease in drawcalls is rather small in exchange for increased poly count due to worse shadow culling and hitches due to large chunks of actos are getting loaded.
To be precise here are some stats.
- Empty UE5.4.1 level without character controller is around 10-15 drawcalls. That was my starting point.
- Empty level with skybox character controller, skylight and directional light with dynamic shadows on is around 40-50 DC.
- Level with all actors and logic that are loaded without landscape actor and it’s proxies 100-150 DC.
- Landscape actor being rendered+all proxies with all my actors and meshes 250-300 DC. No joke!
Landscape actor alone participates with insane number of DC 100-150 to the scene. Which is sad, due to how cool landscape mesh is optimized in terms of poly count.
What I tested, actually I created a landscape with 1 component 511 and scaled it to 8km, but loads are missing and I’m getting other artifacts. But landscape is only 3-5 DC which is pretty nice. Drawback is some strange artifacts with shadows, no lods and the most important limited number of layers due to GLES 3.1 and vulkan limitations on 16 texture samples. But game runs at 30-35 FPS. But this idea is bad, due to too many problems produced by scaling landscape size.
PS. My game runs 20 solid FPS on scalability 3 on targeted hardware but I want better perf, the goal is to reach 30 without sacrificing much visuals. Genshin impact runs 30-35 on this phone with ultra settings. So I know that it is possible.
Pps. I use deffered shading instead of forward rendering due to my scene contains sun, moon and torches from npcs that cast dynamic shadows.
I don’t use mobile GPUScene as it is broken in 5.4.1 on everything except for Mali devices mediatek CPUs.
I will be really glad to any ideas on how to cut down on DC in this case. How to turn fat UE landscape into appropriate terrain with like 40 DC.
I know that there might be ideas at least how to create proper mobile terrain of 8km and save performance.