> ## 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.

# ゲームサーバーの割り当てと Visual Studio デバッガーの接続

> RequestMultiplayerServer を使用して PlayFab マルチプレイヤー ゲームサーバーを割り当て、実行中のセッションに Visual Studio デバッグ ツールをアタッチする方法について学びます。

## マルチプレイヤー セッションの割り当て

PlayFab マルチプレイヤー サーバー 2.0 では、[RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) API を使用してマルチプレイヤー サーバー アプリケーションのインスタンスを割り当てることができます。

通常、この API は、特定のタイトル用に構成された PlayFab Developer Secret Key を使用して、自身のサービス（マッチメイキング サービスやロビー サービスなど）から呼び出されます。シークレット キーの詳細については、「[Secret key management](/services/playfab/live-service-management/gamemanager/secret-key-management)」を参照してください。

プレイヤーを集めてサーバーを割り当てる典型的なパターン:

1. クライアントがネットワーク QoS 情報を収集します。
2. クライアントはカスタム マッチメイキング サービスと対話するか、ソーシャル招待で集まります。
3. カスタム マッチメイキング サービスは、優先順位付きリージョン リストを使用してグループにセッションを割り当てます。

**RequestMultiplayerServer** にはいくつかの重要なパラメーターがあります:

* **BuildID** - 割り当てる特定のサーバー ビルド。
* **SessionID** - セッションの識別子。*これは呼び出し元が生成する GUID 文字列です*。同じ論理セッションに対するこの API の再試行では、同じ識別子を再利用する必要があります。これにより、呼び出し元の再試行動作が不要なサーバーを作成する可能性が軽減されます。
* **SessionCookie** - アクティブ化時にゲーム サーバー SDK 経由で割り当てられたセッションに伝達される任意のデータです。このフィールドの典型的な使い方は、ゲーム サーバーがクライアントを認証するために使用する共有キーを伝達することです。*データは 4 キロバイト未満でなければなりません*。
* **PreferredRegions** - サーバーの割り当てに使用するリージョンの順序付きリスト。リージョンをランク付けするための主要な要因として、クライアント デバイスから収集したネットワーク QoS 測定値を使用することをお勧めします。

割り当てに成功すると、次の情報が返されます:

* サーバーの **IPv4** アドレス。
* **TCP/UDP** ポート マッピング（「[Connecting Clients to game servers](/services/playfab/multiplayer/servers/connecting-clients-to-game-servers)」を参照）。
* サーバーの **Region**。

<Note>
  ゲーム開発中にゲーム サーバーを簡単に割り当てる方法として、MpsAllocatorSample（[こちら](https://github.com/PlayFab/MpsSamples/tree/master/MpsAllocatorSample)で入手可能）を使用できます。
</Note>

## クライアントによる割り当て

マルチプレイヤー サーバーは高価かつ強力です。デフォルトでは、PlayFab Developer Secret Key を使用して、*自身の*信頼できるサービスからのみマルチプレイヤー サーバーを要求できます。

しかし、プレイヤー デバイスから*直接*サーバーを割り当てることで、サービス間呼び出しを実装するコストを節約でき、状況によっては便利な場合があります。

クライアントによる割り当てを有効にするには:

* 左側のメニューから **Settings** を選択します。
* **API Features** タブを選択します。
* 次に **Allow Client to start games** オプションを有効にします。

<img src="https://mintcdn.com/microsoft-4404708b/U1LR64ZWxo45eXwl/images/playfab/multiplayer/servers/tutorials/game-manager-settings-api-features-allow-client-to-start-games.png?fit=max&auto=format&n=U1LR64ZWxo45eXwl&q=85&s=3096df2ab104fcd3bed5015146b33436" alt="Game Manager - Settings - API Features - Allow Client to start games" width="1133" height="1200" data-path="images/playfab/multiplayer/servers/tutorials/game-manager-settings-api-features-allow-client-to-start-games.png" />

この設定が有効になると、タイトルに関連付けられている任意のプレイヤーのエンティティ トークンを使用して [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) を呼び出すことができます。

## デプロイされたマルチプレイヤー サーバーのデバッグ

Azure にデプロイされたゲーム サーバーをリモートでデバッグしたい場合があります。Visual Studio では、現在、コンテナー内に Visual Studio Remote Debugging ツールをインストールして構成する必要があります。

<Note>
  以下の手順は、安全でない、認証されていないデバッグを可能にします。
</Note>

以下の手順は、開発およびテスト用のサーバー ビルドに*のみ*適用してください。プレイヤーに公開する環境では*一般的に避けてください*。

1. VS2017 Remote Debugging ツールを取得します:

```cmd theme={null}
Invoke-WebRequest -OutFile rtools_setup_x64.exe -Uri
https://aka.ms/vs/15/release/RemoteTools.amd64ret.enu.exe
```

2. これらのツールをゲーム サーバー アセット パッケージに含めます。
3. Game Manager または Entity API でサーバー ビルドを作成する際、ポート 4022 TCP をデバッグ ポートとして構成します。
4. リモート デバッグを有効にするために、コンテナー内で `msvsmon` を実行する必要があります。一般的なパターンは、Game Start コマンドとして CMD スクリプトを指定し、コマンドライン引数を使用してゲーム サーバー実行ファイルに加えて `msvsmon` を起動することです。
5. `msvsmon` を次のパラメーターで一度実行します:

```cmd theme={null}
/prepcomputer /quiet
```

6. 次のフラグを付けて `msvsmon` を実行します（以下を参照）。

```cmd theme={null}
/nostatus /noauth /nosecuritywarn /anyuser /nofirewallwarn /nodiscovery /port 4022
```

<Note>
  空いていないランダムなポートにバインドされるのではなく、ポートが既に使用されている場合にプロセスの終了コードを処理できるようにするために、ポートを*明示的にリストする*ことをお勧めします。
</Note>

7. ゲーム サーバーを割り当てます。
8. 割り当て呼び出しから返された外部デバッグ ポートを使用して、VS 経由でデバッグを試みます。


## Related topics

- [LocalMultiplayerAgent を使用したプロセスベースのゲームサーバーのデバッグ](/ja-jp/services/playfab/multiplayer/servers/LocalMultiplayerAgent/run-process-based-gameserver.md)
- [ゲーム サーバーをデバッグするための直接接続](/ja-jp/services/playfab/multiplayer/servers/directly-debugging-game-servers.md)
- [ゲーム サーバーのローカル デバッグと PlayFab との統合](/ja-jp/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab.md)
- [ゲーム サーバーへのクライアントの接続](/ja-jp/services/playfab/multiplayer/servers/connecting-clients-to-game-servers.md)
- [GSDK プロジェクトのテストとデバッグ](/ja-jp/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
