Unowned Actor, cannot run on server from client.

Under normal circumstances it would go like this.

PlayerController Input Event → RunOnServer RPC
PlayerState/Pawn/GameState Multicast RPC

You are making a RunOnOwningClient RPC on the client itself. This will just call the function on the client as a regular function call.

Then you make a Multicast RPC on a PlayerController. Each Client only have their own PlayerController so this will only be called on the respective client that own the PlayerController the Multicast is executed on.
In other words it is pointless to make a Multicast RPC on a PlayerController since it will not be any different than a RunOnOwner RPC.

Checking if SwitchHasAuthority on an Input event is also pretty much pointless since it is will block ListenServer input.

If you call RunOnServer on an Actor that you don’t own the RPC will be dropped and a warning will be printed in the log output.

1 Like