マルチプレイヤーのロール
このトピックでは、Xbox サービス マルチプレイヤーでプレイヤー ロールを定義する方法について説明します。 ゲーム セッションによっては、Support、Medic、Assault などのゲームプレイのロールを特定のプレイヤーに割り当てることができます。 また、特定のゲームプレイの役割を果たすことができるプレーヤーのためにゲーム スロットを確保することもできます。
Xbox サービスの役割機能を使用すると、各ゲームプレイ ロールが割り当てられているプレイヤーを追跡し、特定のゲームプレイ ロールを選択できるプレイヤーの最大数を適用できます。
ロールの最も一般的な用途は、そのゲーム セッションに対するゲーム固有のロールを決定することです。 たとえば、1 人または 2 人の支援クラス、1 人以上の重戦車クラス、5 人以下の突撃クラスを必要とするゲーム モードを設定できます。
厳密に 4 人のゲーム プレイヤー、最大 8 人の観戦者、1 人だけのアナウンサーで構成されるゲーム シナリオを指定することもできます。
また、ロールを使用してフレンド用のスロットを予約し、残りのスロットはセッション参照などの他の手段で埋めることもできます。
ロールの種類
ロールの種類は、ロール定義のグループを表します。 それぞれのロールは、ロールの種類の一部として定義されている必要があります。 ロールの種類は通常、マルチプレイヤー セッション ドキュメントで定義されます。
1 人のプレイヤーに 1 つのロールの種類から割り当てることができるロールは 1 つだけです。 たとえば、"クラス" というロールの種類にヒーラー、タンク、ダメージが含まれる場合、1 人のプレイヤーにはこれらのロールのいずれか 1 つだけを割り当てることができます。
複数のロールの種類を定義でき、1 人のプレイヤーには各ロールの種類から 1 つのロールを割り当てることができます。 前のシナリオで、スクワッド リーダー ロールが別のロールの種類で定義されている場合は、ヒーラー ロールを選択したプレイヤーに、スクワッド リーダー ロールも割り当てることができます。
ロールの種類のプロパティ
ロールの種類を定義するときは、次の情報を指定する必要があります。
- ロールの種類の名前。 名前は 100 文字以下の小文字の英数字を含める必要があります。
- ロールの定義。
- ロールを所有者が管理しているかどうか。
- ロールのプロパティを、セッションの存在期間中に変更できるかどうか。
ロールの種類が所有者によって管理されている場合は、セッションの所有者であるプレイヤーだけがその種類のロールを割り当てることができます。 ロールの種類が所有者によって管理されていない場合は、プレイヤーが自分自身にロールを割り当てることができます。
hasOwners
機能が設定されているセッションでのみ、ロールの種類を所有者管理に指定することができます。
注意
現在、Xbox Services API (XSAPI) では、所有者が他のプレイヤーにロールを割り当てることはサポートしていません。
ロールのプロパティ
ロールを定義するときは、次の情報を指定する必要があります。
- ロールの名前。 名前は 100 文字以下の小文字の英数字を含める必要があります。
- ロールを満たすことができるプレイヤーの最大数。 この値は 0 より大きい必要があります。
- ロールに指定する必要があるプレイヤーの目標数。 値は 0 より大きく、ロールに指定できるプレイヤーの最大数以下である必要があります。
セッションでプレイヤーにロールが割り当てられると、以前の情報がマルチプレイヤー セッション ドキュメントに記録されます。
ロールに割り当てることができるプレイヤーの最大数はサービスによって強制されますが、目標数は強制されません。
ロールを作成する
通常、ロールおよびロールの種類は、セッション テンプレートで定義されます。詳細については、「マルチプレイヤーのセッション テンプレート」を参照してください。 サービスでは、セッション作成時にロールの種類およびロールの定義をサポートしますが、XSAPI ではサポートしていません。
セッション テンプレートでロールの種類とロールを定義する
Xbox サービスの構成中にセッション テンプレートを作成するときに、ロールの種類とロールを定義できます。
ロールの種類およびロールに関する情報は、次の形式を使用して、セッション テンプレートの基本レベルの roleTypes
要素として指定されます。
"roleTypes": {
"myroletype1": { // Must be lowercase alphanumeric.
"ownerManaged": true, // Can be true only on sessions that have the "hasOwners" capability set.
// If true, only the owner of the session can assign this role to players.
"mutableRoleSettings": ["max", "target"], // Only these role settings can be modified during the
// session. Exclude role settings to lock them.
"roles": {
"role1": { // Must be lowercase alphanumeric.
"max": 3, // Maximum number of players assigned to this role. Enforced by MPSD.
"target": 2 // Target number of players to assign this role to. Not enforced by MPSD.
},
"role2": {
...
}
},
"myroletype2": {
...
}
},
マルチプレイヤー セッションのロール情報を取得する
マルチプレイヤー セッションまたはマルチプレイヤー検索ハンドルから、ロールの種類、ロール、各ロールに割り当てられているプレイヤーの数に関する情報を取得できます。
XSAPI では、ロールの種類とロールに関する情報は、配列構造内に格納されます。
検索要求から返された XblMultiplayerSearchHandle
オブジェクトで、ロールの種類の名前で XblMultiplayerSessionRoleTypes データにインデックスを付けることにより、ロールの種類に関する情報を取得できます。
この呼び出しは、XblMultiplayerRoleType オブジェクトを返します。 ロールの情報を取得するには、Roles
配列をインデックスします。
XblMultiplayerRole オブジェクトには、MaxMemberCount
、MemberXuids
、MemberCount
、TargetCount
など、ロールに関する情報が含まれています。
プレイヤーにロールを割り当てる
現在、XSAPI では、プレイヤーは自分のロールのみを割り当てることができます。 現在のプレイヤーのロールの種類とロールを指定するには、XblMultiplayerSessionHandle
オブジェクトを XblMultiplayerSessionCurrentUserSetRoles メソッドにパスします。
セッションをサービスに書き込もうとしたときに、ロールが既にいっぱいになっている場合、MPSD は書き込みを拒否します。