タイトルで Multiplayer Activity (MPA) と Multiplayer Session Directory (MPSD) サービスを混在させることはできますか?
いいえ、タイトルで MPA と MPSD の呼び出しを混在させることはできません。タイトルは、機能要件に基づいてどちらのサービスを使用するかを選択する必要があります。サービスから Multiplayer Session Directory (MPSD) API にアクセスするにはどうすればよいですか?
詳細については、Service-to-service マルチプレイヤーセッション管理 を参照してください。タイトルは複数のセッションに対する変更を購読できますか?
はい、タイトルは 1 接続あたり最大 10 セッションの変更を受信するように購読できます。ネットワーク接続が失われた場合、またはプレイヤーがコンソールをオフにした場合、プレイヤーは直ちに削除されますか?
Web ソケット接続により、Multiplayer Session Directory (MPSD) はクライアントの切断を迅速に検出し、クライアントを Inactive に設定できます。セッションメンバーは、Inactive による削除のタイムアウトが期限切れになるとすぐに削除されます。詳細については、「Multiplayer Session advanced topics」トピックの Session timeouts セクションを参照してください。使用する service configuration ID (SCID)、セッションテンプレート、およびサンドボックスをどのように決定すればよいですか?
これらの情報が作成されたタイトルの初回登録に関与していなかった場合、この情報に直接アクセスすることはできません。この情報を入手するには、developer account manager (DAM) に連絡してください。タイトルの要求本文と比較できる要求本文の例はありますか?
要求構造については、MultiplayerSessionRequest (JSON) を参照してください。MPSD を呼び出す際に HTTP 403 ステータスコードが返された場合、どうすればよいですか?
これは通常、アクセス許可またはスコープの問題です。Fiddler トレースを収集して詳細情報を入手し、HttpResponse 本文の一部として返されるメッセージで一般的な 403 メッセージを確認してください。
- “The requested service configuration cannot be accessed.”
- サンドボックスにアクセスできるアカウントを使用していることを確認してください。
- 正しいサンドボックスにいることを確認してください。
- 証明書認証を使用していてこのエラーが発生した場合は、DAM に連絡してください。
- “The requested session cannot be accessed. The calling user must have multiplayer privilege, and private sessions can only be read by session members.”
- セッションを表示する権限がありません。可視性が Private のセッションにアクセスしようとしている可能性があります。可視性が Private に設定されている場合、そのセッションのメンバーのみがセッションドキュメントを読み取ることができます。
[!NOTE] 新しいセッションを登録するには、プレイヤーは XBOX Live Gold アカウントを持っている必要があります。Gold アカウントの権限がない場合、新しいセッションを登録する要求は HTTP 403 を返します。
- “The request body can’t contain existing member references unless the authentication principal includes a server.”
- 他のプレイヤーの代わりに、そのプレイヤーをセッションに参加させることはできません。招待のみが可能です。プレイヤーを招待するには、インデックスを
reserve_<number>に設定します。
- 他のプレイヤーの代わりに、そのプレイヤーをセッションに参加させることはできません。招待のみが可能です。プレイヤーを招待するには、インデックスを
MPSD を呼び出す際に HTTP 404 ステータスコードが返された場合、どうすればよいですか?
Fiddler トレースを収集して詳細情報を入手し、次の手順を実行します。HttpResponse本文の一部として返されるメッセージで、次のような一般的な 404 メッセージを確認します。- “The requested service config is either invalid or not configured for sessions.” 正しい SCID を使用していることを確認してください。
- “The requested session wasn’t found.” 取得する前にセッションが作成されており、セッションテンプレートが正しいことを確認してください。
PUT呼び出しでセッションを作成できます。
- 使用している URI を確認します。
- コンソールを再起動するか、別のプレイヤーとしてログインします。
- エラーコードまたは他の解決策について Game Developer Forums を確認します。
- セッションが空だったために削除されていないことを確認します。プレイヤーがタイムアウトすることでセッションが空になることがあります。これが発生する場合、すべてのセッションメンバーが Ready や Inactive など、タイムアウトが適用される状態にあることが原因であることがよくあります。詳細については、「Multiplayer Session advanced topics」トピックの Session user states セクションを参照してください。
XblMultiplayerWriteSessionByHandleAsync または XblMultiplayerGetSessionByHandleAsync を呼び出す際に HTTP 404 ステータスコードが返されるのはなぜですか?
タイトルが、ハンドル ID を含む参加プロトコルアクティベーションに応じてハンドルを使用して MPSD セッションにアクセスする場合、プロトコルアクティベーション内のハンドル ID が古くなっている可能性があります。原因は次のいずれかです。- タイトルが参加を開始した XBOX シェルの UI ビューが最新でない可能性があります。プレイヤーのプロファイルカードなどの一部の UI ビューは、開いている間は参加ハンドルを自動的に更新しません。HTTP 404 ステータスコードを受信しないようにするには、タイトルは参加する前にビューを閉じて再度開き、データを更新する必要があります。
- タイトルが参加しようとしているプレイヤーが、タイトルが XBOX シェル UI から参加操作を選択した後にアクティビティセッションを切り替えた可能性があります。この理由はまれです。
MPSD を呼び出す際に HTTP 412 ステータスコードが返されるのはなぜですか?
セッションがすでに存在する場合、次の要求は HTTP 412 を返します。If-Match ヘッダーと一致しない場合、次の要求は HTTP 412 を返します。
MPSD を呼び出す際に HTTP 400、405、409、503 などのステータスコードが返されるのはなぜですか?
Fiddler トレースを収集して詳細情報を入手し、HttpResponse 本文の一部として返されるメッセージを確認してください。この情報を使用して、エラーを特定して修正できるはずです。修正できない場合は、developer forums で解決策を検索してください。
XBOX Services API (XSAPI) を使用している場合は、XBOX Services API のトラブルシューティング で説明されているように応答本文を取得することもできます。あるいは、コードで HCTraceSetClientCallback を使用して、出力をタイトル UI に送信することもできます。
タイトルのセッションテンプレートで変更できる項目、または変更すべき項目は何ですか?
セッションテンプレートはセッションのパターンであり、テンプレートですでに設定されている定数を上書きすることはできません。ただし、テンプレートに新しいプロパティを追加することはできます。詳細については、マルチプレイヤーセッションテンプレート および Multiplayer Session Directory の概要 を参照してください。セッションが初期化されていないというエラーが返されるのはなぜですか?
以下は、受信する可能性のあるエラーメッセージの例です。400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start.
要求に含まれる、initialize フィールドが true に設定されたセッションメンバーの予約数が不足しているため、セッションを作成できません。コードでは、XblMultiplayerSessionAddMemberReservation または XblMultiplayerSessionJoin の initializeRequested パラメーターを使用して、メンバーに対してこのフィールドを設定できます。
セッションテンプレートで初期化が指定されている場合は、マッチメーキングの Quality of Service (QoS) 要件を満たすのに十分なメンバー予約に対して "initialize": true が設定されていることを確認してください。詳細については、Target session の初期化と QoS を参照してください。
HTTP 204 ステータスコードが返されるときにセッションが作成されないのはなぜですか?
このステータスコードは、セッションを作成した際にプレイヤーがセッションに追加されなかったことを示します。セッション作成時にプレイヤーがセッション内におらず、session-empty タイムアウトが 0 (デフォルト) の場合、セッションは作成されません。 セッションを作成する際に少なくとも 1 人のプレイヤーを含めるようにしてください。専用サーバーシナリオでは、マッチを作成しようとしているプレイヤーまたはマッチを作成する必要のあるプレイヤーを取得し、そのプレイヤーをマッチの初期プレイヤーにします。あるいは、session-empty タイムアウトを変更または削除することもできます。詳細については、「Multiplayer Session advanced topics」トピックの Session timeouts セクションを参照してください。MPSD をいつポーリングすべきですか?
タイトルは MPSD のポーリングを避ける必要があります。タイトルが MPSD セッションへの変更を検出する必要がある場合は、セッション変更イベントを購読する必要があります。詳細については、「マルチプレイヤータスク」トピックの MPSD セッション変更通知の購読 セクションを参照してください。XblMultiplayerQuerySessionsAsync を使用してセッションブラウズやマッチメーキングを実装できますか?
XblMultiplayerQuerySessionsAsync メソッドは、デバッグを支援するための頻度の低い呼び出しを目的としています。サービスの制限により、この API のセッション結果はリアルタイムではなく、より頻繁に呼び出すと不完全になる可能性があります。 セッションブラウズ機能を実装するには、マルチプレイヤーセッションブラウズ の「Search handles」セクションを参照してください。マッチメーキングを実装するには、SmartMatch マッチメーキングの使用 を参照してください。セッションに予約または招待されたプレイヤーがそれに参加しなかった場合、何が起こりますか?
これは、プレイヤーがゲームセッションの準備が完了したという通知を受け取ったときに、タイトルが実行されているかどうかによって異なります。 プレイヤーがタイトル内にいて、タイトル UI からのゲームセッション通知を受け入れない場合、XblMultiplayerSessionLeave メソッドを使用してプレイヤーをゲームセッションから削除する責任はタイトルにあります。 タイトルが制約されているか実行されていない場合、シェルはスロットが利用可能であることをプレイヤーに通知する通知を提供します。プレイヤーがシステム通知を拒否または無視した場合、MPSD はそのプレイヤーをゲームセッションから削除します。作成されたセッションがマッチメーキングで見つからないのはなぜですか?
XBOX One では、単にセッションを作成しただけでは、マッチメーキングが新しいセッションを見つけるには不十分です。マッチメーキングサービスへのセッションの広告を開始するには、マッチチケットを作成する必要があります。詳細については、マッチメーキングの概要 を参照してください。ゲームセッションに空きプレイヤースロットがあり、参加中の参加をサポートしている場合、開始後にプレイヤーがセッションを見つけられないのはなぜですか?
ゲームセッションが開始されると、マッチメーキングサービスで広告されなくなります。セッション内でプレイヤースロットが利用可能になり、arbiter (ホスト) が新しいプレイヤーを引き付けたい場合、arbiter は XblMatchmakingCreateMatchTicketAsync メソッドを呼び出して、進行中のセッションの新しいマッチチケットを作成する必要があります。チケットにより、セッションが再度広告され、より多くのプレイヤーが見つけられます。詳細については、マッチメーキングの概要 を参照してください。ゲームセッションがオープンの場合、ゲームに参加したばかりのプレイヤーは、予約を待たずに単純にセッションに参加してプレイを開始できますか?
はい。これは、タイトルがゲームセッション内のプレイヤーのサブグループを追跡するために複数のセッションを使用する場合に特に便利です。参加プレイヤーは、プレイヤーのグループを表すセッションに参加し、その後、より大きなゲームセッションに参加する必要があるかもしれません。タイトルで大規模なゲームセッションがプレイされている場合、すべてのセッションメンバーがゲーム招待通知を受け取らないのはなぜですか?
タイトルが参加を通じてセッションにプレイヤーを追加する場合、タイトルは常に XblMultiplayerSessionMember のInitializeRequested メンバーを true に設定します。これにより、MPSD にゲームを初期化ステージから移行する前に残りのセッションメンバーを待つように指示します。そうしないと、プレイヤーは参加できる時間が非常に短くなり、セッション変更の通知を見逃す可能性があります。