Need Some Help With Reading A Variable On MyPlayerController From MyGameMode

Try something like this:

  • Remove delay in your OnPostLogin event because some players may be skipped if they join in a short period of time.
  • In your Game Mode spawn dummy character/actor and possess it with the current player controller.
  • On your dummy / spectator character use Event Possessed (or check if the current player is the owner) and from there Spawn your desired character and destroy dummy character.
  • Save your player data like Character Selected etc in your Game Instance. When Spawning a new character use Run on Owning Client, get character/variables from the Game Instance, call Spawn Event on the server.

You can spawn also character from Game Mode but maybe it’s more flexible to spawn spectator/dummy character first. Also, I think you have too many unnecessary variable replications…like RandomSpawnLocation (transform). Server will spawn on that location without replication anyway and if that actor/character is already replicated it will replicate his location and spawn. The same applies to other variables.