PlayerStat are asociated to a PlayerController, that’s ok. But why using it?
PlayerStats can store the player variables, in a multiplayer game as Counter Strike, the player stats are the kills, deaths, assists, team, score, victories, defeats…
But, to store this, you always accesed by get Controller and cast to PlayerStat . Is not faster manage a Structure in PlayerController with those values?
Others players cant access to player controller… but all players can access to all others player states. Afaik.
You can try to launch multiplayer, get other player controller, cast to controllet and state and try to read variables (but dont do it with server player)
PlayerState is replicated to all players (within GameState).
If you have a multiplayer Game with a scoreboard for example you need to store the Scoreboard Variables in the PlayerState.