How do I make a client have authority over the replication of their pawn's physics?

I am implementing networking for my game and I am trying to fix network stuttering caused by the server replacing the client’s pawn’s position and rotation. I am using all base classes, starting from scratch with blueprints. I am using the physics system to create the movement and rotation for the input to the game if it matters.

I have watched seemingly every tutorial on the topic in existence, but they all assume you are using the classes from the non-blank starter templates.

I would like the server to trust the client’s version of their pawn (make the client have authority over it) instead of the client replacing its version constantly with the server’s. Does anyone have any tips to help me? Thank you!

I have solved this by turning off movement replication for the pawn, then running the pawn input response scripts on an event that uses “run on owning client”, then at the end of the input response, getting the actor location, actor rotation, physics velocity, and physics rotational velocity and passing those to a series of RPC events. The first event is to the server and it only calls a second event that is multicast. The multicast event checks if the actor is locally controlled, and if it is not, sets the location, rotation, phys vel, and phys rot vel to the values passed in to the event by the owning client.

This of course enables cheating, but that is not a problem for the scope of the game I am working on.

1 Like