CharacterMovement does not adjusts Autunomous proxy rotation

The default character movement component adjusts client’s position on autonomous proxies but not their rotation.

This position adjust happens through ClientAdjustPosition or ClientVeryShortAdjustPosition but unfortunately server’s rotation of character is never sent to the owning client, but only to simulated clients.

This can be deduced by the fact that both ClientAdjustPosition and ClientVeryShortAdjustPosition are marked to run on owning client and none of the two takes a rotation parameter unlike ClientAdjustRootMotionPosition which is for root motion

I understand that this might be an intended behavior which is based on the following assumptions:

1.This is an autonomous proxy so majority of calculations should handle itself on the player , but still it might need corrections

2.players will always use either controller rotation or bOrientToMovement for calculating rotations however if we don’t use both of those methods ( like I use a different method that needs to set rotation on server and client directly) then the rotation replication to owning client logic breaks.

Please if I’ve missed something that adjusts client rotation as well tell me . For the time being I’m gonna make a custom version of adjustment function with rotation parameter.

Apparently it goes deeper, the client rotation is never known to server either , so server never knows if a correction is needed.

Apparently sending rotation from owning client to server each tick works good enough. After all the original character component code does the same just with Control rotation instead of actual rotation, So if its fine to completely trust user on its control rotation why not trust actor rotation too :smiley: