NEW(3/22/2024) UE5.5+ Feedback: Please Invest In Actual PERFORMANCE Innovations Beyond Frame Smearing For Actual GAMES.

Someone made a list of ALL the performance improvements in Unreal Engine 5.5, the list is very long :
https://www.reddit.com/r/unrealengine/comments/1guy2zm/i_made_a_list_of_all_the_performance_improvements/

R.I.P Original Post.

As a systems engineer with over 25 years of experience in rendering, networking, and audio, Iā€™ve noticed that optimization is often misunderstood. Many seem to think itā€™s as simple as pressing a few buttons, and suddenly, their project is running at 120 FPS. Unfortunately, itā€™s not that straightforward.

Optimization is fundamentally about adopting best practices and applying them consistently. Here are a few key principles to keep in mind:

  • Avoid excessive ticking in Blueprints. Use C++ for anything requiring high performance per frame.
  • Donā€™t tick Blueprints on the far side of the world where they arenā€™t visible or relevant.
  • Minimize the creation and destruction of UObjects during gameplay flow. This is poor practice, yet I see countless tutorials recommending it.

Unreal Engine provides all the tools you need for optimizationā€”you just need to learn them. I highly recommend starting with this excellent video:

The video is short, only 14 minutes, but understanding and applying its lessons can take much longer and make a huge difference to your project.

To give you a real-world example, hereā€™s the performance journey of our own project, which includes a streaming world with 8,000 materials and over 6,000 textures (many in 4K):

  • 5.0 - 30 FPS: Struggling. No optimization, testing the engineā€™s limits.
  • 5.0 - 50 FPS: Basic optimizations and adopting settings from the Lyra Starter Project.
  • 5.0 - 80 FPS: Switched to Virtual Textures for our streaming world.
  • 5.1 - 100 FPS: Fixed marketplace materials with poor practices. Switched from World Partition to Data Layers due to world density.
  • 5.2 - 120 FPS: Achieved through an engine upgrade.
  • 5.3 - 140 FPS: Fixed additional marketplace materials. Introduced Hierarchical Instanced Static Mesh (HISM).
  • 5.4 - 160 FPS: More material fixes addressing bad practices.
  • 5.5 - 180 FPS: Engine upgrade; no additional changes.

Easy Performance Wins

  1. Use source control. This gives you the freedom to experiment with optimizations without fear of breaking your project.
  2. Set Cull Distances for static mesh actors. Do you really need that chair on the other side of the map being processed by the scene graph?
  3. Apply Mesh LOD groups. Unreal provides pre-configured groups for world objects, characters, etc.
  4. Configure Texture LOD groups. Unreal offers great defaults to start with.
  5. Study the Lyra Starter Project. Pay special attention to settings in DefaultEngine.ini and DefaultScalability.ini.
  6. Learn and use Unreal Insights. (Documentation: Unreal Insights in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community)
  7. Leverage Hierarchical Instanced Static Meshes (HISM). Ensure Cull Distances are set for them as well.
  8. Employ HLOD. (Documentation: Hierarchical Level of Detail in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community)
  9. Use Virtual Textures. (Documentation: Virtual Texturing in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community)
  10. Implement Data Layers. For dense, content-heavy levels, Data Layers can improve performance by disabling unused sections.

Final Thoughts

Optimization is a deep and nuanced subject. I like to think of Unreal Engine as a Harrier jump jetā€”itā€™s a powerful machine, but you need to learn how to pilot it effectively. With the right approach and tools, you can achieve incredible performance.

10 Likes

I agree that everyone should know ā€œOptimization-101ā€ info, but thatā€™s not the point.
The editor is lacking optimization tools, the rendering pipeline is flawed, and so is memory management. Newest one-click metaverse-friendly solutions (Nanite,Lumen, etc) are only great for a small subset of games, while only adding unnecessary overhead to all others.

It should be fine when you are CD Projekt Red and can afford to rewrite half of the engine to adress all that, but for us indies there is no way to achieve that, which is why this thread exists.

2 Likes

Nice post, but itā€™s not really related to the issues discussed on the main thread.

The engineā€™s graphical pipeline is built on abusing temporal AA/SS. Nanite encourages subpixel hell, UEā€™s TAA is inherently flawed, TSR, Nanite is supposed to be used with VSMā€™s which are extremely noisy without smeary TAA, Virtual Textures causes textures to jitter and noise up textures only coverable with blurry TAA and then there are the multiple TAA dependant effects(many in the montage are UE5, and arenā€™t even higher quality than same performance methods )

You can optimize in unreal but at a larger cost to visual quality compared to older titles and 3rd party workflows that donā€™t exist anymore(dead engines etc)

The editor is lacking optimization tools, the rendering pipeline is flawed, and so is memory management. Newest one-click metaverse-friendly solutions (Nanite,Lumen, etc) are only great for a small subset of games, while only adding unnecessary overhead to all others.

Explains to vote pool very well. 189 devs votes atm but even though the feedback is strong, and make epic aware of major performance regressions, epic has not market incentive to fix these issues.

Canā€™t wait for their own engine :joy: :rofl:

People here constantly ignore and misunderstand, and then it is implied that we should go back to learning how to optimize, etc. I assume that at the beginning of the project you were just trying to reach some imagined goal, I also assume that these tests were done on an RTX4090, for example, so after optimization there was a spectacular shift from 30 to 180. I insist that I am absolutely not interested in the results on an RTX4090 (although I have one myself) I am interested in what the score is on an RTX3060 and of course in native mode and not with an upscaler (even tsr). And to repeat, how to make a game in UE5 like Unreal Tournament (that is the origin of this engine) whoes in the classic FFA Arena on high settings goes over 150fps (on rtx3060) with more than 15 players in the mid view scene (and more than 30 on the server). and of cours no low poly ā€¦

1 Like