How can I replicate character rotation?


I’ve been trying to get rotation replicating properly in my prototype. I’ve tried a variety of methods and while the rotation seems to be replicating well from the server to the client, the client’s character seems to be maybe double-transforming for some reason. You can see my problem in the video [HERE][1], where the server is the controlling the character on the left and the client is controlling the character on the right.

Below is the relevant graph from the blueprint of the character which derives from Character. The SmoothRoll event is called on Tick in the same blueprint, and PawnRotation is set in the player controller blueprint. VertSpeed is set on Tick.

I’ve tried many different methods but I must be missing something. If you can suggest the most efficient way I might make the client’s character behave like the server’s, I would appreciate it.


I had the exact same issue as you. After a lot of trial and error i came up with the following solution:
Set the player controller replication to True (Replicates), Replicate Movement to False
Character to default replication settings

Now for the character graph:

Create a Branch(IsLocallyControlled)->True–>SwitchHasAuthority->
Authority->CustomEvent( Multicast) =SetActorRotation(RinterpRot)
Remote ->(CustomEvent on OwningClient)=SetActorRotation(RinterpRot)->CustomEvent(Server)=CustomEvent(multi)

Where RinterpRot is the out node of your rinterp
The jitteriness and the lag are not there with this setup and the rotations seems precise
Let me know if it works

This partially helped me. If I replicate PlayerController (which does not seem right but it kinda works) I can get the rotation right. However to make it possible I have to set Replicate Movement to false in Character class - but both needs to be replicated, but just one works at a time :frowning: