Special traversal movement in multiplayer

I’m trying to add support for some special traversal types that I want to get working in multiplayer. One of these are sliding over low walls, not that different from this First person movement stuff, now with sliding - YouTube . I’ve implemented it like this currently:

  1. When the player gives the correct input the owner client will check if it can trigger one of the special moves. If it can it will set a flag on the character movement component that’s replicated similar to this.
  2. In the character’s CheckJumpInput(…) it will do a similar check to find the start and end position of the move. Since it’s done in there it will run on both the server and the owner client. It will then store the start and end position and set a flag that triggers an animation.
  3. Both client and server then linearly interpolates between start and end and sets the position of the actor each tick.

Basically a client-side prediction of these moves. It works quite good, but it triggers a lot of corrections on the client side sometimes. I was thinking that it might be that the server and client finds slightly different start and end positions, so I added an RPC where the server sends the start and end position to the client. This helped a bit, but not a lot. I expected it to snap the character once when receiving the positions from the server, but instead it corrects it almost every frame sometimes.

Any ideas of what might be causing this behavior? Is this a reasonable approach?

I set the movement mode of the character to flying during these moves to avoid gravity prediction issues.