All physics simulation runs only on the server. Clients never simulate physics. Instead, they receive finished poses from the server and blend them smoothly. Active ragdoll blending is fully integrated; the server merges animation targets and physics results into a single authoritative state. The result: zero desync, zero prediction complexity.


Who Does What?

Role Responsibility
Server Simulates all bodies, constraints, and collisions. Blends animation pose with physics forces to produce the final authoritative pose. Generates snapshots at a fixed interval.
Client Buffers the two latest snapshots, interpolates between them, and applies the resulting bone transforms to the skeletal mesh. No local physics simulation.
Snapshot System Packs all bone transforms, velocities, and active ragdoll flags into a compact struct. Sent from server to clients via replicated property or RPC.

Step-by-Step Flow

  1. Server ticks physics
  2. Snapshot is captured
  3. Snapshot is sent to clients
  4. Client buffers and interpolates
  5. Skeletal mesh is updated
  6. Active ragdoll recovery loop

Key Difference from Default Unreal Engine

Default Unreal Behaviour This System
Physics simulated client-side, server only activates ragdoll. Physics runs 100% on the server.
Each client gets different results, leading to desync. Single source of truth; all clients see the exact same state.
Active ragdoll motors/constraints often run locally, adding prediction and correction overhead. All motors and blending are resolved on the server; clients receive the finished pose.
Frame rate drops or network lag directly affect physics behaviour. Client conditions are irrelevant — snapshots are authoritative and deterministic.

What You Gain