マルチプレイヤーの大規模なセッションを有効にする
このトピックでは、100 人を超えるメンバーを処理できるマルチプレイヤーの大規模なセッションを作成する方法について説明します。 このシナリオは、大規模マルチプレイヤー オンライン (MMO) のゲームやブロードキャスト (この場合はメンバーの大半が観戦者になります) への適用が最も一般的です。 大規模なセッションのサポートは、他のスタイルのゲームにも適用される場合があります。
状況によっては、もっと少人数のプレーヤー グループを扱う場合でも、大規模なセッションが役立つ場合があります。
同じセッションに複数のプレイヤーが参加しても、ゲーム内で遭遇しなければ互いに知らなくても良いという場合は、大規模なセッションの encounters
プロパティを使用できます。
大規模なセッションは現在、Multiplayer Manager ではサポートされていません。 マルチプレイヤー サービス ディレクトリ (MPSD) への直接呼び出しを使用するには、2015 マルチプレイヤー API を使用する必要があります。
大規模なセッションの扱いは、通常のセッションとは若干異なります。
- 大規模なセッションに格納できる情報量は通常のセッションより少なくなりますが、効率的です。
- 大規模なセッションでは、最大 10,000 人のメンバーがサポートされます。
- 大規模なセッションをサブスクライブすることはできません。
- 大規模なセッションのメンバーは、自動的にはプレイヤーの履歴 (最近のプレイヤー) 一覧に含まれません。
最近遊んだプレイヤー
Xbox プレイヤーがマルチプレイヤー ゲームを新しいプレイヤーとプレイする場合、ゲームの後に、これらのプレイヤーがダッシュボードの [プレイヤーの履歴] 一覧に表示されます。
- プレイヤーが新しいプレイヤーと楽しくゲームをプレイできた場合は、これらのプレイヤーと再度プレイしたり、フレンドに追加することができます。
- あるプレイヤーとプレイした際に楽しくなかった場合は、今後はこれらのプレイヤーとのプレイを避けたり、ゲームの終了後にそのプレイヤーの不快な行為を報告することもできます。
通常のセッションの間、同じセッションのプレイヤーが Xbox サービス によって自動的にプレイヤーの履歴一覧に追加されます。 大規模なセッションでは、プレイヤーの履歴一覧が正しく設定されているか確認するには、追加の手順が必要になります。
大規模なセッションのセットアップ
大規模なセッションをセットアップするには、セッション テンプレートの capabilities セクションに "large": true
を追加します。
maxMembersCount
の値は最大 10,000 まで設定できます。
次のテンプレートは、最大 2,000 人のプレーヤーをサポートする大規模なセッションを作成します。
{
"constants": {
"system": {
"version": 1,
"maxMembersCount": 2000,
"visibility": "open",
"capabilities": {
"gameplay": true,
"large": true
},
"timeouts": {
"inactive": 0,
"ready": 180000,
"sessionEmpty": 0
}
},
"custom": { }
}
}
大規模なセッションでの操作
大規模なセッションを MPSD に書き込む場合、1 秒あたりの書き込みが 10 件を超えないようにすることをお勧めします。 通常の 1,000 プレーヤーのセッションでは、メンバーの参加や離脱などの更新により、プレーヤーごとに平均 2 分ごとに書き込みが行われます。
その他のプロパティは、大規模なセッションでは管理しないでください。
同じ大規模セッションからのプレーヤーの関連付け
MPSD から大規模なセッションを取得する場合、応答にメンバーのリストは含まれていません。 完全なリストを取得する方法はありません。
呼び出し元がセッションに参加している場合、そのメンバーレコードは members
コレクション内の唯一のレコードであり、(リクエストの場合と同様) me
とラベル付けされています。
これは、クライアント メンバーがセッション内の自分のエントリのみを更新できることを意味します。 彼らはあなたが指定する共通の識別子を提供してもらうためにサーバーに依存しています。 Xbox サービスは、この識別子を使用して、一緒にプレイしたプレーヤーを関連付け、評判と最近遊んだプレイヤーのステータスを更新できるようにします。
セッションのプレーヤーが一緒にプレイしたことを示すには、永続的なグループと一時的な遭遇の 2 つの方法があります。
永続的なグループ
永続的なグループとは、継続的に一緒にプレイする名前付きのプレーヤーのグループであり、一部のプレーヤーがグループに参加またはグループから脱退する可能性があります。 グループ名は、GUID などの通常のセッションに適用されるのと同じ命名規則に従う必要があります。
各メンバーはグループから参加したり退出したりするときに、文字列の配列である独自の groups
プロパティにグループ名を追加または削除する必要があります。
{
"members": {
"me": {
"properties": {
"system": {
"groups": [ "example-group-name" ]
}
}
}
}
}
一時的な遭遇
2 人のプレーヤーが短時間の 1 回限りの遭遇 (一時的な遭遇) でプレイしている場合、ゲームは encounters
プロパティの代わりに group
プロパティを使用してそれを示すことができます。
それぞれの遭遇に名前を付けます。 遭遇の後、両方 (またはすべて) の参加者が遭遇名を自分の encounters
プロパティに書き込みます。
{
"members": {
"me": {
"properties": {
"system": {
"encounters": [ "trade.0c7bbbbf-1e49-40a1-a354-0a9a9e23d26a" ]
}
}
}
}
}
groups
と encounters
の両方に同じ名前を使用できます。 たとえば、あるプレイヤーが groups
に名前が追加されたグループと "トレード" した場合、遭遇したプレイヤーはそのグループ名を "遭遇" リストにアップロードします。 これにより、個人はグループのすべてのメンバーを最近のプレーヤーとして見ることができ、また、その逆も可能です。 グループ内のプレーヤーは、グループ メンバーシップを更新するためにアクションを実行する必要はありません。
プレイヤーが 30 秒間グループ メンバーである場合、それは遭遇としてカウントされます。
遭遇は 1 回限りのイベントと見なされるため、encounters
プロパティは常に即座に処理され、セッションからクリアされます。
encounters
配列が応答に表示されることはありません。
一方、groups
プロパティは、変更または削除されるか、メンバーがセッションを終了するまで残ります。