Steam Remote Play, Sunshine, and Moonlight measurement guide

Scope

Steam Remote Play is Steam's integrated host/client path. Sunshine is a self-hosted streaming host for Moonlight clients. Compare end-to-end behavior, not feature names or a single network ping.

Pair on a trusted local network first. Do not publish pairing PINs, credentials, host addresses, logs with tokens, or an unauthenticated administration interface.

Baseline

Use wired host networking where possible, one client location, one game scene, SDR, a conservative codec/resolution/frame rate/bitrate, and no competing downloads. Record host GPU/encoder and capture path, host render FPS, router/AP topology, client decoder/display, controller path, software versions, and security exposure.

Change one variable

Test in this order: streaming system, codec, resolution, frame rate, bitrate, host capture/display mode, client frame pacing, then HDR. Do not change Wi-Fi band, codec, and bitrate together. Resolve packet loss before increasing quality.

Measurements

StageMeasureFailure signature
Host render
Game FPS/frame time
Stream cannot exceed unstable source
Capture/encode
Encode time and queue
Periodic stalls under GPU saturation
Network
Latency, jitter, loss, retransmit
Bursts, artifacts, disconnects
Client decode
Decode time and dropped frames
Smooth network but client stutter
Display/input
Presentation cadence and end-to-end response
Judder or delayed control

Run the same input sequence for at least three equal passes. Report local LAN and Internet paths separately; an ICMP ping is not an end-to-end video/input latency result.

Side effects

Higher resolution/frame rate/bitrate increases encode, network, decode, and client power; HDR adds 10-bit and display-chain requirements; host GPU saturation can delay encoding; Wi-Fi power saving can add jitter; controller emulation and desktop capture expand the security/permission surface.

Rollback

Return to the conservative baseline preset, remove manual port exposure, disable unneeded UPnP/forwarding rules, revoke unused paired clients, restore the original host display/capture path, and confirm local input and audio still work outside streaming.

Selection guide

NeedStart withReconsider when
Steam library and simple pairing
Steam Remote Play
Required codec/control/telemetry is absent
Cross-store/self-hosted control
Sunshine + Moonlight
Host capture/encoder path is unsupported
Remote Internet access
Current upstream secure guidance
Only direct broad port exposure is understood
HDR
SDR baseline first
Any host, codec, client, or display requirement fails

Frequently asked questions

Is higher bitrate always lower latency or better quality?
Is higher bitrate always lower latency or better quality?
No. Bitrate above stable network or decoder capacity causes queueing, loss, recovery artifacts, or dropped frames. Match codec, resolution, frame rate, and bitrate to both ends and the path.
Should I expose Sunshine's web interface directly to the Internet?
Should I expose Sunshine's web interface directly to the Internet?
Not by default. The interface controls pairing and remote access. Start on a trusted LAN, use authentication, review current upstream remote-access guidance, and revoke unknown clients.

Sources

Version history

  • 2026-07-15: Phase 5 end-to-end streaming and security measurement workflow published.