Hello, I’m having a weird issue that may be Iris related (doesn’t seem to happen with Iris disabled). Sometimes during network lag or even during a normal connection the Client possession will not go all the way through. The server will be possessed to the pawn but the Client will not.
RetryClientRestart doesn’t seem to work at all and the Client Player Controller is stuck in a state with no pawn and no HUD and can’t do anything at all. There seems to be no way to recover from it.
Our game makes use of a lot of Possessing and Unpossessing as you can “Meld” into any pawn in the area at a fairly quick rate. However, sometimes ClientRestart() will get a null pawn and once that happens it can’t recover as it seems to refuse to get a replicated pawn passed to it.
I tried to manually send/request the pawn from the Server however the Client seems to always have a null pawn even when I pass a valid one to it so it can run ClientRestart(). Here is my attempted workaround.
This seems like an issue where the Pawn simply doesn’t exist on the Client side and there is no open channel from the Server to the Client for that particular pawn. I’m running a debug now to try and get more info, but i’ve been trying to figure this out for a few days so I figured i’d post sooner rather than later. Thank you!
`void ARingPlayerController::SERVER_RetryClientRestart_Implementation()
{
ReplicateImmediately(GetPawn()); // Tries to force it to replicate and be relevant for clients
UE_LOG(LogPlayerController, Verbose, TEXT(“SERVER_RetryClientRestart_Implementation %s”), *GetNameSafe(GetPawn()));
ClientRestart(GetPawn());
CLIENT_PawnMelded(GetPawn());
}
void APlayerController::ClientRestart_Implementation(APawn* NewPawn)
{
UE_LOG(LogPlayerController, Verbose, TEXT(“ClientRestart_Implementation %s”), *GetNameSafe(NewPawn));
// NewPawn always ends up bieng null
…`