I followed eXi's How To Use Sessions In C++ Wiki Tutorial to implement the online session system in my game but it gives me this error, it compiles but I don't know where is the error coming from

log file

the LobbyGameMode includes the WaveGameInstance so the problem must be there

here is my WaveGameInstance code

.h

// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "Engine/GameInstance.h" #include "WaveGameInstance.generated.h" /** * */ USTRUCT(BlueprintType) struct FSessionDisplayInfo { GENERATED_BODY() //Always make USTRUCT variables into UPROPERTY() // any non-UPROPERTY() struct vars are not replicated // So to simplify your life for later debugging, always use UPROPERTY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SessionDisplay) int32 SessionIndex; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SessionDisplay) FText SessionName; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SessionDisplay) int32 CurrentPlayers; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SessionDisplay) int32 MaxPlayers; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SessionDisplay) int32 Ping; //Constructor FSessionDisplayInfo() { //Always initialize your USTRUCT variables! // exception is if you know the variable type has its own default constructor SessionIndex = 0; CurrentPlayers = 0; MaxPlayers = 0; Ping = 0; } }; UCLASS() class WAVE_API UWaveGameInstance : public UGameInstance { GENERATED_BODY() UWaveGameInstance(const FObjectInitializer& ObjectInitializer); /** * Function to host a game! * * @Param UserID User that started the request * @Param SessionName Name of the Session * @Param bIsLAN Is this is LAN Game? * @Param bIsPresence "Is the Session to create a presence Session" * @Param MaxNumPlayers Number of Maximum allowed players on this "Session" (Server) */ bool HostSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, bool bIsLAN, bool bIsPresence, int32 MaxNumPlayers); /* Delegate called when session created */ FOnCreateSessionCompleteDelegate OnCreateSessionCompleteDelegate; /* Delegate called when session started */ FOnStartSessionCompleteDelegate OnStartSessionCompleteDelegate; /** Handles to registered delegates for creating/starting a session */ FDelegateHandle OnCreateSessionCompleteDelegateHandle; FDelegateHandle OnStartSessionCompleteDelegateHandle; /** * Function fired when a session create request has completed * * @param SessionName the name of the session this callback is for * @param bWasSuccessful true if the async action completed without error, false if there was an error */ virtual void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful); /** * Function fired when a session start request has completed * * @param SessionName the name of the session this callback is for * @param bWasSuccessful true if the async action completed without error, false if there was an error */ void OnStartOnlineGameComplete(FName SessionName, bool bWasSuccessful); /** * Find an online session * * @param UserId user that initiated the request * @param SessionName name of session this search will generate * @param bIsLAN are we searching LAN matches * @param bIsPresence are we searching presence sessions */ virtual void FindSessions(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, bool bIsLAN, bool bIsPresence); /** Delegate for searching for sessions */ FOnFindSessionsCompleteDelegate OnFindSessionsCompleteDelegate; /** Handle to registered delegate for searching a session */ FDelegateHandle OnFindSessionsCompleteDelegateHandle; /** * Delegate fired when a session search query has completed * * @param bWasSuccessful true if the async action completed without error, false if there was an error */ void OnFindSessionsComplete(bool bWasSuccessful); /** * Joins a session via a search result * * @param SessionName name of session * @param SearchResult Session to join * * @return bool true if successful, false otherwise */ bool JoinSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, const FOnlineSessionSearchResult& SearchResult); /** Delegate for joining a session */ FOnJoinSessionCompleteDelegate OnJoinSessionCompleteDelegate; /** Handle to registered delegate for joining a session */ FDelegateHandle OnJoinSessionCompleteDelegateHandle; /** * Delegate fired when a session join request has completed * * @param SessionName the name of the session this callback is for * @param bWasSuccessful true if the async action completed without error, false if there was an error */ void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result); /** Delegate for destroying a session */ FOnDestroySessionCompleteDelegate OnDestroySessionCompleteDelegate; /** Handle to registered delegate for destroying a session */ FDelegateHandle OnDestroySessionCompleteDelegateHandle; /** * Delegate fired when a destroying an online session has completed * * @param SessionName the name of the session this callback is for * @param bWasSuccessful true if the async action completed without error, false if there was an error */ virtual void OnDestroySessionComplete(FName SessionName, bool bWasSuccessful); public: UFUNCTION(BlueprintCallable, Category = "Network|Test") void StartOnlineGame(bool bIsLanMatch, int32 MaxPlayers); UFUNCTION(BlueprintCallable, Category = "Network|Test") void FindOnlineGames(bool bIsLanMatch); UFUNCTION(BlueprintCallable, Category = "Network|Test") void JoinOnlineGame(int32 SessionIndex); UFUNCTION(BlueprintCallable, Category = "Network|Test") void DestroySessionAndLeaveGame(); UFUNCTION(BlueprintImplementableEvent, Category = "Network|Test") void UpdateServerList(); UFUNCTION(BlueprintCallable, Category = "Network|Test") FORCEINLINE TArray<FSessionDisplayInfo> GetSessionsDisplayInfo() { return SessionUMGDiplayInfo; } UFUNCTION(BlueprintCallable, Category = "Network|Test") void SetPlayerNickname(FString Nickname); FORCEINLINE FString GetPlayerNickname() { return PlayerNickname; } private: TSharedPtr<class FOnlineSessionSettings> SessionSettings; TSharedPtr<class FOnlineSessionSearch> SessionSearch; UPROPERTY(EditDefaultsOnly) FName MainMenuMapName; UPROPERTY(EditDefaultsOnly) FName LobbyMapName; TArray<FSessionDisplayInfo> SessionUMGDiplayInfo; FString PlayerNickname; //UPROPERTY(EditDefaultsOnly) //uint32 bIsLanMatch : 1; };

.cpp