No player controller on client?

Yes, PlayerControllers are not replicated to clients because:

  1. they not really needed there as they can control pawns on server
  2. as a security measure, client should have less game state controlling power as much as possible aspecially for otherp layers, as the more client can do there more hacking potential. Not to mention any replicated data even if you not using it visually can be obtained by user by reading memory, so they can’t be secret.

Same goes with GameMode, as it is central gameplay control class and only server really needs it, there only hacking risks from doing otherwise. If i’m not mistaken only local player controllers of local player exists in client and they are replicated to server.

But both PlayerController and GameMode have replicable counterpart which allows to replicate any needed data from those classes (like game and player stats and so on which all players can access) they are called GameState and PlayerState

The problem with those are fact that they not quite usable in blueprints (yet?), most likely you will need to use C++ here, at least to make your own class which later you could use in blueprint, but you can make your own class that is replicated fully in blueprint that will have similar function, you can also store needed data in pawns which will get replicated (only problem with that is fact it will get deleted with pawn so you need to keep copy in PlayerController).

1 Like