クイックスタート: PlayFab オンライン・サブシステム (OSS)
このクイックスタート ガイドでは、Unreal Engine 4 または Unreal Engine 5 を使用して構築された Xbox、PC、Nintendo Switch、PlayStation®5、PlayStation®4 ゲームのロビー、マッチメイキング、パーティーなどのマルチプレイヤー機能の設定と使用方法について説明します。 UE4 または UE5 のサポート対象であるプラットフォームとバージョンの完全なリストについては、「サポート対象のプラットフォーム」を参照してください。
このページで説明されているターゲット プラットフォームに関連する手順を実行すると、OSS の使用を開始できるようになります。 認証、ネットワーク、VoIP、ロビーへのグループ化、マッチメイキングはお客様の代わりに処理され、他に変更する必要はありません。
PlayFab オンライン サブシステムのダウンロードとインストール
PlayFab オンライン サブシステムに移動して、PlayFab オンライン サブシステム ソースをダウンロードまたは複製します。 ダウンロードまたは複製されたリポジトリ名は PlayFabMultiplayerUnreal です。 リポジトリの名前を OnlineSubsystemPlayFab に変更する必要があります。
必要なもの
- PlayFab タイトル ID: PlayFab パーティおよびマルチプレイヤー SDK 用にタイトル ID が構成されていない場合は、PlayFab パーティの有効化を参照してください。
GDK、PC、Switch、PlayStation®5、PlayStation®4
- 特定のプラットフォームの PlayFab パーティー、ロビー、マッチメイキング ライブラリ:PlayFab パーティーとマルチプレイヤー ライブラリの取得をご覧ください。
初期セットアップ
Unreal Engine コード ベース
- OnlineSubsystemPlayFab フォルダーとそのコンテンツを、UE ディレクトリから Engine\Plugins\Online の UE ディレクトリにコピーします。
- GenerateProjectFiles.bat を実行して、エンジンのプロジェクト ファイルを作成します。
- 新しい UE5.sln ファイルをダブルクリックして、プロジェクトを Visual Studio に読み込みます。
- ソリューション構成を Development Editor に設定し、ソリューション プラットフォームを Win64 に設定し、UE5 ターゲットを右クリックして [ビルド] を選択します。
ゲーム コード ベース
- 以下の変更を .uproject ファイルの [プラグイン] セクションに適用し、OnlineSubsystemPlayFab をプラグイン リストに追加します。
- ユーザーは、配送されていないプラットフォームを削除することができます。
- UE5 では XboxOneGDK が廃止されるため、UE4 を使用している場合は XB1 の代わりに XboxOneGDK を使用してください
{
"Name": "OnlineSubsystemPlayFab",
"Enabled": true,
"WhitelistPlatforms": [
"XB1",
"WinGDK",
"XSX",
"Win64",
"Switch",
"PS4",
"PS5"
],
"SupportedTargetPlatforms": [
"XB1",
"WinGDK",
"XSX",
"Win64",
"Switch",
"PS4",
"PS5"
]
}
- .uproject ファイルを右クリックし、上記の Unreal Engine コード パスに [Unreal Engine バージョンの切り替え] を選択して、ゲーム ソリューション ファイルを生成します。
ゲームの構成
- 対象のプラットフォームに関係なく、ゲームでは、目的のプラットフォーム ターゲットの INI ファイル ([yourGameDirectory]/Platforms/[yourPlatform]/Config にあります) で特定の PlayFab 固有の値を構成する必要があります。
- Xbox Series X GDK: XSXEngine.ini
- PC GDK: WinGDKEngine.ini
- Xbox One GDK: XB1Engine.ini (UE4 を使用している場合は XboxOneGDKEngine.ini)
- PC Steam: WindowsEngine.ini (または [yourGameDirectory]/Config/Windows で見つけます)
- Nintendo Switch SwitchEngine.ini
- PS4™ PS4Engine.ini
- PS5™ PS5Engine.ini
- 構成内の INI セクション (Engine.GameEngine など) が既に存在する場合は、次のセクションに示されているセクションに置き換えます。
- すべての <REPLACE ME> フィールドを自分のデータに置き換えてください。
[OnlineSubsystemPlayFab]
bEnabled=true
PlayFabTitleID=<REPLACE ME with your PlayFab title ID>
MaxDeviceCount=<REPLACE ME with your max player count (note: split screen is still 1 device). In the example of an 8 player game, this would be 8.>
MaxDevicesPerUserCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device) In the example of an 8 player game, this would be 1.>
MaxEndpointsPerDeviceCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device) In the example of an 8 player game, this would be 1.>
MaxUserCount=<REPLACE ME with your max player count (note: split screen is still 1 device) In the example of an 8 player game, this would be 8.>
MaxUsersPerDeviceCount=<REPLACE ME with your max player count per box (note: split screen is still 1 device) In the example of an 8 player game, this would be 1.>
DirectPeerConnectivityOptions=<REPLACE ME with your connectivity options, in the form of an array of strings. The default case corresponds to the following:
+DirectPeerConnectivityOptions=AnyPlatformType
+DirectPeerConnectivityOptions=AnyEntityLoginProvider.
If you want to disable P2P and use cloud relay instead, set DirectPeerConnectivityOptions=None>
bHasPlayFabVoiceEnabled=<REPLACE ME with true/false>
[/Script/OnlineSubsystemPlayFab.PlayFabNetDriver]
NetConnectionClassName="OnlineSubsystemPlayFab.PlayFabNetConnection"
ReplicationDriverClassName="<REPLACE ME with your existing replication driver class name>" . Skip if the game doesn't have a replication driver class (https://docs.unrealengine.com/5.2/en-US/replication-graph-in-unreal-engine/).
ConnectionTimeout=15.0
InitialConnectTimeout=30.0
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemPlayFab.PlayFabNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
プラットフォーム固有の考慮事項
これでほぼ完了です。 設定する必要がある主要なプラットフォーム固有のパラメーターは残りわずかです。
GDK
GDK を使用してゲームを開発する場合は、プラットフォーム サービスを定義します:
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=GDK
Steam
Steam を使用して Win64 用のゲームを開発する場合は、プラットフォーム サービスを定義します:
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=Steam
Switch
Switch の詳細については、Switch PlayFab OSS に付属する ReadMe.md ファイルを参照してください。 アクセス権がない場合は、プライベート リポジトリへのアクセスをリクエストできます。
PS5™ と PS4™
PS5™ と PS4™ の詳細については、PS5™ および PS4™ PlayFab OSS に付属する ReadMe.md ファイルを参照してください。 アクセス権がない場合は、プライベート リポジトリへのアクセスをリクエストできます。
クロス プラットフォーム
最後に、ゲームで PlayFab のクロスプラットフォーム ネットワーク サポートを使用する場合は、接続を許可するプラットフォームを定義します:
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
!CompatibleUniqueNetIdTypes=ClearArray
+CompatibleUniqueNetIdTypes=STEAM
+CompatibleUniqueNetIdTypes=GDK
+CompatibleUniqueNetIdTypes=SWITCH
+CompatibleUniqueNetIdTypes=PS4
+CompatibleUniqueNetIdTypes=PS5
既定では、すべてのプラットフォームで VoIP が許可されます。 特定のプラットフォームの VoIP を無効にするには、次の例のように、プラットフォーム モデル名を UE 構成ファイルに追加します。
[OnlineSubsystemPlayFabVoiceChatDisabledPlatforms]
!Platforms=ClearArray
+Platforms=WIN64
+Platforms=STEAM
+Platforms=SWITCH
+Platforms=PS4
+Platforms=PS5
これらの手順で、ゲームで使用するために必要な OSS のセットアップが完了します。 幸運をお祈りします!
ゲーム コードで使用する
注意
PlayFab オンライン サブシステムでは、NAME_GameSession
としてゲーム セッションの名前付けのみがサポートされます
他のオンライン サブシステム プラグインの使用と同様です。
Game.Build.cs に PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });
を追加し、他のゲーム プラグインと同じように使用します。
GameSession.cpp のコード例:
#include "OnlineSubsystem.h"
#include "OnlineSubsystemUtils.h"
...
bool Game::JoinSession(const FUniqueNetIdPtr UserId, FName SessionName, const FOnlineSessionSearchResult& SearchResult)
{
IOnlineSubsystem* OnlineSub = Online::GetSubsystem(GetWorld()); // Using OnlineSubsystemPlayFab plugin
if (OnlineSub)
{
IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface(); // Using OnlineSessionInterfacePlayFab.h
if (Sessions.IsValid() && UserId.IsValid())
{
// ...
}
}
// ...
}
GameFriends.cpp のコード例:
#include "OnlineSubsystem.h"
#include "OnlineSubsystemUtils.h"
...
void Game::ViewFriendProfile()
{
IOnlineSubsystem* OnlineSub = Online::GetSubsystem(GetWorld()); // Using OnlineSubsystemPlayFab plugin
if (OnlineSub)
{
IOnlineIdentityPtr Identity = OnlineSub->GetIdentityInterface(); // Using OnlineIdentityInterfacePlayFab.h
if (Identity.IsValid() && Friends.IsValidIndex(FriendIndex))
{
// ....
}
}
}
トラブルシューティング:
問題のトラブルシューティングに役立つ方法。
Unreal Engine のインストール済みビルド
GDK ビルド フレーバーで OnlineSubsystemPlayFab を使用して Unreal Engine のインストール済みビルドを作成しようとすると、問題が発生する可能性があります。 より完全な解決策が見つかるまで、この問題をうまく解決するための次のガイダンスを提供します。
UE5.4 を使用している場合:
次のランタイム エラーが発生する可能性があります:
Runtime dependency Party.dll is configured to be staged from C:\Program Files (x86)\Microsoft GDK\<version>\Party.dll and \Engine\Plugins\Online\OnlineSubsystemPlayFab\Platforms\GDK\Redist\Party.dll
Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\ に移動します
OnlineSubsystemGDK.uplugin を開き、
PlayFabParty
を無効に設定します。{ "Name": "PlayFabParty", "Enabled": false }
Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\Source\ に移動します
OnlineSubsystemGDK.Build.cs を開き、
PlayFabParty
のインクルードをコメント アウトします。if (Target.bCompileAgainstEngine) { //PublicDependencyModuleNames.Add("PlayFabParty"); }
UE5.0 から 5.3 を使用している場合:
- Unreal Engine がマシンにインストールされているディレクトリを見つけます。
- Engine\Platforms\GDK\Plugins\Online\PlayFabParty に移動します
- PlayFabParty.uplugin を開き、PlatformDenyList を使用してモジュール構成を更新します。
"Modules": [ { "Name": "PlayFabParty", "Type": "Runtime", "LoadingPhase": "Default", "HasExplicitPlatforms": true, "PlatformDenyList": [ "WinGDK", "Win64" ] } ],
- インストールされたビルドにこれらのプラットフォームが必要な場合は、XB1 (PlayFabParty_XB1.uplugin) および XSX (PlayFabParty_XSX.uplugin) に対して上記のプロセスを繰り返します。 インストールされたビルドに Win64 も必須のプラットフォームである場合は、PlatformDenyList の配列に Win64 を追加します。
UE4.27 以降を使用している場合は、
Unreal Engine がマシンにインストールされているディレクトリを見つけます。
Engine\Platforms\GDK\Plugins\Online\PlayFabParty に移動します
PlayFabParty.uplugin を開く
WhitelistPlatforms キーを BlacklistPlatforms に置き換えます
インストール済みビルドにこれらのプラットフォームが必要な場合は、XboxOneGDK (PlayFabParty_XboxOneGDK.uplugin) と XSX (PlayFabParty_XSX.uplugin) のプロセスを繰り返します。 インストールされたビルドに Win64 も必要なプラットフォームである場合は、 BlacklistPlatforms の配列に Win64 を追加します。
UE4.27 以降の PlayFabParty.uplugin でのモジュール構成の例::
"Modules": [
{
"Name": "PlayFabParty",
"Type": "Runtime",
"LoadingPhase": "Default",
"BlacklistPlatforms": ["WinGDK", "Win64"]
}
],
Steam でのハンドシェイク エラー
ハンドシェイク エラー (LogHandshake: IncomingConnectionless: Error reading handshake packet
など) が発生した場合は、この UE フォーラムの投稿を参照して設定を確認してください。
OnlineSubsystemPlayFab のワークフロー
[プラットフォーム固有の考慮事項] セクションで説明されている手順では、次の項目を含める必要があります。
[OnlineSubsystem]
DefaultPlatformService=PlayFab
UE OnlineSubsystemModule は PlayFab のオンライン サブシステム インスタンスを作成するため、PlayFabSingleton の作成を開始します。 この時点で、SDK は FOnlineSubsystemPlayFab::Init()
で初期化されます。ここで、PlayFab TitleID を使用してパーティ SDK とマルチプレイヤー SDK の両方が初期化されます (この titleID は、ゲーム構成ファイル内で定義されています)。 初期化中に、メインのオンライン サブシステムとして CreatePlayFabSocketSubsystem()
を行います。
マルチプレイヤー SDK のワークフロー: FOnlineSubsystemPlayFab::Init()
は、タイトルの InitializeMultiplayer()
マルチプレイヤー SDK シングルトンを初期化します。
PlayFabLobby.cpp
では、FPlayFabLobby::DoWork()
はマルチプレイヤー API によってトリガーされる状態の変化を処理します (API については Platforms/GDK/Include/PFLobby.h
を参照)。
パーティー SDK のワークフロー: FOnlineSubsystemPlayFab::Init()
は、タイトルの InitializeParty()
マルチプレイヤー SDK シングルトンを初期化します。
OnlineSubsystemPlayFab.cpp
では、FOnlineSubsystemPlayFab::DoWork()
はパーティー API によってトリガーされる状態の変化を処理します (API については Platforms/GDK/Include/Party.h
を参照)。
"PlayStation" は、Sony Interactive Entertainment Inc. の登録商標または商標です。
"PS4" は、Sony Interactive Entertainment Inc. の登録商標または商標です。
"PS5" は、Sony Interactive Entertainment Inc. の登録商標または商標です。