How can/should I set up serverside movement logic?

I’ve been working on this small project for the past week or so and I can’t seem to get the serverside logic for character movement to work. It’s based off of the preset first person shooter scene, the only major difference being the server logic and a basic UI.



This is what I call on all the player characters when they spawn, to set up the UI and disable clientside physics.



This is what I call on the clients when an input is received.



This is how the server handles the input events.



The server sends its updated transform to the client…



…And then the client updates its transform.


This works more or less fine on a listen server, but it never works on my clients. Did I set something up wrong, or is it just not possible to use controllers serverside?