Optimise your app

What to change in your Unreal project to make it stream well: fewer dropped frames, less input lag, and a shorter wait before anyone can use it.

The three with the largest effect

Change these first. Together they cost almost nothing and are worth more than everything below.

  1. Stream at 1280 × 720, 30 fps

    Every frame is encoded, sent and decoded. Halving the pixels halves that work at every stage — on the streaming GPU, on the network, and on your user's phone. This single setting moves more than any graphics option.

    Set the size in the Control Panel: Common › Browser Resolution, choose Custom, then width 1280 and height 720 — see resolution. There is no frame-rate field in the Control Panel; cap the frame rate in your Unreal project, for example with the console variable t.MaxFPS 30.

  2. Turn off motion blur

    It is expensive exactly when you can least afford it: during fast motion, when the encoder is already working hardest. Removing it steadies the frame rate at the moments users notice most.

  3. Do not enable ray tracing

    It adds real-time lighting work to every frame and raises latency directly. It also has its own memory pool, separate from textures, which is a common cause of running out of GPU memory mid-session.

Lighting and graphics

The cursor

Two cursors are visible at once unless you prevent it — the browser's and your app's — and the effect is disorienting in a way users report as "laggy" even when the frame rate is fine.

Load time

The wait before anyone can interact is the part users judge hardest, because it happens before they have seen anything worth waiting for.

Everything else, in order of what it buys you

AreaWhat to doWhy it helps
Network Wired where possible. In Developer › Select Region the choices are Global and United States; for other regions see capacity and regions. Streaming is far more sensitive to jitter and round-trip time than to raw bandwidth.
Video quality Choose a Developer › Video Quality preset — Ultra, High, Medium (the default) or Low — lower for mobile and cellular audiences. There is no separate video bitrate field. Trades image quality against buffering, packet loss and dropped frames.
Texture pool Size the texture streaming pool deliberately and use compressed formats. The main lever on GPU memory, and what prevents textures popping in.
Level of detail Configure LODs and distance culling for meshes and foliage. Fewer polygons per frame, directly.
Occlusion culling Enable it, so hidden objects are not drawn. Removes draw calls that could never have been seen.
Scalability Use Unreal's scalability settings for shadows, effects and view distance. One dial for the quality-versus-performance trade, rather than dozens.
Idle timeout Set session and idle timeouts in the Control Panel. Releases machines nobody is using — availability for others, and cost for you.
Browser Recommend an up-to-date Chromium browser: Chrome or Edge. The most consistent WebRTC behaviour, which is what the stream runs on.

On phones

A phone is not a small desktop. It has less bandwidth, a smaller screen, and a thermal budget that a sustained stream will find.

Enable Nanite in UE5 to boost FPSWatch on YouTube

Last updated