I have created a simple multiplayer game using the TPS starter project.
I created a simple moving platform with blueprints checked all the replication and movement replication.
For some reason when a player jumps on top of the moving platform there is a bit of a stutter/jitter effect.
When the platform moves up the stuttering isn’t as noticeable, but when the platform moves left to right or down then the stuttering is super noticeable.
This problem is only on the client-side, server-side has no issues at all.
I have increased the tick rate on the server and checked the player movement blueprint and increased the priority and amount of updates to call, this made the upward platform a bit smooth but didn’t really affect the sideways or downwards movement.
I hope someone could point me in the direction where to check or what to try.
I couldn’t say for sure what the exact solution would be without spending time debugging it, so this is more of a general problem solving within Unreal insight than a solution. But if I had to put money on it, my guess would be that there’s some kind of desync between the client and server, and the client is getting snapped back by UCharacterMovementComponent.
If you see the character juddering around like this, like they’re trying to move in a direction and getting constantly snapped back, then that would be the first place I’d look.
There’s some info on how the engine does this here under the “Replicated Character Movement In-Depth” section
That’s where I’d start looking, if it were me.
Another thing that might be worth investigating is how Unreal’s UCharacterMovementComponent handles changing between in-air and grounded locomotion. Maybe the client is flip flopping between states because there’s some disagreement between the client and server as to whether your character is grounded or falling?
Not sure if there’s on-screen debug text you can turn on for character movement component, but it’d be interesting to turn it on, pause the game and then single step the client frame by frame, to see what states the component is going through.