How can I optimize my project permormance?

Hey there, Let me preface this by saying that I am new to optimization and how to make my Unreal Engine project “smooth.”

During one of the playtests in my project in Unreal Engine, I noticed a relevant FPS drop at the highest resolutions (High, Epic, Cinematic).

I thought it was just an engine-related issue and would be resolved once I packaged the project and ran it as an .exe out of the graphics engine, however this did not happen, the program still seemed to show an intense drop in FPS and performance.

I searched for various possible solutions and tutorials in the internet, but only very few led to any improvement; I tried intervening on the LOD’s and more specifically on the Max Desired Draw Distance, which, if I understood correctly, takes care of culling static meshes and vice versa based on where the player is positioned, so as to save space in the vRAM avoiding an overload, this works when the game is run on low resolutions, such as Low, in which it reaches as much as 120 static FPS.

However, I think this is not the only expedient I can do to prevent my game from being completely annihilated by the low performance.

I have also heard of culling, but it seems that this is already active since a brand new project is created.

During this time I also came across several warnings/messages that appeared once the project was started, and are as follows:

  • Video Memory Has Been Exhausted
  • Virtual Shadow Map Page Pool overflow detected
  • Texture Streaming Pool Over Budget

Does anyone know how I could improve the performance of my game or give me some tips on this problem? Thanks in advance! :smiley:

I attach screens of what I said to make the idea a little clearer:

Virtual Shadow Map Page Pool overflow detected
ue5Ticket_1

Low Scalability

Epic Scalability

Cinematic Scalability

I can tell you why it’s running great in ‘low’ mode. Because there are no shadows.

But, before you say it, no, you don’t need to investigate shadows.

Everybody’s game runs great in low mode.

I’m sorry to say, it’s a bit of an uphill battle, learning about optimization. But the main culprit is always the same, too much detail.

Whether that’s too many actors or too many high res actors, or too much landscape or too much foliage, I don’t know in your case. It’s different for everybody.

One way you can tackle it is to progressively take more and more things out of the map. It’s a great way to find out what’s going on. Just remember to turn off auto-save first.

Hey there! Thanks for the quick response!

I read a solution similar to what you just explained, I realize that learning how to best optimize my product takes quite a bit of time, but I would be willing nonetheless.

I will try to follow your advice by progressively removing elements from the level to solve this problem.

I know that many games use a technique where they load well-defined areas of the level that can also be loaded/deactivated via event triggering, or something similar, however I have not been able to find much information about this on the net.

Then I was thinking if there are any special settings/modifications that I can apply right away to my project in order to lighten it (e.g. as LODs or texture resize), since within my layer are prevalent (at least for the moment), structures such as walls, floors… which are simple planes without a particularly complex geometry, objects such as props or actors are minimal, even if they present a more complex geometry, I will however try to remove these elements one by one to identify the problem.

Thanks again for your response!

EDIT: I also tried running the same .exe file on another PC to see how it ran on the machine, also showing how it reacted differently from the one I’m currently working on, so it also depends a lot on the hardware it runs on, so I was wondering if there was a “way” to get a nearly universal result for everyone

If you make your game with world partition ( the default now ), this is done for you.

Not really. It depends how you made your map.

Yes, by understanding a lot about level optimization :slight_smile:

Look at the frame rate you get with the demo maps ( first person example map etc ). You should be able to get somewhere near that.

For instance, if you get 120fps in the demo level, and 80-90 in your level, you’re doing fine. If your level runs at 15fps, that’s not ok.

You can take huge chunks out at one time. For instance, all the foliage or, all the meshes. What is causing the problem? After a while, you can focus on one type of thing, then you know it’s something wrong with this group of objects etc. Then find out why.

The engine has a lot of profile tools

They will help you pinpoint exactly what the problem is, but there’s a steep learning curve there. So in the meantime, chopping up the map to find the problem is the quickest way.

PS: Last thing. It might not be anything in the map per se. If you have written some code badly, that will also bring the system to it’s knees. Hanging too much on tick is a favourite.

I thought it was the world partitioning and about it, I forgot to mention an error concerning it just during the packaging namely:

UATHelper: Packaging (Windows): LogInit: Display: LogWorldPartition: Warning: Invalid world bounds, grid partitioning will use a runtime grid with 1 cell.

This error has been there since the layer was created, probably due to some incorrect or poorly set up settings, could this be a valid reason or otherwise contributing to the FPS drop?

On the other hand, as far as comparisons to the demo map are concerned, what you are recommending is to get to a framerate that is realistic to that of the template layer, my project for the time being does not use foliage, if that would help to better understand where the problem is.

I will also take a look at the profiling documentation to get a broader idea.

I thank you again for your response and the help you are providing :smiley:

1 Like