UFloatingPawnMovement Client Control (not replicated)

I have an actor with UFloatingPawnMovement component added. The actor is spawned at runtime in code so the client spawns the actor.

AddMovementInput does not work at all on the client. Even if I turn off everything to do with replication only the server can move the actor around with AddMovementInput. Client does call Possess on the actor too.

This is just a camera actor so I do not need or want to replicate it. Is there any way to have a client control an actor with AddMovementInput on their own?

As far as I know, unreal engine is designed in this way, that only the server would be able to move any actor. But that bugs me too. I would like to revive this topic and check if there are nay workarounds to this kind of functionality?

I do not need that camera would be replicated and it doesn’t have to exist on server side. Also I want to move it with different inputs - with a separate movement component. So, any suggestions are welcomed.

Possession needs to happen on server side, so the custom pawn has to be spawned by server.

Past that, if you disable movement replication you should be able to control the pawn on client side (input/control always happen on client-side first). Since floating movement does not have any builtin replication, the server will not move when client does, so if movement replication is enabled the server will continuously reset client position.

However if the server doesn’t move along with you, you’ll eventually experience issues due to relevance checks.

TL;DR: the server needs to know where you are and what you are looking at, in order to correctly replicate the subset of actors that is relevant to you.

So, even if you want client to have control, you should at least implement periodic updates so the server can follow client’s location. This can be a simple Timer → Server RPC with location as parameter → Set location on server. Keep movement replication disabled on the pawn to avoid corrections on client.

That makes sense. Thank you, it was informative.