====== マルチプレイのセットアップ ======
検証中
===== 要件 =====
* [[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を試みて失敗