Fixed the problem of standalone-builds created extra pawns by subclassing the LocalPlayer class and overriding the SpawnPlayActor() method so it doesn’t create a controller/pawn if a controller already exists.
bool USALocalPlayer::SpawnPlayActor(const FString& URL, FString& OutError, UWorld* InWorld)
{
// already spawned
if (PlayerController)
return true;
return Super::SpawnPlayActor(URL, OutError, InWorld);
}