void AGameSession::HandleMatchHasEnded() { if (STATS && !UE_BUILD_SHIPPING) { if (FParse::Param(FCommandLine::Get(), TEXT("MatchAutoStatCapture"))) { UE_LOG(LogGameSession, Log, TEXT("Match has ended - end automatic stat capture")); GEngine->Exec(GetWorld(), TEXT("stat stopfile")); } } UWorld* World = GetWorld(); if (UOnlineEngineInterface::Get()->DoesSessionExist(World, SessionName)) { for (FConstPlayerControllerIterator Iterator = World->GetPlayerControllerIterator(); Iterator; ++Iterator) { APlayerController* PlayerController = *Iterator; if (!PlayerController->IsLocalController()) { PlayerController->ClientEndOnlineSession(); } } FOnlineSessionStartComplete CompletionDelegate = FOnlineSessionEndComplete::CreateUObject(this, &AGameSession::OnEndSessionComplete); UOnlineEngineInterface::Get()->EndSession(World, SessionName, CompletionDelegate); } }