UE 5.4.1.[Mobile] Creating open world game with large landscape

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.

  1. Empty UE5.4.1 level without character controller is around 10-15 drawcalls. That was my starting point.
  2. Empty level with skybox character controller, skylight and directional light with dynamic shadows on is around 40-50 DC.
  3. Level with all actors and logic that are loaded without landscape actor and it’s proxies 100-150 DC.
  4. 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.

1 Like

Dont use landscape.

Problem solved.

And I’m not kidding.
No one in their right mind would even think of using the engine’s landscape for actual development of anything - much less mobile games.

And gratz on either reading and understainging my posts about it - or figuring out the max parameters involved with using landscapes on your own.

Generally speaking, people asking for advice on the subject are just completely clueless, so the fact you are not means you know you are on the right path.

Now, use the level tab, bake out a mesh impostor of the landscape for LOD 0.
Take it to Houdini or Blender.

Decide - based on its overall size - how many drawcalls you want to deal with.
I suggest 124*124 max no matter what (landscape is up to 256)

Cut up your landscape mesh into howver many you decide. Give all of them really good LODs that reduce the tris count.
Keep in mind your edges will cause seams if you do this withtout thinking about it.

Import to the engine ans add them to an HISM.

Run your benchmarks again to determine if you need a more heavy hand or bigger components.

Performance should jump up around 200% (on mobile that’s probably still not 60fps, since your CPU can’t do much more than it does already when using other engine things like lighting, athmosphere, characters, etc).

Go from there.

Nothing wrong in starting the test by splitting 8km^2 > into 16 tiles of 1km^2 either.

2 Likes

Thank you for your suggestion.
I replaced world partition with streaming volumes and I replaced landscape with static meshes this week.
My FPS has grown to 35-40. And I have no hitches now even(seems like world partition is terrible for performance as well), there are a little difficulties with setting up physics materials for landscape meshes, but I’m sure I can write my own solution using c++ for this next week.
This is so sad, I chose UE4 3 years ago as game engine for my game, because I saw just how many features it does have and how rich the editor is and just how cool graphics it may offer.
But with years I realized that most features are bad or broken or not for production use. And as the engine is rich with features now I realize that I don’t use anything at this point, except for basic things like materials and hism, I’m not even using blueprints because they are killing performance.
And I’m not even trying to reinvent the wheel, I’m trying to use existing features. And they appear to provide so much overhead that it literally kills the whole idea.
I think that epic games are too focused on nanite and lumen and just given up on everything else. They expect me to pay commissions for features that I’m not using due to their drawbacks. Well this is the thing that made me think about switching game engine to something else.

1 Like

I suggest cry engine for the better ray tracing.
You can’t beat the visuals to performance quality it gives.
Unfortunately you do have to write a lot more things (even 2d captures) yourself.

This engine was always garbage masquerading as candy. I don’t think anyone realizes until way deep in projects.
The fact of the matter is, you have to write your own thing to guarantee performance and accuracy.
Using engine features you have to rely on the work of underpaid probably stressed employees that were forced to abandon whatever they were thinking of doing without seeing it through because some egghead manager said “work on this new feature we are stealing off of this other engine now”.

Landscape and world partition(or composition whatever) both compromised by large world coordinates.
Procedural foliage, abandoned and left to rot in beta for 15 years.
There are pieces of left to rot code all over the engine. Most of which you’d never even think of using anyway…

It’s unfortunate, but epic doesn’t care. They make money suing little kids for cheating or stealing other developers ideas and copywritten material with fortnite…

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.