再現手順
ロビー作成関数内
`TSharedPtr sessionSettings = MakeShareable(new FOnlineSessionSettings());
sessionSettings->bIsLANMatch = false;
sessionSettings->NumPublicConnections = 2;
sessionSettings->bAllowInvites = true;
sessionSettings->bAllowJoinInProgress = true;
sessionSettings->bAllowJoinViaPresence = true;
sessionSettings->bShouldAdvertise = true;
sessionSettings->bUsesPresence = true;
sessionSettings->bUseLobbiesIfAvailable = true;
#if defined(DEBUG)
sessionSettings->BuildUniqueId = 0; // ビルドIDが異なるとセッションが見つからないので、デバッグ環境のみ0に一致させる
#endif
sessionSettings->Set(FName(“LobbyName”), createLobbyInfo.LobbyName, EOnlineDataAdvertisementType::ViaOnlineServiceAndPing);
TSharedPtr uniqueNetId =
GetLocalUserPtrInOnlineManager()->GetPreferredUniqueNetId().GetUniqueNetId();
return sessionInterface->CreateSession(*uniqueNetId, m_sDebugSessionName, *sessionSettings);`ロビー検索関数内
`m_searchSessionSearch = MakeShareable(new FOnlineSessionSearch());
// 検索最大20件
m_searchSessionSearch->MaxSearchResults = 20;
m_searchSessionSearch->bIsLanQuery = false;
TSharedRef searchSettings = m_searchSessionSearch.ToSharedRef();
TSharedPtr uniqueNetId =
GetLocalUserPtrInOnlineManager()->GetPreferredUniqueNetId().GetUniqueNetId();
sessionInterface->FindSessions(*uniqueNetId, searchSettings);`ロビー退出関数内
`// プラグインの未実装でコンストラクタでのデリゲート関数登録が機能しないらしいので、引数で直接渡す
const FOnDestroySessionCompleteDelegate delegate =
FOnDestroySessionCompleteDelegate::CreateUObject(this, &UOnlineManager::DestroySessionCompleteDelegate);
// ホストの場合はセッション終了、その他メンバーの場合は退出するようになっているので関数を呼ぶだけ
if(!sessionInterface->DestroySession(m_sDebugSessionName, delegate)){
UE_LOG(LogApp, Error, TEXT(“Not leave lobby yet!”));
}`DefaultEngine.ini
`[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName=“/Script/SocketSubsystemEOS.NetDriverEOS”,DriverClassNameFallback=“/Script/OnlineSubsystemUtils.IpNetDriver”)
+NetDriverDefinitions=(DefName=“DemoNetDriver”,DriverClassName=“/Script/Engine.DemoNetDriver”,DriverClassNameFallback=“/Script/Engine.DemoNetDriver”)
[OnlineSubsystem]
DefaultPlatformService=EOSPlus
NativePlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
bUseSteamNetworking=false
bInitServerOnClient=true
SteamDevAppId=//隠し
[OnlineSubsystemEOS]
bEnabled=true
[OnlineSubsystemEOSPlus]
bEnabled=true
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
!CompatibleUniqueNetIdTypes=ClearArray
+CompatibleUniqueNetIdTypes=EOS
+CompatibleUniqueNetIdTypes=EOSPlus
MappedUniqueNetIdTypes=((“EOSPlus”,“EOS”))
[OnlineSubsystemEOS.ExternalAuth]
+ExternalAuthServicesNames=Steam
[/Script/SocketSubsystemEOS.NetDriverEOSBase]
bIsUsingP2PSockets=true
[/Script/OnlineSubsystemEOS.EOSSettings]
CacheDir=CacheDir
DefaultArtifactName=//隠し
RTCBackgroundMode=
TickBudgetInMilliseconds=0
bEnableOverlay=True
bEnableSocialOverlay=True
bEnableEditorOverlay=False
bPreferPersistentAuth=False
TitleStorageReadChunkLength=0
+Artifacts=//隠し
-AuthScopeFlags=BasicProfile
-AuthScopeFlags=FriendsList
-AuthScopeFlags=Presence
+AuthScopeFlags=BasicProfile
+AuthScopeFlags=FriendsList
+AuthScopeFlags=Presence
bUseEAS=False
bUseEOSConnect=True
bUseEOSRTC=False
bMirrorStatsToEOS=False
bMirrorAchievementsToEOS=False
bUseEOSSessions=False
bMirrorPresenceToEAS=False
bUseNewLoginFlow=False
SteamTokenType=WebApi:epiconlineservicestest
NintendoTokenType=NintendoServiceAccount`