目次
前提条件
XBOX services クライアント アプリでユーザー特権を処理するには、XBOX services での認証用にゲームを構成します。 詳細については、認証とサインインの概要 および XBOX services ユーザー特権の概要 を参照してください。特権とアップセルのクライアント側の処理とプレイヤー体験
クライアント アプリは、XR-045: XBOX services and Account Privileges など、ゲームの一部を制御する特権を要求する XBOX Requirements (XR) の対象となります。 詳細については、Policies and XBOX Requirements を参照してください。 特権によって制御されるゲームでは、API を使用できます。XUserCheckPrivilege は、プレイヤーが特定の特権を持っているかどうかを判定します。XUserResolvePrivilegeWithUiAsync は、指定された特権に関連する問題の解決をプレイヤーが行うのに役立つユーザー インターフェイス (UI) を表示します。 UI はプレイヤーが特権を持っていない理由を説明します。 例として、XPRIVILEGE_MULTIPLAYER_SESSIONS 特権の対象となるゲームには次のようなフローがあります。
- プレイヤーはマルチプレイヤー セッションを開始するオプションを見て、UI で該当するオプションを選択して試合を開始しようとします。
- ゲームは
XUserCheckPrivilegeAPI を使用して “ヒント” を確認します。- 存在する場合、プレイヤーが特権を持っているものとみなして進みます。
- 存在しない場合、次のステップに進みます。
[!NOTE] XBOX services API は、XToken に特権が存在しないためにフィーチャーへのアクセスが拒否された場合、ステータス コード 403 (
HTTP_E_STATUS_FORBIDDEN) を返します。 XBOX services のすべてのエンドポイントは、必要に応じて特権ベースのアクセス制御を適用します。 - 失敗コードに応じて、ゲームは解決しようとしている特権に対応する適切な特権 ID を指定して
XUserResolvePrivilegeWithUiAsyncを呼び出します。この関数は XBOX services を呼び出してプレイヤーが特権を持っているかどうかを確認し、プレイヤーにアクションが失敗した理由を伝えるか、それを解決するための UI を表示します。この API 呼び出しの結果として、以下が発生する可能性があります。- XBOX services のポリシーおよび違反対応モデレーターによって発行されたプレイヤーの適用ステータスに関連する UI を表示します。
- ペアレンタル コントロールに関連する UI を表示します。
- XBOX Game Pass Essential サブスクリプションなど、該当するサブスクリプション サービスをプロモートします。
- 結果 (成功または失敗と、その理由) をゲームに返します。
[!NOTE] XBOX services やネットワークに到達できない場合、
XUserResolvePrivilegeWithUiAsyncは失敗します。 この失敗は、プレイヤーが特権を持っていなかったものとして扱う必要があります。 XUserResolvePrivilegeWithUiAsyncから戻ったとき:- 失敗が返された場合、ゲームはプレイヤーが引き続きボタンを選択できるようにする必要があります。プレイヤーの禁止が期限切れになったり、ペアレンタル コントロールが変更されたりする可能性があるためです。
- 成功が返された場合、プレイヤーは救済されているため、ゲームは再度アクションを試みることができます。
プレイヤーのトークンには、
XUserResolvePrivilegeWithUiAsyncによって実行された救済の一環として必要な特権が含まれます。
特権は「私はできるか?」という質問に答えるマクロ レベルのチェックです。
タイトルに該当する特権の詳細については、トピック「Policies and XBOX Requirements」の XR-015 を参照してください。
コード例
タイトルでマルチプレイヤー機能にアクセスする前にプレイヤーのマルチプレイヤー特権を確認するには、次のコード例を使用します。アプリ側の特権処理のベスト プラクティス
タイトルでユーザー特権を処理する際は、必ず以下のベスト プラクティスを採用してください。アプリで特権を解決する頻度
特権チェックについては、起動ごとに 1 回、プレイヤーが適切な特権を持っていることを確認して解決することが必須要件です。 論理的なセッションや個別のアクションごとにチェックすることをお勧めします。 セッションの定義はアプリの使用方法によって大きく異なる場合があります。 以下はベスト プラクティスの例です。- ビデオ プレイヤーなどのメディア ストリーミング アプリでは、[再生] ボタンの選択 (ストリーム開始) ごと、またはプレイリストの開始時 (音楽プレイリストなど複数のストリームの場合) に特権チェックを解決します。
- メッセージング アプリでは、送信される最初のメッセージについて 1 回特権をチェックします。
- サードパーティのマッチ サービスを使用するマルチプレイヤー ゲームでは、セッション (試合) 開始ごとに特権チェックを解決します。
ユーザーのサブスクリプション ティアを想定しない
歴史的に、XBOX 360 のクレームはプレイヤーのサブスクリプション ティア (XBOX Game Pass Essential ステータスなど) に関する情報を提供していました。 このクレームは XBOX One 系および以降の導入により非推奨となりました。 特権を使用して判断を行うようにしてください。ユーザーのティア、またはユーザーが特権を取得した方法はアプリからは不透明でなければなりません。オフライン モード
XUserCheckPrivilege がサービスがダウンしているか到達できないことを返す場合は、特権チェックが失敗を返したものとして扱ってください。
そうすることで、ゲームは XR 準拠を維持するためのフェイルセーフを備えることになります。
正しいプレイヤーをターゲットにする
特権チェックで別のプレイヤーが指定されていない場合は、常に操作しているプレイヤーを参照することをお勧めします。 ゲームがユーザーの指定をサポートしている場合は、現在指定されているユーザーを使用してください。 たとえば、Bill、Bob、Beth の 3 人のプレイヤーがログインしています。 ゲームは、推奨事項、履歴、および設定を誰に使用するかを指定するために、“アクティブ プレイヤー” を切り替えることをサポートしています。 Beth がアプリを起動しました。 ゲームの実行中、アクティブ プレイヤーが Bob に切り替わりました。 Bob には別のプロファイル、推奨事項のセット、および履歴があります。XUserCheckPrivilege を呼び出して、Bob の特権チェックを開始します。
UI なし、または UI がフォーカスされていない状態でのチェック
ゲームがモーダルを表示できないため、特権チェックの UX がブロックされる場合があります。 たとえば、ゲームがバックグラウンドで音楽を再生している場合や、Skype アプリがバックグラウンドで実行されている間に着信があった場合などです。 ただし、ゲームは依然として特権をチェックする必要があります。XUserCheckPrivilege の呼び出しをお勧めします。
XUserCheckPrivilege は UI を表示するのではなく、ユーザーの現在のアクセス許可状態を返すか、該当する失敗を返します。
ゲームは特権によって定義されているとおりにプレイヤーに影響を与えることができ、ゲームがフォーカスを取り戻したときに特権チェックについてプレイヤーに通知できます。
逆に、タイトルは必要に応じて非モーダルのエラー情報や別の UX をプレイヤーに表示できます。
プレイヤーにブロッキング UX を表示するのが適切な場合、XUserResolvePrivilegeWithUiAsync を再度呼び出して、アップセルや適用ステータスなど適切な UX を表示します。
ゲームでの特権ベースのアクセス制御のテスト
特権は次の入力に基づいて計算されます。- プレイヤーの実効サブスクリプション権利
- デバイスの実効特権権利
- クライアント プラットフォームの実効特権権利
- 現在のゲームの実効特権権利
- ゲームに特権のコレクションをパッケージ化して、ゲームのすべてのプレイヤーが実行中のゲームで使用するためにこれらの特権を自動的に取得できるようにすることができます。ゲームでこの機能が必要な場合は、Microsoft アカウント マネージャーにお問い合わせください。
- 親が家族の子供に対して追加または削除する特権を決定するためのペアレンタル コントロール
- XBOX モデレーターは、サービスの悪用が確認されたプレイヤーやデバイスの特権を禁止する場合があります
プレイヤーの特権とアクセス許可の管理と確認
プレイヤーのプライバシー設定には 2 つの方法でアクセスできます。- PC 上: https://aka.ms/XboxPrivSettings にアクセスします。
- XBOX 上: 設定 -> 一般 -> オンラインの安全性と家族 -> プライバシーとオンラインの安全性 -> XBOX プライバシー
XUserCheckPrivilege でチェックされる特権
XUserPrivilege::CrossPlay
- 説明: プレイヤーが、次のようなシナリオで XBOX services にサインインしていない他の実世界のプレイヤーとゲームプレイ セッションに参加できるようにします: 同じセッション内での同期のプレイヤー対プレイヤーのゲームプレイ、非同期のターンベースのゲームプレイ、チーム ベースのゲームプレイ、ユーザーが開始するマッチメイキング、招待の送信または受諾、進行中セッションへの参加。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 185
- PC 上の設定: You can play with people outside of XBOX services
- XBOX 上の設定: You can join cross-network play
XUserPrivilege::Sessions
- 説明: プレイヤーが共有環境で接続されたシングルプレイヤー体験に参加できるようにするか、またはタイトルがハイブリッドの無料プレイと有料マルチプレイヤーのタイトルであり、この特権を使用して XBOX コンソールでこれらの体験を制限するシナリオで使用します。シングルプレイヤー体験には、特権 252 または 254 (それぞれ Communications と Multiplayer) でカバーされる機能を持たせないでください。この特権の使用はタイトル機能であり、プラットフォームの承認が必要です。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 189
- PC 上の設定: You can join multiplayer games
- XBOX 上の設定: You can join multiplayer games
XUserPrivilege::Multiplayer
- 説明: プレイヤーが、次のようなシナリオで実世界のユーザー (ボットではない) とオンライン マルチプレイヤー ゲームプレイ セッションに参加できるようにします: 同じセッション内での同期のプレイヤー対プレイヤーのゲームプレイ、非同期のターンベースのゲームプレイ、チーム ベースのゲームプレイ、ユーザーが開始するマッチメイキング、招待の送信または受諾、進行中セッションへの参加。この特権は同じデバイス上で実行されるローカル マルチプレイヤー ゲームには関係しません。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 254
- PC 上の設定: You can join multiplayer games
- XBOX 上の設定: You can join multiplayer games
XUserPrivilege::UserGeneratedContent
- 説明: プレイヤーが他のユーザーの UGC をオンラインで見たり、他のユーザーの UGC をダウンロードしたり、自分の UGC をオンラインで共有したりできるようにします。以前にダウンロードした UGC の使用は制限されません。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 247
- PC 上の設定: You can see and upload community creations
- XBOX 上の設定: You can see and upload community creations
XUserPrivilege::SocialNetworkSharing
- 説明: XBOX コンソール専用: プレイヤーがゲームの進行状況、Kinect で生成されたコンテンツ、ゲーム クリップなどの情報を XBOX network の外部で共有できるようにします。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 220
- XBOX 上の設定: You can share outside of XBOX
XUserPrivilege::Communications
- 説明: プレイヤーが音声またはテキストを通じて他の XBOX services ユーザーと通信できるようにします。
- 要件: XR-045 - XBOX services and Account Privileges
- 特権 ID: 252
- PC 上の設定: Others can communicate with voice, text or invites
- XBOX 上の設定: Others can communicate with voice, text or invites
XblPrivacyCheckPermissionAsync でチェックされるアクセス許可
タイトルでは、複数のユーザーに対してアクセス許可をチェックする必要がある場合には XblPrivacyBatchCheckPermissionAsync を、XBOX services 以外のユーザーに対してアクセス許可をチェックする場合には XblPrivacyCheckPermissionForAnonymousUserAsync を使用することもあります。XblPermission::CommunicateUsingText
- 説明: プレイヤーがテキスト コンテンツを含むメッセージをターゲット ユーザーに送信できるかどうかを確認します。この値はプレイヤーがターゲット ユーザーをミュートしても変わりません。代わりに CommunicateUsingVoice を使用してください。たとえば、コミュニケーションをフレンドのみに設定していてターゲットがフレンドではない場合、この値は false になります。たとえば、ターゲット プレイヤーがあなたをブロックしている場合、この値は false になります。たとえば、コミュニケーション設定を「ブロック」に設定している場合、この値は false になります。
- 要件: XR-015 - Managing Player Communication
- 別の XBOX services ユーザーを確認する場合
- PC 上の設定: Others can communicate with voice, text or invites
- XBOX 上の設定: Others can communicate with voice, text or invites
- 匿名ユーザーを確認する場合
- PC 上の設定: You can communicate outside of XBOX services with voice & text
- XBOX 上の設定: You can communicate outside of XBOX with voice & text
- 別の XBOX services ユーザーを確認する場合
XblPermission::CommunicateUsingVoice
- 説明: プレイヤーが音声を使用してターゲット ユーザーと通信できるかどうかを確認します。プレイヤーがターゲット ユーザーをミュートしている場合は false になります。
- 要件: XR-015 - Managing Player Communication
- 別の XBOX services ユーザーを確認する場合
- PC 上の設定: Others can communicate with voice, text or invites
- XBOX 上の設定: Others can communicate with voice, text or invites
- 匿名ユーザーを確認する場合
- PC 上の設定: You can communicate outside of XBOX services with voice & text
- XBOX 上の設定: You can communicate outside of XBOX with voice & text
- 別の XBOX services ユーザーを確認する場合
サブスクリプションによって提供される特権のテスト
Partner Center を使用して、XBOX Game Pass Essential サブスクリプション付きの テスト アカウント を作成できます。 これらのアカウントを使用して、XBOX Game Pass Essential サブスクリプションを通じて提供される特権の特権ロジックをテストします。 開発クライアント上で テスト アカウント を使用して他のサブスクリプションを購入できます。サブスクリプションはアカウントまたはデバイスが認可された開発用サンドボックスに公開されている必要があり、開発クライアント上のアカウントは同じサンドボックスでアクティブである必要があります。
実行中のゲームによって提供される特権のテスト
プレイヤーがゲーム内にいるときに自動的に特権を発行するようにゲームを設定したい場合は、Microsoft アカウント マネージャーにお問い合わせください。 このシナリオをテストするには、ゲームを XBOX services 認証用に構成し、プレイヤーがサインインした状態でゲームを実行する必要があります。ペアレンタル コントロールで削除される特権のテスト
ペアレンタル コントロールで削除できる特権 (XPRIVILEGE_COMMUNICATIONS など) を使用して特権ロジックをテストするには、クライアント デバイスに家族アカウントを設定します。
親または保護者はデバイスを使用して、家族の子供の特権を制限できます。
プレイヤーが自分のアカウントで特権を制限することも可能です。
ユーザーの特権を制限する必要があるシナリオをテストするには、この方法を使用することをお勧めします。
Partner Center は現在、テスト アカウント の家族を作成する方法を提供していません。
チェックする特権 ID
タイトルは次の特権 ID をチェックする必要があります。詳細については、XR-045: XBOX services and Account Privileges を参照してください。
利用可能な特権の詳細については、XUserPrivilege を参照してください。
特権の計算ロジック
特権は、コンソールや他のデバイスで同時にサインインしている各プレイヤーごとに独立して計算されます。 特権は、ユーザー、デバイス、現在実行中のタイトル、およびプラットフォームの実効権利から追加されます。 その後、ペアレンタル コントロール、XBOX services のポリシーおよび適用ステータス、および各ユーザーのゲスト ステータスに基づいて、各プレイヤーから特権が削除されます。 実効権利は、ユーザーが購入したサブスクリプション、同時にログインしている他のユーザーが購入したサブスクリプション、またはデバイスに直接関連付けられたサブスクリプションから発生する場合があります。 実効権利は、「無料マルチプレイヤー週末」イベントなどのプロモーション オファーから発生する場合もあります。デバイス タイプから発生する特権権利
特定の種類のデバイス (XBOX One 系コンソールおよび XBOX Series コンソール、Windows PC、モバイルなど) は、そのプラットフォームから XBOX services に接続する任意のプレイヤーに特権のコレクションを自動的に付与します。サブスクリプションから発生する実効特権権利
サブスクリプション製品は、該当するユーザーに特権のコレクションを提供する場合があります。 以下のシナリオは、プレイヤーがサブスクリプション ベースの特権を実質的に付与される方法です。- プレイヤーがサブスクリプション製品を購入した。
- 同じデバイス上の別のアクティブ プレイヤーがサブスクリプション製品を購入した。
- サブスクリプション製品が、プレイヤーが現在使用しているデバイスに関連付けられている。
プロモーション権利
プロモーション権利は、特定の動的基準を満たすユーザーに限られた期間の特権を追加します。 たとえば、プロモーションでは週末の間、特定のユーザーにマルチプレイヤー特権を提供する場合があります。 「無料 XBOX Game Pass Essential 週末」などの過去のプロモーションはプロモーション権利のモデルに従います。サービスやタイトルはこれらのようなプロモーションを直接認識する必要はありません。
スポンサー ゲスト アカウントで削除される特権
スポンサー ゲストは XBOX services にサインインしているゲスト アカウントです。 スポンサー ゲストは、クライアント デバイス上に他の少なくとも 1 人のアクティブ プレイヤーが存在する場合にのみ存在します。たとえば、1 人だけがサインインしている分割画面のマルチプレイヤー ゲームなどです。 これらのアカウントは認証済みユーザーであり、他の認証済みユーザーと同様にトークンを取得します。 スポンサー ゲストには特権がありますが、スポンサー ゲストの実効権利や現在実行中のゲームに関係なく、一部の特権はゲスト プレイヤーには保留されます。 スポンサー ゲストの特権をチェックするには、XUserCheckPrivilege を呼び出します。これは解決を試みません。
スポンサー ゲストは「解決」できないため、解決 UI を表示する必要はなく、XUserResolvePrivilegeWithUiAsync を呼び出す必要もありません。アクティブな XBOX アカウントとは異なり、スポンサー ゲストは購入、適用アクションの発生、その他固有の特権や制限のセットを持つ手段がありません。
プレイヤーが現在サインインしていない場合 (「純粋なゲスト」の場合)、そのユーザーにトークンは発行されません。
これは、デバイス上のどのプレイヤーに対しても実効特権が計算されないことを意味します。
XR-045 では、XPRIVILEGE_SOCIAL_NETWORK_SHARING または XUserPrivilege::SocialNetworkSharing を使用して特権 220 をタイトルがチェックする必要があります。これはゲストで削除される特権の 1 つです。
オンラインの安全性と Microsoft の適用
XBOX services のポリシーおよび違反対応モデレーターは、悪用するユーザーやデバイスから特権を削除する場合があります。ペアレンタル コントロール
親は、子のサブスクリプションや現在実行中のタイトルに関係なく、家族の子アカウントから特権を削除できます。 これは XBOX コンソールまたは Xbox.com の XBOX Family Settings アプリ を通じて管理されます。XBOX Game Pass Essential サブスクライバーの特権
特定のサブスクリプションの特権権利に関するポリシーは動的であり、時間の経過とともに変更されます。 サブスクライバーが特権に対する権利を持っていても、ペアレンタル コントロールの変更や適用ポリシーによってその特権を失う可能性があることに注意してください。特権は、ユーザーの現在のサブスクリプションを正確に反映するものではありません。
XPRIVILEGE_MULTIPLAYER_SESSIONS または XUserPrivilege::Multiplayer を使用して特権 254 をタイトルがチェックする必要があります。これは XBOX Game Pass Essential サブスクライバーに付与される特権の 1 つです。
パートナー サブスクリプションと特権
XBOX services 特権のコレクションを提供するようにパートナー サブスクリプションを構成することができます。 パートナー サブスクリプションは、プレイヤーがサブスクリプションに明示的に関連付けられたゲームにログインしている場合にのみ、プレイヤーの特権の計算に使用されます。 パートナー サブスクリプションを設定するには、Microsoft アカウント マネージャーにお問い合わせください。 パートナー サブスクリプションはリリース前に開発サンドボックスでテストできます。 これらの開発用サンドボックスの使用が認可されたユーザーとデバイスのみがこれらのサブスクリプションを購入できます。無料プレイのタイトルとマルチプレイヤー特権
無料プレイ (F2P) モデルで動作するように特別に構成されたタイトルの場合、通常どおりXPRIVILEGE_MULTIPLAYER_SESSIONS / XUserPrivilege::Multiplayer 特権をチェックする必要があります。ただし、この設定では、ユーザーが XBOX Game Pass Essential サブスクリプションを持っているかどうかにかかわらずマルチプレイヤー特権が付与されます。この特権は、プレイヤーが禁止/ブロックされているか、何らかの方法で年齢制限されている場合にのみ拒否されます。この特権の使用はタイトル機能であり、プラットフォームの承認が必要です。この機能をタイトルで有効にするには、Microsoft のマネージャーまたは Developer Partner Manager (DPM) と協力してください。
ハイブリッド タイトルとマルチプレイヤー特権
ハイブリッド モデルで動作するように特別に構成されたタイトル (つまり、有料サブスクリプションを必要とするマルチプレイヤー シナリオを含むが、無料でプレイできるシナリオも含むタイトル) の場合、特権チェック プロセスは若干異なります。 有料サブスクリプションを必要とするコンテンツについては、XPRIVILEGE_MULTIPLAYER_SESSIONS / XUserPrivilege::Multiplayer 特権をチェックする必要があります。ただし、無料のマルチプレイヤー シナリオでは、代わりに XPRIVILEGE_SESSIONS / XUserPrivilege::Sessions 特権がチェックされます。この特権は、プレイヤーが禁止/ブロックされているか、何らかの方法で年齢制限されている場合にのみ拒否されます。Multiplayer 特権もこれらの理由で拒否されますが、付与されるには有料サブスクリプションも必要です。この特権の使用はタイトル機能であり、プラットフォームの承認が必要です。この機能をタイトルで有効にするには、Microsoft のマネージャーまたは DPM と協力してください。
