Contents
Unreal Engine 5.8 · System guide
Replication
Design and debug authoritative network state
On this page
Choose a task
Choose an approach
Build and understand
Workflow and boundaries
Use these checks when a task crosses several systems. The focused references above contain the specific actions.
Ownership boundary
This skill owns general Actor/property/RPC authority, ownership, relevancy, dormancy, and state
transport. Prediction remains subsystem-owned: route Character saved moves/root motion to
unreal-character-movement, network physics/ragdolls to
unreal-chaos-physics, and ability prediction to
unreal-gas-abilities.
Select the replication system
- Start with Generic Replication, UE 5.8's default, unless measured scale requires another system.
- Evaluate Replication Graph for many replicated actors and connections. It is Beta and does not currently support split screen on console builds.
- Evaluate Iris for its filtering/prioritization/scalability architecture only with an explicit migration and compatibility plan. UE 5.8 still marks Iris Experimental and Generic Replication remains the default.
- Do not combine selection with gameplay prediction. Replication moves authoritative state; prediction is subsystem-specific behavior.
Read references/system-selector.md before choosing.
Design the network contract first
For every multiplayer action, state:
- Which server object owns the canonical state?
- Which client owns the connection allowed to request it?
- What untrusted intent does the client submit?
- What does the server validate and execute?
- Which state persists for late join/relevancy and therefore uses properties?
- Which transient occurrence uses an RPC or local reaction?
- Which connections need the result, at what frequency and precision?
- What may be predicted locally, and how is it reconciled?
Read references/authority-ownership.md.
Choose state versus event
- Use replicated properties/RepNotify for durable state and late-joining/re-entering clients.
- Use Server RPCs for client intent on an actor/component owned by that client's connection.
- Use Client RPCs for targeted transient messages to the owning client.
- Use NetMulticast sparingly for transient effects visible to currently relevant clients.
- If every occurrence matters, do not encode it as repeated writes to one replicated scalar.
- Keep related values that require coherent handling in one replicated struct; OnRep order across separate properties is not deterministic.
Use references/properties-repnotify.md and
references/rpcs-ordering.md.
Implement in dependency order
- Set actor/component replication and server-only spawn/destruction.
- Establish owner and owning connection; do not confuse ownership with authority.
- Define replicated state, conditions, RepNotify handlers, and state invariants.
- Define minimal client-intent Server RPCs with server validation/rate limits.
- Add relevancy, priority, update frequency, and dormancy only from real requirements.
- Use registered replicated subobjects and Fast Arrays for the relevant data shape.
- Reuse CMC, GAS, or another subsystem's prediction rather than inventing generic prediction.
- Test dedicated server and remote clients under lag, loss, jitter, reordering, reconnect, and relevancy transitions.
- Capture Network Insights before optimizing bandwidth or selecting a scalable driver.
Hard rules
- The server owns gameplay truth; client parameters are requests, never proof.
HasAuthority/network role is not the owning connection.- A client can call a Server RPC only through an actor/component it owns through its connection.
- Spawn and destroy replicated gameplay actors on the server.
- Never use reliable RPCs for high-frequency input/tick traffic.
- A client-called NetMulticast executes only on that invoking client.
- Do not rely on ordering across actors or between separate RepNotifies.
- Wake/flush a dormant actor before mutating replicated state.
- Replicate gameplay state, not widgets; local UI observes replicated models.
- Do not manually replicate Character transforms instead of CMC network movement.
- Profile before adopting Replication Graph, Iris, custom relevancy, or custom priority.
Read references/relevancy-dormancy.md,
references/components-subobjects-fastarrays.md,
references/patterns.md, and
references/debugging-testing.md. See
references/sources.md for the UE 5.8 source trail.
Version and evidence
Targets Unreal Engine 5.8 documentation. This label does not establish that every procedure was tested in an editor or packaged build.
Read the documentation sources and verification notes →