クイックスタート: 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

初期セットアップ

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>
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 を使用してゲームを開発する場合は、プラットフォーム サービスを定義し、必要に応じて GDK サンドボックスを設定します。

[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=GDK

[OnlineSubsystemPlayFab]
Sandbox=<Optional, REPLACE ME with the sandbox Id used for the title under development >

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 のセットアップが完了します。 幸運をお祈りします!

ゲーム コードで使用する

他のオンライン サブシステム プラグインの使用と同様です。

Game.Build.csPublicDependencyModuleNames.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 のインストール済みビルドを作成しようとすると、問題が発生する可能性があります。 より完全な解決策が見つかるまで、この問題をうまく解決するための次のガイダンスを提供します。

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"]
		}
	],

UE5.0 ~ 5.2 を使用している場合:

  • 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 を追加します。

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. の登録商標または商標です。