次の方法で共有


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

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

マルチプレイヤー セッション テンプレートは、マルチプレイヤー セッションを作成するための設計図です。 すべてのセッションは、定義済みのテンプレートを基にして作成される必要があります。

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

詳細については、「マルチプレイヤー セッションの高度なトピック」の「セッションの概要」セクションを参照してください。

サービス構成 ID (SCID) に適用されるセッション テンプレートの一覧および特定のセッション テンプレートの内容は、マルチプレイヤー セッション ディレクトリ (MPSD) から取得できます。

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

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

任意のセッション定数を定義することができます。これには、カスタム セクションとすべてのシステム定数が含まれます。

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

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

Xbox サービス API (XSAPI) を使用して、デバッガーで要求の結果を監視する場合は、要求がテンプレート コントラクト バージョン 105 を使用しているという通知が発生することがあります。 MPSD は実行時にこれらの要求のバージョンを 107 に事実上 "アップグレード" します。

注意

セッション テンプレートにあるものとは異なるコントラクト バージョンをリクエストで使用することができます。

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

このトピックの先頭に戻る。

セッション テンプレートの既定値

セッション テンプレートから作成される各セッションは、テンプレートのコピーが出発点となります。 テンプレートで指定されていない値は、セッションの作成時に指定することができます。 他の値が設定されない場合の既定値が提供されていることがあります。

コントラクト バージョン 107 のタイムアウトの既定のセットを以下の例に示します。

    {
      "constants": {
        "system": {
          "reservedRemovalTimeout": 30000,
          "inactiveRemovalTimeout": 0,
          "readyRemovalTimeout": 180000,
          "sessionEmptyTimeout": 0
        }
      }
    }

値を未設定のままにしておく場合は、null を指定します。 これにより、既定の設定は無効になり、セッションの作成時に値を設定できなくなります。

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

    {
      "constants": {
        "system": {
          "sessionEmptyTimeout": null
        }
      }
    }

Important

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

このトピックの先頭に戻る。

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

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

標準的なロビー セッション

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

  • maxMembersCount の値を、ロビー セッションでサポートするプレイヤーの最大数に変更します。
  • タイトルで、別のプラットフォーム (Xbox 本体や Windows PC など) を使用するプレイヤーとのプレイをサポートしない場合は、crossPlay 要素を削除できます。
  • 他の値も変更可能です。 何が必要かはっきりしない場合は、次の値が開始時の適切な値です。
{
   "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
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "inviteProtocol": "game",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "gameplay" : true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            }
        },
        "custom": {}
    }
}

ゲーム セッション テンプレートにマッチメイキングを追加し、サービス品質 (QoS) のチェックはマルチプレイヤー サービスで処理する

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

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

{
   "constants": {
        "system": {
            "memberInitialization": {
               "joinTimeout": 20000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        }
    }
}

ゲーム セッションにマッチメイキングを追加し、サービス品質のチェックはタイトルが管理するデータ センターで処理する

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

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

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

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

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

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

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

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 10,
          "visibility": "open",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
          },
          "memberInitialization": {
            "membersNeededToStart": 1
          },
        },
        "custom": {}
      }
    }

このトピックの先頭に戻る。

QoS テンプレート

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

クライアント/サーバー ゲームでは、調整は、プレイヤーのグループがマッチメイキングに参加する前に、接続品質を検証します。

QoS のあるピア ツー ホスト ゲーム セッション テンプレート

次のテンプレートを使用して、QoS を考慮したピア ツー ホスト ゲームのセッションを作成します。

    {
      "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 を考慮したピア ツー ピア ゲームのセッションを作成します。

    {
    "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 を使用するロビー セッションまたはマッチメイキング セッションを作成します。 このテンプレートは、ゲーム セッションの構成に使用するものではありません。

    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "memberInitialization": {
            "membersNeededToStart": 1
          }
        },
        "custom": {}
      }
    }

Xbox One と Windows 10 間でのプレイ用セッション テンプレート

次のテンプレートを使用して、Xbox One 以降と Windows 10 間でのクロスプレイでマルチプレイヤーを有効にします。

  • オプションの crossPlay 機能は、プラットフォーム間の招待や途中参加などの操作をサポートします。

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

    {
      "constants": {
        "system": {
          "capabilities": {
            "crossPlay": true,
            "userAuthorizationStyle": true
          },
        },
        "custom": {}
      }
    }