UEFN HLODs, Data Layers, Draw Distance, and Static Level Optimizations | Unreal Fest Orlando 2025

Share

Summary

This presentation by Gamedev Micah focuses on optimizing static levels in Unreal Engine for Fortnite (UEFN) by reducing instructions and data. It covers various optimization techniques, including Hierarchical Levels of Detail (HLODs), Data Layers, draw distance management, and the efficient use of static meshes and custom assets. The goal is to improve server performance, client-side frame rates, and overall game experience by minimizing the computational load through strategic asset management and engine feature utilization.

Highlights

Introduction to Optimization: Less is Best
00:02:53

The core principle is 'less is best,' emphasizing the reduction of instructions and data to improve performance. More data and instructions lead to longer frame times and lower frame rates on both servers and clients. Key terms like LODs, World Partition, Instance Static Meshes (ISMs), and Nanite are introduced as methods to achieve this optimization.

Understanding Draw Calls and Instancing
00:09:12

A draw call is a request from the CPU to the GPU to render an object. Reducing draw calls is crucial for faster frame generation. Instancing allows multiple identical meshes to be rendered with a single draw call, significantly improving efficiency, especially for non-interactive static objects. Nanite further optimizes this by merging multiple components into a single mesh, reducing draw calls to material instances.

Impact of Actor Settings and Mobility
00:12:44

Every enabled option and component on an actor adds to processing cycles and data. Disabling unnecessary options, such as 'can be damaged' or physics simulations for static objects, can dramatically reduce server load. Setting actors as 'static' rather than 'movable' allows Unreal Engine to automatically batch them into ISMs, leading to substantial performance gains and reduced frame times.

Fortnite's Client-Server Environment and Data Flow
00:18:54

Fortnite operates in a client-server environment where server performance is critical. Servers run on shared virtual machines, competing for resources. Reducing data and computational requirements on the server, especially through features like Data Layers for unloading actors in inactive areas, directly impacts server tick rates and overall stability. The flow of data from hard drives to CPU and GPU is explained, highlighting the bottlenecks that excessive data can create.

HLODs and Data Layer Implementation
00:20:56

HLODs simplify distant views by merging actors into fewer, less complex meshes. Data Layers are extremely important as they allow for unloading actors and devices on the server-side, reducing the data the server needs to process. This is particularly useful for areas without active players or after specific events. Verse pooling is also mentioned as a technique to reduce device count by teleporting a smaller set of devices as needed.

Package Size Impact of HLODs and Custom Assets
00:26:07

Building default HLODs can increase package size. The presentation analyzes the size impact of merged meshes generated by HLODs. Custom assets, when properly configured for instancing, can offer significant package size savings compared to merged meshes. Rectifying issues like UEFN props not having 'instanceable' checked on their materials allows for more efficient use of ISMs.

Optimizing Textures, Materials, and Meshes
00:32:50

Texture and material optimization is key. Using texture packing with multiple channels (RGB, Alpha) reduces the number of textures needed. Simplifying material graphs reduces shader instructions, speeding up rendering. For meshes, using fewer triangles while maintaining visual fidelity and reusing assets efficiently can significantly decrease data load. The importance of considering the 'static' nature of assets and disabling unnecessary features (collisions, overlaps, shadows) is reiterated.

Final Optimization Strategies and Resources
00:37:02

Key takeaways include using larger props to fill space, custom instance static meshes, merging static meshes, and reducing components per actor. Disabling unused components and clearing unnecessary variables also contributes to optimization. The presentation concludes by distinguishing between game code (devices, network, CPU cycles) and rendering (visuals, client-side GPU) and provides resources for further learning, including Gamedev Micah's YouTube channel and other relevant Unreal Engine community videos.

Recently Summarized Articles

Loading...