Could I ask a quick question regarding replication. How much data is sent across the network when using character replication to keep the characters synchronised on all clients? Does network replication only transmit changes in an objects state, i.e. only replicated variables that have a changed value and its new location when moving (without sending all of the unchanging data, e.g. mesh used, components etc)?
Unchanged data is almost not sending across network. This rule works for everything in UE4. But ping works everytime.
Some data replicates simply: it is changed - it is replicated, like replicated variables, simple location synchronization etc.
Some data replicating tricky, like physics bodies, character movement components. They using saved motion to synchronize position considering ping time. It is like they sending object state (rarely, 1-2 times per second if they not interacting and instantly if something changed their movement). Server send message: “This box moving with this vector, having this angular rotation, your ping is some number, so resimulate using this delay, to make this box valid across network.”. Same thing with moving components, their state changes when input vector changes, and rarely by server position fix (due to float error).
That’s why sometimes you can see someone falling smoothly, but suddenly teleportates up and starts flying up. Happening, because player used something, that will launch him up. When message about this reaches other client, this client using save motion to get back to the moment, when this other player did this action, considering ping of course, and from this founded state pushes player up (only visibility, client can’t directly control other players).
Some data can have thousands of replicated objects, but use 10-20 KBytes/Sec bandwidth. This replication type uses absolute state. Only thing that replicates, is that unit appeared or thouse units want move to this location. Everything what happens with this units will act the same independantly if initial state the same. Uses fixed simulation delta time, validates with hash usually.