E3DS Documents & Tutorials

Optimizing App Performance

This guide outlines best practices and configuration tips for improving the performance of Unreal Engine applications streamed through Eagle 3D Streaming, on both desktop and mobile devices. Following these recommendations will help reduce latency, minimize load times, and deliver a smoother, more responsive experience for end users.




For the hardware and software specifications of Eagle 3D Streaming's servers, refer to the Server Specifications document




1. Cursor Responsiveness

Hide the in-game cursor

Set a custom mouse cursor image with Zero Alpha to make the in-game cursor invisible. This ensures that only the browser's system cursor is visible to the user.

Why: If both the system cursor and the in-game cursor are visible at the same time, it can create a confusing, "double cursor" effect that distracts users and makes precise interaction harder.



Configure the Cursor HUD in Project Settings

In Unreal Engine's Project Settings, set the Cursor HUD to use Software Cursors, and configure the Pixel Streamer Default Cursor Class Name.

Why: This improves cursor accuracy and responsiveness inside the streamed environment, reducing perceived input lag and delivering a smoother, more fluid interaction experience.





2. Graphics and Lighting

Disable Motion Blur

Turn off Motion Blur in your project's rendering settings.

Why: Motion Blur is GPU-intensive, especially in high-motion scenes. Disabling it reduces GPU load and improves overall frame rate and stream stability.



Favor Baked Lighting over Dynamic Lighting

Use Baked (precomputed) Lighting wherever possible, and keep the number of Dynamic Light Sources to a minimum.

Why: Baked lighting is calculated ahead of time and does not need to be recalculated at runtime, which lowers computational overhead. Dynamic lighting requires continuous real-time calculations, increasing both GPU and CPU usage.



Avoid Ray Tracing

Do not enable Ray Tracing on streamed projects.

Why: Ray tracing performs complex lighting calculations in real time, which can significantly increase latency and degrade streaming performance.



Enable Hardware Video Decoder

Enable the Hardware Video Decoder option in Project Settings.

Why: Hardware decoding offloads video decode work from the CPU to dedicated GPU hardware, improving playback smoothness and reducing CPU contention with the rest of the application.



Reduce post-processing overhead

Where possible, simplify or disable heavy post-processing effects such as Screen Space Reflections, Ambient Occlusion, Bloom, and Depth of Field, or reduce their quality settings.

Why: Post-processing effects are applied every frame and can meaningfully add to GPU render time, especially at higher stream resolutions.





3. Load Time Optimization

The Unreal Engine application, when run natively as a Windows desktop app on your local computer, establishes a performance and loadtime baseline. Eagle 3D Streaming is designed to minimize overhead so that the pixel-streamed experience closely mirrors that of the native application. In other words, the best possible performance of the streamed app will match the performance of the application running natively,streaming cannot exceed that baseline.

For more background on load time concepts, see this page.

If your project's main map is large or complex, it will naturally take longer to load, and users will experience a delay before they can interact with the streamed application. The following techniques help minimize that delay.


Streaming Levels

Rather than loading an entire map at once, Streaming Levels allow different parts of the map to load dynamically, as needed. Only the necessary portions of the level load initially.

Result: Faster initial load times and quicker access to the streamed content.


Loading Screen

A loading screen gives users visual feedback while the map loads in the background, rather than a blank or frozen screen.

To customize the loading screen from the Control Panel, follow this document.


Level Streaming

Similar to Streaming Levels, Level Streaming loads and unloads parts of a level based on the player's position or game state. For large maps, only visible or nearby assets need to be loaded into memory.

Result: Minimizes memory usage and processing load by loading only the necessary assets and levels at any given time.


Add a Video Asset to the Loading Page

Displaying a short video on the loading page keeps users engaged while assets load in the background.

Follow this guide to customize loading screen with a video asset.


Additional Load Time Resources

See Minimizing the Load time document for further guidance on minimizing load time. Together, these steps help ensure smoother streaming, reduced latency, and a better overall user experience.


Use the Quality Control Kit

Use the Quality Control Kit, available from the Control Panel, to fine-tune streaming quality settings for your application. See this document for details.




4. Additional Optimization Techniques

Beyond the core settings above, the following techniques can further improve streaming performance:

Area

Recommendation

Why it helps

Network & Bandwidth

Ensure a stable, low-latency connection (preferably wired) and select the server region closest to your users.

Pixel Streaming is highly sensitive to network jitter and round-trip time (RTT). A nearby server reduces latency and improves responsiveness.

Encoder / Bitrate Settings

Tune the target bitrate, maximum bitrate, resolution, and frame rate to match your use case (for example, lower bitrates for mobile or cellular users).

Balances image quality with available bandwidth, reducing buffering, packet loss, and frame drops.

Texture Streaming Pool

Configure an appropriate Texture Streaming Pool size and use compressed texture formats.

Reduces VRAM usage and helps prevent texture pop-in, especially in complex scenes.

Level of Detail (LOD)

Configure LODs and distance-based culling for meshes and foliage.

Reduces the number of polygons rendered, lowering GPU workload and improving frame rate.

Occlusion Culling

Enable occlusion culling so objects hidden from the camera are not rendered.

Eliminates unnecessary draw calls and reduces GPU rendering overhead.

Scalability Settings

Use Unreal Engine's Scalability settings (or equivalent custom settings) to adjust shadow quality, effects quality, and view distance.

Provides an easy way to balance visual quality and performance across different hardware.

Application Idle Timeout

Configure appropriate session idle and timeout settings in the Eagle 3D Streaming Control Panel.

Automatically releases inactive sessions, improving resource utilization, availability, and cost efficiency.

Browser

Recommend an up-to-date Chromium-based browser, such as Google Chrome or Microsoft Edge.

These browsers provide the most consistent WebRTC performance and compatibility for Pixel Streaming.




5. Mobile-Specific Recommendations

  • Lower the streamed resolution and bitrate for mobile sessions to match typical cellular or Wi-Fi bandwidth.

  • Simplify UI touch targets and avoid relying on hover states, since mobile input is touch-based.

  • Reduce shader and post-processing complexity further on mobile profiles, since encoding and decoding on mobile devices/browsers has less headroom than desktop.

  • Test on real devices and networks (Wi-Fi and cellular) rather than relying solely on desktop emulation, since mobile GPUs, browsers, and network conditions vary widely.

  • Use adaptive streaming settings where available, so bitrate and resolution adjust automatically as network conditions change.



Need help?

If you need any assistance, feel free to reach out through any of the following channels:

🛠️ Support Portal: Contact Our Support Team

💬 Discord Community (Faster Support): Join Our Discord Community

📧 Email Support: support@eagle3dstreaming.com


🆓 Get Started for free

 


Follow us on:

Facebook | GitHub | LinkedIn | YouTube