The BP only work if I run rotation logic on the client, and M_Forward on the server? (Screenshots!)

This is kinda weird but it’s likely a lack of knowledge on my part. I was just about to make a request for help when at the last second I figured out a way to get the client player to move like I want it to.

Now my question is this, why did my solution work?

I’ve been racking my brains trying to get it to move on the client like it does freely on the server. All I changed is one of them gets changed on the client, and the other gets changed on the server? For the edification for anyone who might find this post, can anyone explain why this solution worked out?

Thank you!

Each client owns their respective controller but the server owns the actor. So your controller rotation inherently does not get checked by server.

To fix the movement issue, you need to commit the update to both the client and server at the same time. So I’d run through a sequence node, first update my own velocity, then custom event node (with run on server checked) and send through the velocity.