====== マルチプレイのセットアップ ====== 検証中 ===== 要件 ===== * [[https://dev.epicgames.com/documentation/ja-jp/unreal-engine/online-subsystem-in-unreal-engine|Online Subsystem]] * [[https://dev.epicgames.com/documentation/ja-jp/unreal-engine/online-subsystem-steam-interface-in-unreal-engine?application_version=5.5|Online Subsystem Steam]] * [[https://dev.epicgames.com/documentation/ja-jp/unreal-engine/using-steam-sockets-in-unreal-engine|Steam Socket]] * Steamをターゲットとし、EOSは使わない * リッスンサーバー * UE5.5 [/Script/Engine.GameEngine] !NetDriverDefinitions=ClearArray +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="/Script/SteamSockets.SteamNetSocketsNetDriver") ; 公式Doc通りだと以下 ; [/Script/Engine.GameEngine] ; +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 SteamAppId=480 ; GameServerQueryPort=27015 bInitServerOnClient=true bUsesPresence=true bUseLobbiesIfAvailable=true bUseSteamNetworking=true bAllowP2PPacketRelay=true [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"; ===== バグ対処 ===== DefaultEngine.ini で bUseLobbiesIfAvailable=true と設定しても、false となる。\\ JoinSession時に、bUsesPresence と FOnlineSessionSettings::bUseLobbiesIfAvailable [FOnlineSessionSteam::JoinSession] The values of FOnlineSessionSettings::bUsesPresence and FOnlineSessionSettings::bUseLobbiesIfAvailable are treated as equal and have to match UFUNCTION(BlueprintCallable, Category = "VshsSteam|Session") static void FixSteamSearchResultFlags(UPARAM(ref) FBlueprintSessionResult& SessionResult); void UVshsSteamFunctions::FixSteamSearchResultFlags(FBlueprintSessionResult& SessionResult) { FOnlineSessionSearchResult& NativeResult = SessionResult.OnlineResult; NativeResult.Session.SessionSettings.bUsesPresence = true; NativeResult.Session.SessionSettings.bUseLobbiesIfAvailable = true; } ===== おバカ事例 ===== * Standalone Game で実行して Steamオーバーレイが出るが、セッションを作成できない * Play As Listen Server でプレイしていないか?おそらくSteamNetDriver が 同じP2Pポートで2重Listenを試みて失敗