Training Livestream - Understanding Replication in UE4 - March 21 - Live from Epic HQ

It does that to minimize the data size, it’s an optimization to keep the traffic minimized. I expect all fast paced online games to do this. The technique is called quantization, for example you can take a look at FVector_NetQuantize, FVector_NetQuantize10. FVector_NetQuantize100 etc. You can change the amount of accuracy you want per actor. With blueprints, you’d go to actors class defaults, expand advanced settings from replication and change it here:

I don’t know if there’s any way to turn off the quantization for built-in actor replication or if variables do get quantized automatically, but nothing prevents you from serializing the data yourself if you really need to have the full accuracy (and have enough bandwidth budget for it).

It’s to minimize the network traffic but also to provide low latency. It’s one thing to send a lot of data across the network and other thing to get that without a lot of delay from server to all clients as quickly as possible, Modern online games send packets around 60 times per second. In Unreal they send replication data after each Tick (as covered in the stream), so if your game is running 60 fps, you get also network packets sent 60 times in a second. While Unreal has mechanics to help with telling what is relevant and what is more important for replication, you shouldn’t waste the bandwidth for things that don’t matter for the gameplay/user experience. While such naive approach (replicate everything) could work for something slow paced where things move slowly, you can’t afford that way of thinking on a fast based online shooter etc. Also while network speeds are good for most part of the world, there are still places around where bandwidth is really limited.