Just spent quite a few hours dealing with this last week. I also do this to specify my own spawn parameters as the Engines RestartPlayer’s settings allow the the pawn to not spawn due to collisions.
Override GameModeBase::RestartPlayer(AController* Player)
Loads stats into PlayerState (my method)
- Gameplay Ability System resides here
Calls GameModeBase::GetDefaultPawnClassForController (which is also overriden)
Spawns the pawn (the location and rotation information was retrieved at the Load Stats call)
Calls additional setup method on the pawn
Calls GameModeBase::FinishRestartPlayer (not overriden)