I am working on some untitled game on UE4 and we are creating a world/map approximately 2x2km+ size and I have a few questions, just like you about your projects . So I created this topic for discussion “Level optimization”
I watched epic’s videos about level streaming, hlods, impostors, fortnite optimization, and so on. But, for me it’s just “we have such technologies, so try it yourself” and I tried.
So I have several solutions and want to share and discuss them with you (each line is my thoughts without practical use, only theory, because at the moment I am only studying cases for big-level optimizations and will practice in the near future):
- World Composition - good thing for creating big/huge levels, for others World composition is weak tool (it has weak points with streaming, it can stream level behind the character. As I understand it isn’t rendering, but it streaming in vram).
- Level Streaming Volumes - almost the same tool as World Composition but with customizable Volume shapes for activating streaming, and has the above problem with behind the character.
2a. Currently I have almost created blueprint for Level Streaming levels which shown in frustum ±10 degrees. This is a simple method with simple math.
- LOD - probably everyone knows about it, but I will write: LOD - level of Details, load levels depending on the distance from the character
- HLOD - usually the same as LOD, the difference: LOD is one mesh/object with own textures, HLOD combines meshes/objects into one large object and creates an atlas to reduce drawcalls. In UE4 it is
generated automatically. In my “ideal world” it must be created by human or half-automated. Yes - it cost a lot of time, but the result will be better than automatically. And we want to achieve the best result in game, am I right?
- Impostors - an old topic, but unfortunately it is often forgotten. Need additive sheet-texture, but fewer vertices, reduce drawcalls.
I going to try the following scheme:
- game logic, collision for the whole world (because we can throw a grenade far and it is multiplayer game), sounds, general light in separated layers using 1. World composition
- level streaming with 2a
- lod0 for first zone (closest to the character camera)
- lod1 for second zone
- lod2 for third zone
- hlod0 from lod2 objects + impostors for fourth zone (mainly to reduce drawcals because the atlas)
- hlod1 from lod2 objects + impostors for fifth zone (To Infinity and Beyond!)
What do you think about this?
P.S.: if I make a mistake somewhere I will be glad to hear where I am mistaken