UE5 Issue trying to create and join online sessions

Game Instance Header File

#pragma once

include "CoreMinimal.h"

include "Engine/GameInstance.h"

include "OnlineSubsystem.h"

include "OnlineSessionSettings.h"

include "Interfaces/OnlineSessionInterface.h"

include "GameInstanceBase.generated.h"

UCLASS() class EPSILON_API UGameInstanceBase : public UGameInstance { GENERATED_BODY()

public: UGameInstanceBase();

protected: TSharedPtr<FOnlineSessionSearch> SessionSearch;

IOnlineSessionPtr SessionInterface;

protected: virtual void Init() override;

virtual void OnCreateSessionComplete(FName SessionName, bool Succeeded);
virtual void OnFindSessionsComplete(bool Succeeded);
virtual void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result);

UFUNCTION(BlueprintCallable)
void CreateServer();

UFUNCTION(BlueprintCallable)
void JoinServer();

};

Game Instance cpp file

#include "Game/GameInstanceBase.h"

include "Kismet/GameplayStatics.h"

include "Engine/World.h"

UGameInstanceBase::UGameInstanceBase() {

}

void UGameInstanceBase::Init() { Super::Init();

if (IOnlineSubsystem* subsystem = IOnlineSubsystem::Get())
{
    SessionInterface = subsystem->GetSessionInterface();
    if (SessionInterface.IsValid())
    {
        SessionInterface->OnCreateSessionCompleteDelegates.AddUObject(this, &UGameInstanceBase::OnCreateSessionComplete);
        SessionInterface->OnFindSessionsCompleteDelegates.AddUObject(this, &UGameInstanceBase::OnFindSessionsComplete);
        SessionInterface->OnJoinSessionCompleteDelegates.AddUObject(this, &UGameInstanceBase::OnJoinSessionComplete);
    }
}

}

void UGameInstanceBase::OnCreateSessionComplete(FName SessionName, bool Succeeded) { if (Succeeded) { GetWorld()->ServerTravel("/Game/Scenes/General/Lobby?listen"); } }

void UGameInstanceBase::OnFindSessionsComplete(bool Succeeded) { if (Succeeded) { TArray<FOnlineSessionSearchResult> searchResults = SessionSearch->SearchResults;

    if (searchResults.Num())
    {
        SessionInterface->JoinSession(0, FName("Create Session"), searchResults[0]);
    }
}

}

void UGameInstanceBase::OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result) { if (APlayerController* playerController = UGameplayStatics::GetPlayerController(GetWorld(), 0)) { FString joinAddress = ""; SessionInterface->GetResolvedConnectString(SessionName, joinAddress);

    if (joinAddress != "")
    {
        playerController->ClientTravel(joinAddress, ETravelType::TRAVEL_Absolute);
    }
}

}

void UGameInstanceBase::CreateServer() { UE_LOG(LogTemp, Warning, TEXT("Create Server"));

FOnlineSessionSettings sessionSettings;
sessionSettings.bAllowJoinInProgress = true;
sessionSettings.bIsDedicated = false;
sessionSettings.bIsLANMatch = (IOnlineSubsystem::Get()->GetSubsystemName() == "NULL");
sessionSettings.bShouldAdvertise = true;
sessionSettings.bUsesPresence = true;
sessionSettings.NumPublicConnections = 5;

SessionInterface->CreateSession(0, FName("Create Session"), sessionSettings);

}

void UGameInstanceBase::JoinServer() { SessionSearch = MakeShareable(new FOnlineSessionSearch()); SessionSearch->bIsLanQuery = (IOnlineSubsystem::Get()->GetSubsystemName() == "NULL"); SessionSearch->MaxSearchResults = 1000; SessionSearch->QuerySettings.Set("SEARCH_PRESENCE", true, EOnlineComparisonOp::Equals);

SessionInterface->FindSessions(0, SessionSearch.ToSharedRef());

}

/r/unrealengine Thread