GameMode only exists on the Server, ergo no Authority Check needed.
Possessing should give the Controller, on Server and Client side, the “ControlledPawn”, so you don’t need to save it.
From the Pawn side, you can do “GetController”, which should also work on Clients.
To get the correct Client Controller on a Client, you just need GetPlayerController0. Clients only have their own, so that’s fine.
You could also call “GetController” on the Pawn, but if the Pawn isn’t controlled, that will be null. GetPlayerController0 will give you the correct
PlayerController as long as its up and valid.
So normally, there is no need to replicate Pawn/Controller references.
You could check out my “Ballbump” Game. I think I got some HUD spawning when a new player joins. Maybe that helps: