USceneComponent::RelativeLocation is an uncompressed FVector (3x32 bits replicated). Consider changing to FVector_NetQuantize100, or consider implementing custom serialization (with customizable quantization) similar to FRepMovement.

Also this is may be an oversight, but for the RootComponent of a PrimitiveComponent, Actor::ReplicatedMovement already does the compression/replication of the root's location and rotation and sets it in PostNetReceiveLocationAndRotation (with world origin rebasing as well). So unless I'm missing something we may be replicating the component's location/rotation needlessly since it will be stomped by the actor... the order of this operation is also questionable (see USceneComponent::PostRepNotifies, will this run redundantly after the AActor::PostNetReceiveLocationAndRotation change in transform)?

RelativeRotation could also use custom quantization but default should remain at 16 bits per component as 8 bits could cause significant jitter.

RelativeScale3D similarly has no quantization and should be addressed (might need 3+ decimal digits of precision since scales are typically small).

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-46383 in the post.

Login to Vote

Won't Fix
ComponentUE - Networking
Affects Versions4.154.164.17
CreatedJun 22, 2017
ResolvedAug 18, 2021
UpdatedAug 18, 2021
View Jira Issue