Multiplayer Spectator Blueprint doesn't work correctly

Hello I’m creating an multiplayergame. When a player end a level (overlapping trigger) he should set into spectator mode. My Blueprint doesn’t work correctly. Dose a client hit the TriggerVolume he’ll set into spectator. But does the Host hits the volume, everyone sets into spectator. Does someone can help me?

Thanks for your Answer. I put “switch has Authority” after ActorBginOverlap and it work correctly.

Hi, the logic in those three images will not work how you want it. The ActorBeginOverlap will be triggered on the server and on all clients. Now lets look at two cases

(-) client owned pawn walks into the trigger.

All clients execute the “CallSpectator” event locally, GetPlayerController with index 0 returns the local player controller, so all clients call the “Spectate” event, and since they’re calling it on their own player controller which they own, the server will execute that event once for every client player controller, therefore putting every client into spectate mode.

The server though won’t execute the “CallSpecator” event locally, but will replicate it to the owning client (client whose pawn walked into the trigger), so that client will execute the “CallSpectator” event twice

(-) server owned pawn walks into the trigger

Again all the clients execute the “CallSpecator” event locally and Server again executes “Specate” event for all the client player controller resulting again in all clients going into specate mode.

But now the owner of the pawn that walked into the trigger is the server, so the server will also go into “Specate” mode.


Solution: Do a IsServer check directly after the ActorBeginOverlap and only continue on the server.