> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab Online Subsystem (OSS) Quickstart

> Multiplayer SDK を使用した Party ボイス チャット、ロビー、およびマッチメイキングのセットアップを含む、Unreal Engine 用 PlayFab Online Subsystem のクイックスタート。

# クイックスタート: PlayFab Online Subsystem

この記事は、Unreal Engine 4 または Unreal Engine 5 で構築されたゲーム用の Lobby、Matchmaking、Party などの PlayFab マルチプレイヤー機能をセットアップして使用するのに役立ちます。Unreal Engine 4 または Unreal Engine 5 でサポートされているプラットフォームとバージョンの完全な一覧については、[サポートされているプラットフォーム](/services/playfab/multiplayer/networking/party-unreal-engine-oss-overview) を参照してください。

このページで対象プラットフォームに関する関連手順に従うと、PlayFab Online Subsystem (PF OSS) の使用を開始する準備が整います。認証、ネットワーキング、VOIP、ロビーへのグループ化、およびマッチメイキングは、他の変更を必要とせずにお客様に代わって処理されます。

## PlayFab Online Subsystem のダウンロードとインストール

[PlayFab Online Subsystem](https://github.com/PlayFab/PlayFabMultiplayerUnreal) にアクセスして、PF OSS ソースをダウンロードまたはクローンします。ダウンロードまたはクローンしたリポジトリ名は PlayFabMultiplayerUnreal です。このリポジトリの名前を OnlineSubsystemPlayFab に変更する必要があります。

## 必要なもの

* **PlayFab TitleID:** PlayFab Party および Multiplayer ソフトウェア開発キット (SDK) 用の TitleID を構成していない場合は、[PlayFab Party の有効化](/services/playfab/multiplayer/networking/enable-party) を参照してください。

### Microsoft Game Development Kit (GDK)、PC、Switch、PlayStation®5、および PlayStation®4

* **特定のプラットフォームの PlayFab Party、Lobby、Matchmaking ライブラリ:** [PlayFab Party および Multiplayer ライブラリの取得](/services/playfab/multiplayer/networking/party-unreal-engine-oss-obtaining-playfab-party-libraries) を参照してください。

## 初期セットアップ

### Unreal Engine コード ベース

* OnlineSubsystemPlayFab フォルダーとその内容を Unreal Engine ディレクトリの **Engine\Plugins\Online** の下にコピーします。
* `GenerateProjectFiles.bat` を実行してエンジンのプロジェクト ファイルを作成します。
* 新しい `UE5.sln` ファイルを選択してプロジェクトを Visual Studio に読み込みます。
* ソリューション構成を **Development Editor** に、ソリューション プラットフォームを **Win64** に設定します。**Unreal Engine 5** ターゲットを選択してから、**Build** を選択します。

### ゲーム コード ベース

* プラグイン リストに OnlineSubsystemPlayFab を追加するには、プロジェクト ファイルの Plugins セクションに次の変更を適用します。
  * 出荷しないプラットフォームは削除します
  * Unreal Engine 4 を使用している場合は XB1 の代わりに XboxOneGDK を使用します。Unreal Engine 5 では XboxOneGDK は非推奨です

```json theme={null}
{
    "Name": "OnlineSubsystemPlayFab",
    "Enabled": true,
    "PlatformAllowList": [
    "XB1",
    "WinGDK",
    "XSX",
    "Win64",
    "Switch",
    "PS4",
    "PS5"
    ],
    "SupportedTargetPlatforms": [
    "XB1",
    "WinGDK",
    "XSX",
    "Win64",
    "Switch",
    "PS4",
    "PS5"
    ]
}
```

* `{ProjectName}.uproject` ファイルを選択してから、**Switch Unreal Engine Version** を Unreal Engine コード パスに選択して、ゲーム ソリューション ファイルを生成します。

## ゲームの構成

* どのプラットフォームを対象としていても、ゲームは対象プラットフォームの INI ファイル (\[yourGameDirectory]/Platforms/\[yourPlatform]/Config にあります) で特定の PlayFab 固有の値を構成する必要があります。
  * **XBOX Series X GDK:** XSXEngine.ini
  * **PC GDK:** WinGDKEngine.ini
  * **XBOX One GDK:** XB1Engine.ini (Unreal Engine 4 を使用している場合は XboxOneGDKEngine.ini)
  * **PC Steam:** WindowsEngine.ini (\[yourGameDirectory]/Config/Windows にもあります)
  * **Nintendo Switch:** SwitchEngine.ini
  * **PS4™:** PS4Engine.ini
  * **PS5™:** PS5Engine.ini
* 構成の INI セクションが既に存在する場合 (例: Engine.GameEngine) は、次のセクションに示されているものに置き換えます。
* すべての *\<REPLACE ME>* フィールドをデータで置き換えるようにしてください:
* UE 5.6 以降では、`DriverClassName` パラメーターに「/Script/」プレフィックスが必要です。たとえば、`"OnlineSubsystemPlayFab.PlayFabNetDriver"` の代わりに `"/Script/OnlineSubsystemPlayFab.PlayFabNetDriver"` を使用します。

```ini theme={null}
[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="/Script/OnlineSubsystemPlayFab.PlayFabNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
```

## プラットフォーム固有の考慮事項

これらすべてが完了したら、ほとんど終わりです。設定する必要のあるプラットフォーム固有のキー パラメーターがいくつかあります。

### GDK

GDK でゲームを開発する場合は、プラットフォーム サービスをセットアップします。

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=GDK
```

### Steam

Steam を使用して Win64 用のゲームを開発する場合は、プラットフォーム サービスを定義します。

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
NativePlatformService=Steam
```

### Switch

Switch の詳細については、Switch PlayFab OSS に付属している [ReadMe.md](https://dev.azure.com/PlayFabPrivate/Switch/_git/PlayFabMultiplayerUnrealSwitch?path=/README.md) ファイルを参照してください。アクセス権がない場合は、プライベート リポジトリへの[アクセスをリクエスト](/services/playfab/sdks/request-access-for-sdks-samples) できます。

### PS5™ および PS4™

PS5™ および PS4™ の詳細については、PS5™ および PS4™ PlayFab OSS に付属している [ReadMe.md](https://dev.azure.com/PlayFabPrivate/PS5/_git/PlayFabMultiplayerUnrealPlayStation?path=/README.md) ファイルを参照してください。アクセス権がない場合は、プライベート リポジトリへの[アクセスをリクエスト](/services/playfab/sdks/request-access-for-sdks-samples) できます。

### クロスプラットフォーム

ゲームが PlayFab のクロスプラットフォーム ネットワーキング サポートを使用する場合は、接続を許可するプラットフォームを定義します。

```ini theme={null}
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
!CompatibleUniqueNetIdTypes=ClearArray
+CompatibleUniqueNetIdTypes=STEAM
+CompatibleUniqueNetIdTypes=GDK
+CompatibleUniqueNetIdTypes=SWITCH
+CompatibleUniqueNetIdTypes=PS4
+CompatibleUniqueNetIdTypes=PS5
```

すべてのプラットフォームは既定で VoIP を許可します。特定のプラットフォームで VoIP を無効にするには、次の例に示すように、プラットフォーム モデル名を Unreal Engine 構成ファイルに追加します。

```ini theme={null}
[OnlineSubsystemPlayFabVoiceChatDisabledPlatforms]
!Platforms=ClearArray
+Platforms=WIN64
+Platforms=STEAM
+Platforms=SWITCH
+Platforms=PS4
+Platforms=PS5
```

これらの手順により、ゲームで使用するために必要な OSS のセットアップが完了します。

## ゲーム コードでの使用

<Note>
  PlayFab Online Subsystem は、Game Session の名前として `NAME_GameSession` のみをサポートします
</Note>

他の Online Subsystem プラグインの使用と同様です:

Game.Build.cs に `PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });` を追加してから、他のゲーム プラグインと同じ方法で使用します。

GameSession.cpp のコード例:

```cpp theme={null}
#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 のコード例:

```cpp theme={null}
#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 Installed Builds

ユーザーは、GDK ビルド フレーバー上で OnlineSubsystemPlayFab を使用して Unreal Engine Installed Build を作成しようとするときに問題に直面する可能性があります。より完全な解決策が提供されるまで、この問題を正常に克服するための以下のガイダンスを提供します。

**Unreal Engine 5.4、5.5、5.6、または 5.7 を使用している場合:**

* 次のランタイム エラーが発生する可能性があります: `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` を無効に設定します:

```json theme={null}
{
    "Name": "PlayFabParty",
    "Enabled": false
}
```

* Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\Source\ に移動します
* OnlineSubsystemGDK.Build.cs を開き、`PlayFabParty` のインクルージョンをコメント アウトします:

```csharp theme={null}
if (Target.bCompileAgainstEngine)
{
    //PublicDependencyModuleNames.Add("PlayFabParty");
}
```

**Unreal Engine 5.0 - 5.3 を使用している場合:**

* マシン上で Unreal Engine がインストールされているディレクトリを特定します。
* Engine\Platforms\GDK\Plugins\Online\PlayFabParty に移動します
* PlayFabParty.uplugin を開き、**PlatformDenyList** で Modules 構成を更新します:

```ini theme={null}
"Modules": [
        {
            "Name": "PlayFabParty",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "HasExplicitPlatforms": true,
            "PlatformDenyList": [ "WinGDK", "Win64" ]
        }
    ],
```

* Installed Build にこれらのプラットフォームが必要な場合は、XB1 (PlayFabParty\_XB1.uplugin) と XSX (PlayFabParty\_XSX.uplugin) についてもこのプロセスを繰り返します。Installed Build に Win64 も必要なプラットフォームである場合は、**PlatformDenyList** の配列に Win64 を追加します。

**Unreal Engine 4.27+ を使用している場合:**

* マシン上で Unreal Engine がインストールされているディレクトリを特定します。
* Engine\Platforms\GDK\Plugins\Online\PlayFabParty に移動します
* PlayFabParty.uplugin を開きます
* キー **WhitelistPlatforms** を **BlacklistPlatforms** に置き換えます
* Installed Build にこれらのプラットフォームが必要な場合は、XboxOneGDK (PlayFabParty\_XboxOneGDK.uplugin) と XSX (PlayFabParty\_XSX.uplugin) についてもこのプロセスを繰り返します。Installed Build に Win64 も必要なプラットフォームである場合は、**BlacklistPlatforms** の配列に Win64 を追加します。

Unreal Engine 4.27+ での PlayFabParty.uplugin の Modules 構成例:

```ini theme={null}
"Modules": [
       {
            "Name": "PlayFabParty",
            "Type": "Runtime",
            "LoadingPhase": "Default",
            "BlacklistPlatforms": ["WinGDK", "Win64"]
        }
    ],
```

### Steam でのハンドシェイク失敗

ハンドシェイクの失敗が発生している場合 (例: `LogHandshake: IncomingConnectionless: Error reading handshake packet`)、設定を確認するためにこの [Unreal Engine フォーラムの投稿](https://forums.unrealengine.com/t/ue-5-1-steam-sockets-problem/696726) を参照してください。

## OnlineSubsystemPlayFab のワークフロー

[プラットフォーム固有の考慮事項](#platform-specific-considerations) セクションで説明されている手順では、次のものを含めるように求められます:

```ini theme={null}
[OnlineSubsystem]
DefaultPlatformService=PlayFab
```

Unreal Engine OnlineSubsystemModule は PlayFab 用のオンライン サブシステム インスタンスを作成し、PlayFabSingleton の作成を開始します。この時点で、SDK は `FOnlineSubsystemPlayFab::Init()` で初期化されます。ここでは、Party と Multiplayer SDK の両方が PlayFab TitleID で初期化されます (この titleID は [ゲームの構成](#game-configuration) ファイル内で定義されます)。初期化中、メイン オンライン サブシステムとして `⁠CreatePlayFabSocketSubsystem()` を使用します。

Multiplayer SDK のワークフロー: `FOnlineSubsystemPlayFab::Init()` はタイトルに対して `InitializeMultiplayer()` マルチプレイヤー SDK シングルトンを初期化します。`PlayFabLobby.cpp` では、`FPlayFabLobby::DoWork()` が Multiplayer API によってトリガーされる状態変更を処理します (API については `Platforms/GDK/Include/PFLobby.h` を参照してください)。

Party SDK のワークフロー: `FOnlineSubsystemPlayFab::Init()` はタイトルに対して `InitializeParty()` マルチプレイヤー SDK シングルトンを初期化します。`OnlineSubsystemPlayFab.cpp` では、`FOnlineSubsystemPlayFab::DoWork()` が Party API によってトリガーされる状態変更を処理します (API については `Platforms/GDK/Include/Party.h` を参照してください)。

「PlayStation」は Sony Interactive Entertainment Inc. の登録商標または商標です。

「PS4」は Sony Interactive Entertainment Inc. の登録商標または商標です。

「PS5」は Sony Interactive Entertainment Inc. の登録商標または商標です。


## Related topics

- [PlayFab Online Subsystem (OSS)](/ja-jp/services/playfab/multiplayer/networking/party-unreal-engine-oss-overview.md)
- [PlayFab Online Subsystem (OSS) Dedicated Server Setup](/ja-jp/services/playfab/multiplayer/networking/party-unreal-engine-oss-dedicated-servers.md)
- [PlayFab OnlineSubsystem for Unreal Engine リリースノート](/ja-jp/services/playfab/multiplayer/networking/unreal-release-notes.md)
- [PlayFab for Unreal Engine の概要](/ja-jp/services/playfab/sdks/unified-unreal/overview.md)
- [Integrate the PlayFab Unreal Engine Marketplace plugin](/ja-jp/services/playfab/multiplayer/networking/party-unreal-engine-oss-playfab-plugin-integration.md)
