Focused reference · Unreal Engine 5.8

Debugging, testing, and profiling

unreal-replication/references/debugging-testing.md

Minimum topology matrix

Test each feature in:

  • dedicated server + two remote clients;
  • listen server + remote client;
  • late join after state changed;
  • leave and re-enter relevancy;
  • disconnect/reconnect or respawn where supported;
  • two local players if split screen is supported.

Do not accept a listen-server-only pass; the host combines authority and local control and can hide ownership defects.

Adverse network matrix

Use UE network emulation, then turn it off after each test:

  • latency (NetEmulation.PktLag or a named emulation profile);
  • packet loss (NetEmulation.PktLoss);
  • jitter/lag variance;
  • packet duplication;
  • packet reordering, when compatible with the chosen lag settings.

Verify input responsiveness, correction, reliable-queue health, stale-state rejection, and eventual authoritative convergence.

Network Insights

Launch instances with networking trace enabled, for example:

-trace=net -NetTrace=1

For editor capture, add -tracehost=localhost when needed. Inspect:

  • Packet Overview for timing and size;
  • Packet Content for actors, properties, and RPCs;
  • Net Stats for inclusive/exclusive byte cost;
  • connection direction and selected connection;
  • spikes during spawn, relevance changes, or UI-driven action spam.

Useful commands

  • net.ActorReport: active replicated actor information.
  • net.DumpRelevantActors: actors relevant on the next update.
  • net.ListActorChannels: open actor channels.
  • net.ForceOnePacketPerBunch: stress ordering assumptions.
  • net.DormancyEnable 0/1: isolate dormancy-related failures.
  • showdebug enhancedinput: inspect input before blaming RPCs.

Confirm command availability/side effects in the 5.8 console-command reference before adding to automation or shipping tooling.

Failure tree

SymptomFirst checks
Server RPC never runscaller owns actor, actor/component replicates, call made on client copy
Property only updates for ownerreplication condition and actor relevancy/ownership
Works until actor sleepswake/flush before mutation, including component/subobject
Remote client misses effectactor relevance at multicast time; should it be durable state?
Duplicate/late effectRepNotify treated as a new event instead of current state
Character rubber-bandsserver/client movement divergence; use CMC trace/saved moves
Bandwidth spikehigh-frequency RPC/property, always-relevant actors, large collections
Only host workslocal-control/authority branch conflated or wrong owner

Shipping gate

  • Server remains correct with malicious/out-of-range/repeated client requests.
  • All durable state reconstructs for late and re-relevant clients.
  • Reliable RPC rate is bounded under worst input spam.
  • Ordering assumptions survive forced packet/bunch stress.
  • Network Insights meets server CPU and per-connection bandwidth budgets at target scale.
  • Experimental/Beta system risks and rollback are documented.