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

# マルチプレイヤーセッションテンプレート

> MPSD セッションテンプレートがマルチプレイヤーセッションを作成するための青写真としてどのように機能するかを学びます。テンプレートのバージョンや、コピーして変更できる例を含みます。

<a id="top" />

このトピックでは、マルチプレイヤーセッションテンプレートについて説明し、マルチプレイヤーセッション用にコピーして変更できるテンプレートの例を提供します。

マルチプレイヤーセッションテンプレートは、マルチプレイヤーセッションを作成するための青写真です。
すべてのセッションは、事前定義されたテンプレートに基づいて作成する必要があります。

テンプレートは、そのテンプレートから作成されるすべてのセッションで同一となる定数を定義します。
テンプレートからセッションを作成する場合、セッションに追加データを追加および変更できます。ただし、テンプレートで定義されている定数を変更することはできません。

詳細については、[Multiplayer session advanced topics](/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-overview) の Session overview セクションを参照してください。

service configuration identifier (SCID) に適用されるセッションテンプレートのリストと、特定のセッションテンプレートの内容を Multiplayer Session Directory (MPSD) から取得できます。

## セッションテンプレートについて

セッションを作成または変更するためのセッションテンプレートは、HTTP `PUT` 要求と同じ形式を使用します。
違いは、テンプレートは定数のみを定義することです。メンバー、サーバー、およびプロパティは定義されません。

カスタムセクションおよびシステム定数の全範囲を含む、任意のセッション定数を定義できます。

### セッションテンプレートのバージョン

このトピックで定義されているセッションテンプレートは、テンプレートコントラクトバージョン 107 を使用して構築されています。
これらを新しいテンプレートの作成に使用する場合は、コントラクトバージョンを 107 として指定してください。

XBOX Services API (XSAPI) を使用しており、デバッガーで結果として得られる要求を確認する場合、要求がテンプレートコントラクトバージョン 105 を使用していることに気付くかもしれません。
MPSD は、実行時にこれらの要求を実質的にバージョン 107 に「アップグレード」します。

<Note>要求ではセッションテンプレートのコントラクトバージョンと異なるコントラクトバージョンを使用できます。</Note>

必要に応じて、セッションテンプレートをバージョン 104 または 105 からバージョン 107 に変更できます。

[このトピックの先頭に戻る。](#top)

## セッションテンプレートのデフォルト値

セッションテンプレートから作成された各セッションは、テンプレートのコピーとして開始されます。
テンプレートで指定されていない値は、セッション作成時に指定できます。
他の値が設定されていない場合、デフォルト値が提供されることがあります。

コントラクトバージョン 107 のデフォルトのタイムアウトセットを次の例に示します。

```json theme={null}
    {
      "constants": {
        "system": {
          "reservedRemovalTimeout": 30000,
          "inactiveRemovalTimeout": 0,
          "readyRemovalTimeout": 180000,
          "sessionEmptyTimeout": 0
        }
      }
    }
```

`null` を指定することで、値が設定されないままにすることを強制できます。
これにより、デフォルト設定がオーバーライドされ、セッション作成時に値が設定されなくなります。

たとえば、`sessionEmptyTimeout` を削除して、空のセッションでも無期限に継続するようにするには、次の内容をセッションテンプレートに追加します。

```json theme={null}
    {
      "constants": {
        "system": {
          "sessionEmptyTimeout": null
        }
      }
    }
```

<Info>テンプレートを介して設定された定数は、MPSD への書き込みによって変更することはできません。値を変更するには、必要な変更を加えた新しいテンプレートを作成して送信する必要があります。</Info>

[このトピックの先頭に戻る。](#top)

## セッションテンプレートの例

このセクションでは、さまざまな目的とネットワークトポロジのセッションテンプレートの例を提供します。
適切なテンプレートに必要な変更を加えて、サービス構成に貼り付けることができます。

### 標準ロビーセッション

ゲームのロビーセッションを作成するには、このテンプレートを使用します。

* ロビーセッションでサポートしたいプレイヤーの最大数に `maxMembersCount` の値を変更します。
* タイトルが異なるプラットフォーム (XBOX コンソールと Windows PC など) のプレイヤーが一緒にプレイすることをサポートしていない場合は、`crossPlay` 要素を削除できます。
* 他の値も変更できます。何が必要か分からない場合、次の値は開始点として適しています。

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            },
        },
        "custom": {}
    }
}
```

### マッチメーキングなしの標準ゲームセッション

ゲームが匿名マッチメーキングを含まず、100 メンバーを超えない場合、このテンプレートを使用してゲームセッションを作成します。

このテンプレートは、標準ロビーセッションテンプレートで指定されている値に 2 つの新しい値のみを追加します。

* `constants.system.inviteProtocol : "game"`
* `constants.system.capabilities.gameplay : true`

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "inviteProtocol": "game",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "gameplay" : true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            }
        },
        "custom": {}
    }
}
```

### Multiplayer サービスによって QoS チェックが処理されるゲームセッションテンプレートへのマッチメーキングの追加

ゲームでマッチメーキングを有効にするには、ゲームセッションテンプレートの `memberInitialization` に値を指定します。

SmartMatch ホッパーを作成する際に、次のテンプレートをホッパーのターゲットセッションテンプレートとして使用します。

```json theme={null}
{
   "constants": {
        "system": {
            "memberInitialization": {
               "joinTimeout": 20000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        }
    }
}
```

### タイトル管理のデータセンターによって QoS チェックが処理されるゲームセッションへのマッチメーキングの追加

```json theme={null}
{
   "constants": {
        "system": {
            "peerToHostRequirements": {  
                "latencyMaximum": 250,
                "bandwidthDownMinimum": 256,
                "bandwidthUpMinimum": 256,
                "hostSelectionMetric": "latency"
            },
            "memberInitialization": {
               "joinTimeout": 15000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        },
        "custom": {}
    }
}
```

### クライアント/サーバーゲームセッションの基本セッションテンプレート

ピアツーピア通信ではなく、サードパーティホストのサーバーにクライアントが接続するタイトルには、以下のテンプレートを使用します。

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
            "gameplay": true,
          },
        },
        "custom": {}
      }
    }
```

### ピアベースネットワーキング用のロビーまたは SmartMatch チケットセッションテンプレート

プレイヤーグループをマッチメーキングに送るためのロビーセッションまたは SmartMatch チケットセッションを作成するには、以下のテンプレートを使用します。

このテンプレートは、ピアツーピアまたはピアツーホストネットワークトポロジを使用しているクライアント用です。ゲームセッションは構成しません。

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 10,
          "visibility": "open",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
          },
          "memberInitialization": {
            "membersNeededToStart": 1
          },
        },
        "custom": {}
      }
    }
```

[このトピックの先頭に戻る。](#top)

### QoS テンプレート

ゲームがマッチメーキングを使用し、QoS を評価する場合、セッションに参加するユーザーを管理するためにクライアントと調整するよう MPSD に通知するために、セッションテンプレートにいくつかの定数を追加する必要があります。
この調整により、ゲームが開始できる状態になったことをユーザーに通知する前に、接続状態の品質が検証されます。

クライアント/サーバーゲームの場合、この調整により、プレイヤーグループがマッチメーキングに入る前に接続品質が検証されます。

#### QoS 付きのピアツーホストゲームセッションテンプレート

QoS 付きのピアツーホストゲームセッションを作成するには、以下のテンプレートを使用します。

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectivity": true,
            "connectionRequiredForActiveMembers": true,
            "gameplay" : true
          },
          "memberInitialization": {
            "membersNeededToStart": 2
          },
          "peerToHostRequirements": {
            "latencyMaximum": 350,
            "bandwidthDownMinimum": 1000,
            "bandwidthUpMinimum": 1000,
            "hostSelectionMetric": "latency"
          }
        },
        "custom": { }
      }
    }
```

#### QoS 付きのピアツーピアゲームセッションテンプレート

QoS 付きのピアツーピアゲームセッションを作成するには、以下のテンプレートを使用します。

```json theme={null}
    {
    "constants": {
      "system": {
        "version": 1,
        "maxMembersCount": 12,
        "visibility": "open",
        "inviteProtocol": "game",
        "capabilities": {
          "connectivity": true,
          "connectionRequiredForActiveMembers": true,
          "gameplay" : true
        },
        "memberInitialization": {
          "membersNeededToStart": 2
        },
        "peerToPeerRequirements": {
          "latencyMaximum": 250,
          "bandwidthMinimum": 10000
        }
      },
      "custom": { }
     }
    }
```

#### QoS 付きのクライアント/サーバーロビーまたはマッチメーキングセッションテンプレート

QoS を使用してロビーセッションまたはマッチメーキングセッションを作成するには、以下のテンプレートを使用します。
このテンプレートは、ゲームセッションの構成に使用しないでください。

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "memberInitialization": {
            "membersNeededToStart": 1
          }
        },
        "custom": {}
      }
    }
```

#### XBOX One と Windows 10 間のクロスプレイ用のセッションテンプレート

XBOX One (以降) と Windows 10 間のクロスプレイマルチプレイヤーを有効にするには、以下のテンプレートを使用します。

* オプションの `crossPlay` 機能は、プラットフォーム間の招待や参加中の参加などのインタラクションをサポートします。

* `userAuthorizationStyle` 機能により、Windows 10 へのアクセスが有効になります。

```json theme={null}
    {
      "constants": {
        "system": {
          "capabilities": {
            "crossPlay": true,
            "userAuthorizationStyle": true
          },
        },
        "custom": {}
      }
    }
```


## Related topics

- [セッションテンプレートの定数](/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-session-template-constants.md)
- [マルチプレイヤーの FAQ とトラブルシューティング](/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-multiplayer-2015-faq.md)
- [Multiplayer サービスの構成](/ja-jp/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
- [マルチプレイヤータスク](/ja-jp/services/xbox-services/multiplayer/mpsd/how-to/live-mpsd-how-tos.md)
- [マルチプレイヤー セッションの詳細トピック](/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)
