Skip to content
Website logo
YawLighthouse

Unreal Engine's Mass: Networking Overview

Author:
Nicholas Helish

Nicholas Helish

Game Developer

You already read the About Me  page! I’m Nicholas Helish, the author for this article, website, cool stuff, and fan of cats!

July 04, 2026 · 4 min read

A Networking Overview of Unreal Engine's Mass.

This blog post was written in reference to Unreal Engine 5.8

Overview

Mass currently does not use Iris at all for its networking stack.

It currently operates in the standard Unreal Replication framework using a Server Authoritative Client Bubble network model.

Mass does not directly replicate every Entity to every Client, but instead follows the pattern similar to Replication Graph where it uses a “per-client bubble” of each connected player. Each Client player gets a Replicated Actor as the router for the system to carry only the Entities currently relevant to that player. The Server Authoritatively sends down the data for the Client to then spawn local Mass Entities from the Replicated data and render them appropriately.

Important Network Types

Responsibility

Scenario

Responsibility on Server?

Responsibility on Autonomous Proxy?

Responsibility on Simulated Proxy?

AI Decision Making

Fully

None

None

Pathfinding

Fully

None

None

Input Handling

Local Owning Client’s only

Local on the Actor and not in Mass

None

Movement Prediction and Reconciliation

Validate and Correct Only

Locally on the Actor, not in Mass

None

Transform Authority

(Ability to dictate in world transforms)

Source of Truth

Predict Locally, corrected by Server due to Replication overrides.

Receives Replicated Transform.

Essentially the same as Autonomous Proxy of being able to Predict Locally but corrected by Server.

Gameplay Collision and Hit Detection

Authorative

Predicted on the Actor, not in Mass.

Handled in Chaos really.

None

(Cosmetic only if you want to)

Visual LOD

Local Owning Client’s only

Local Only

Local Only

Spawn/Destroy of an Entity

Authoritative

Mirrors via Fast Array

Mirrors via Fast Array

Mass uses Fast Array Serializers to handle Replicating the actual Add/Update/Remove changes on Entities across the network. Using FMassFastArrayItemBase as the base type, found in MassClientBubbleHandler.h.

For lifetime considerations, there is an Observer setup within MassReplicationProcessor.h named UMassReplicationEntityDestructionObserver that introduces deterministic destruction of Replicated Mass agents to help enforce a Client Proxy is torn down at the correct time within the frame.

It is recommended to pool short lived Entities via a simple Tag swap instead of Create/Destroy, which allows for stable network ID’s to be kept and less memory churn.

Mass Networking Tick Flow diagram
Made in Draw.IO
Mass Networking Tick Flow diagram
Mass Client Replication Flow diagram
Made in Draw.IO
Mass Client Replication Flow diagram

Autonomous Proxies

Mass uses an Actor Component for bridging player controlled Actors with Entities via UMassAgentComponent.

Mass does not support traditional network prediction patterns out of the box, anything predicted lives entirely on the Actor’s responsibilities.

My recommendations for Crowds and Prediction:

  • Crowds: Fully Mass driven, with only swapping to full Actors when LOD considers it needing full functionality and complicated handling.
    • Can also use Client side extrapolation and smoothing as a dead reckoning approach, found some attempts at this online have had some fairly successful results, but they weren’t too complicated, so any released project’s doing this hasn’t been showcased yet.
  • Prediction: Using the Actor layer as the hidden core functionality with the Mass Entity layered on top as a local puppet. Helps with separating the responsibilities more cleanly.

Why is Network Prediction so important?

Because it allows for the game to feel immediate and not sluggish or laggy. So when you press a button, the result of that button press doesn’t wait for the network to update it should just do something immediately and not have the player have to worry about it.

Obviously this is unavoidable in certain scenarios(IE: Favor the shooter).

Share this post

Other Mass Blog Posts