There are 2 versions of OSS, one that’s based on OnlineSubsystem plugin, and a new plugin that started with UE5 called OnlineServices

You can’t have OnlineSubsystemEOS and OnlineServicesEOS enabled or you will get errors, e.g: Lobby Server Travel fail because FSocketSubsystemEOS::GetLocalUserId will try to get logged user in Subsystem Auth Interface (and not the user logged in Online Services Auth interface)

Logging

Account

Login

Global call stack of a successful call of Login on the identity interface.

  • IOnlineIdentity::Login will call FUserManagerEOS::Login
    • will call CallEOSAuthLogin (or ConnectLoginNoEAS, LoginViaPersistentAuth, LoginViaExternalAuth)
      • will call EOS_Auth_Login, callback at OnEOSAuthLoginComplete
        • In callback: (should have Epic Account id (EAID) in EOS_Auth_LoginCallbackInfo)
          • if successful will call ConnectLoginEAS that calls EOS_Connect_Login
            • In callback: (should have PUID in EOS_Connect_LoginCallbackInfo)
              • if successful:
                • calls FullLoginCallback (having both EAID and PUID)
                  • calls AddLocalUser (with EAID and PUID)
                    • calls FUniqueNetIdEOSRegistry::FindOrAdd (with EAID and PUID)
                    • fills data in the local user struct
                    • calls UpdateUserInfo
                  • will call TriggerOnLoginCompleteDelegates as successful
              • if invalid user:
                • calls CreateConnectedLogin
              • if other error:
                • calls Logout and logs an Error
                • will call TriggerOnLoginCompleteDelegates as failed

User Info

Get DisplayName

Call stack when getting user display name

  • IOnlineUserPtr::GetUserInfo returns FOnlineUser
    • call FOnlineUser::GetDisplayName
      • implementation in TOnlineUserEOS::GetDisplayName
        • calls OnlineSubsystemEOSTypesPrivate::GetBestDisplayName
          • calls UserManager->GetBestDisplayName (FUserManagerEOS)
            • calls GetBestDisplayNameStr and EOS_UserInfo_BestDisplayName_Release

Lobby

  • Schemas
  • Schema flags list: ESchemaAttributeFlags

Searchable attributes

Searchable attributes must be declared in the LobbyBase schema id or the following error will come on Engine init config: Invalid schema attribute yourderivedschemaid.lobby.yoursearchableattribute: Searchable fields may only exist in the base schema.

Known issues

Unable to map None to EOS_OnlinePlatformType

FEpicGamesPlatform::GetOnlinePlatformType - unable to map None to EOS_OnlinePlatformType : Explanation

Overlay initialization failed

EOS First overlay initialization failed for swapchain. Disabling any future attempts to initialize.

This can be because we don’t use OnlineSubsystemEOS but OnlineServicesEOS, which cause EOS_Platform_Create inside FEOSSDKManager::CreatePlatform to be called to late (after graphics initialized).

Fix:

  • Make a custom module
  • Add it to your project target file
  • Add it to your .uproject module dependency list with PostSplashScreen LoadingPhase