Download

Optimising a level to avoid lag?

Hi all,

I have a number of questions relating to optimisation. Basically, the game I am making lags quite heavily when played outside the editor.

I have done the following steps to address this:

  1. Use 3 LODs on all props. (Level 0 = 100% triangles, Level 1 = 70% triangles, Level 2 = 30% triangles).
  2. Used static lights where possible.
  3. Disable “cast shadows” on lights where possible.
  4. I have set Lightmaps to “4” on most models. (I think this is the lowest setting??)

These steps have not reduced lag.

Possible culprits:

I have a large “texture streaming” warning in the top left corner. What do I do to address that?

I have lots of lights still, not sure if this is an issue?

Do you have any further optimisation tips???

A lot of performance is based on the amount of objects, make sure that objects use only one material and try to combine objects that don’t need to be separate.

As for the texture streaming you fix that using a console command like: “r.Streaming.PoolSize 5000” which can be execute somewhere at a Blueprint or Level blueprint. The value you should tweak, since you are basically telling you need a system memory to hold your textures in a pool as soon they are needed they are streamed to the GPU. The value must be large enough to avoid multiple texture readings on the hard drive and small enough so your game can be played in machines with low memory profile.

From your description there are factors to consider besides the ones you have tried:

  • blueprint nativization would speed up execution (you can tell the engine which ones you want, since not all of them are possible)
  • merging actors (mainly the non-moveable ones) or if most are just meshes, you need to use hierarchical instantiated meshes which is a component you can place all the repetitive props that the engine will consider them all one object.
  • you can also tell which meshes/actor can project shadows or not, so you can get some lights back maybe

And the last resort is to use the Profiler tool, which will show to you exactly where you are wasting more time processing the frames, and even realize that you are not GPU but CPU bound. There are streams at Unreal twitch channel on how to use the tool.