次の方法で共有


クロスネットワーク マルチプレイヤーの実装例: マルチプレイヤー ゲーム

このトピックでは、従来のマルチプレイヤー オンライン バトル アリーナ (MOBA) ゲームにおけるクロスネットワークの機能と流れを示すシナリオ例について説明します。 これは、設計と実装の道筋の 1 つの可能性を示すものです。 この記事では、XR-007: クロスネットワーク プレイ、データの利用、コンパニオン アプリの対話 をサポートしています。

このシナリオでは、タイトルは次のマルチプレイヤー機能をサポートします。

機能 説明
カスタム マッチメイキング タイトルでは、カスタム マッチメイキング サービスが実装されます。 このサービスでは、まず (必要に応じて) プレイヤーをチームとマッチングしてから、チームとプレイヤーを一緒にマッチングします。
専用サーバー タイトルのすべてのゲームプレイは専用サーバー上で実行されます。 すべてのトラフィック (チャット トラフィックを含む) も、これらのサーバーを介してルーティングされます。
カスタム ランキング タイトル サービスでは、プレイヤーの進行状況に関する詳細情報を含むカスタム ランキングを実装します。
複数のゲーム モード/設定 タイトルは、協力対チームプレイなど、複数のゲーム モードに対応しています。 プレーヤーは、マップ、ゲーム サイズ、ルール、またこれらのモードのその他の設定を構成できます。
ゲーム内通貨 タイトルでは、購入可能な (プレミアム) ゲーム内通貨と共にゲーム内ストアを提供します。 この通貨により、プレイヤーはチームのパワーアップを購入できます。 プレーヤーは、そのキャラクターの外観用のアイテムを購入できます。
DLC 購入可能なダウンロード コンテンツ (DLC) には、新しいマップや追加のキャラクターが含まれます。

タイトル サービス

このシナリオ例のカスタム タイトル サービスの 1 つは、認証サービスです。 この認証サービスは、Xbox Live (またはその他のマルチプレイヤー ネットワーク) アカウントとタイトル固有のプレイヤー アカウントのアカウント リンクに使用されます。 プレイヤーが初めて認証サービスに接続すると、アカウント リンクが暗黙的に実行され、新しいクロスネットワーク プレイヤー ID が作成されます。

Xbox Live では、プレイヤーの XUID が一意のプレイヤー ID として使用され、固有のタイトル アカウントにリンクされます。 XUID アクセスは、使用前に承認されなければならず、開発者アカウントマネージャー (DAM) と話し合う必要があります。タイトル専用アカウントには、グローバルに一意な識別子 (GUID) があり、ネットワークの起源や保存されているプレーヤーのメタデータに関係なく、すべてのタイトル サービスでプレーヤーを扱うことができます。 このシナリオ例では、マルチプレイヤー ネットワークと基本的なゲームプレイのプレイヤー統計は、このアカウントに格納されます。

注意

タイトル サービスでは、タイトル固有のアカウントのマルチプレイヤー ネットワーク情報を使用して、マルチプレイヤー機能を Xbox Live プレイヤーだけに制限できるようにします。

タイトル フロー

通常のマルチプレイヤー ゲームでは、プレイヤーがマルチプレイヤー モードに入った時点で、クロスネットワーク機能に対応したフローが始まります。 このシナリオ例では、タイトルは次の手順を実行します。

  1. 権限を検証します。

    マルチプレイヤー セッションを開始する前に、タイトルでマルチプレイヤー特権 (254 と 189) を検証します。 特権が拒否された場合、タイトルはマルチプレイヤー モードに入りません。 タイトルでは、通信特権 (252) を確認し、音声とテキスト チャットを適宜終了または無効化する必要もあります。

  2. クロスネットワーク権限を検証します。

    このシナリオ例では、タイトルによってクロスネットワーク ゲームプレイが既定のマッチメイキング体験に統合されます。 プレイヤーがマッチメイキング体験に入ると、タイトルによってクロスネットワーク プレイ権限 (185) が検証されます。 権限が拒否された場合は、Xbox Live 内のマッチメイキングのみ可能です。 プレイヤーがクロスネットワーク ゲームプレイに初めて配置されたときに、クロスネットワーク ゲームプレイがアクティブであることを示す通知がタイトルによって提示されます。

  3. チームのマッチメイキング。

    タイトルのマッチメイキング サービスでは、マッチメイキング ルールに基づいて、クロスネットワーク プレイヤーからチームが作成されます。

  4. チームやロビーのマルチプレイヤー セッション ディレクトリ (MPSD) セッションを作成し、参加することができます。

    タイトルのマッチメイキング サービスでは、Xbox Live へのサービス間呼び出しにより、マルチプレイヤー セッション ディレクトリ (MPSD) ロビー セッションが作成されます。 Xbox Live のすべてのプレーヤーは、このロビー セッションに参加します。 このサービスでは、カスタム プロパティを使用してセッション内で Xbox Live を使用していないプレイヤーに関するヒントを追加で提供しています。 これらのヒントは、次の手順でセッションの状態を設定するために、クライアント ロジックにより使用される場合があります。

  5. チームやロビーの MPSD セッションを設定します。

    Xbox Live クライアントでは、ロビー セッションがアクティビティ セッションとして設定されます。 セッションの参加可能性とクローズド ステータスは、クロスネットワーク プレイヤーのステータスに従って設定する必要があります。 Xbox Live プレイヤーは、クロスネットワーク チームに残っている限り、このセッションに残ります。 セッションが一杯の (または以降のフローで一杯になった) 場合は、サービスまたはロビー アービターがセッションをクローズドに設定する必要があります。 それ以上プレイヤー スロットがないアクティビティ セッションを参加可能にしてはなりません。

  6. チーム ロビー。

    チーム ロビーには、Xbox Live プレイヤーと他のマルチプレイヤー プラットフォームのプレイヤーの両方が存在します。 ボイス チャットは、カスタム タイトル サービスを通じて Xbox Live プレイヤー間で有効になります。 すべてのプレイヤー (Xbox Live/Xbox Live と Xbox Live/ Xbox Live を使用していない) 間のボイス チャットは、必要なすべてのプライバシーと許可の確認を検証した後にのみ有効になります。 Xbox Live を使用していないフレンドとの関係については、Xbox Live という用語を使用していないフレンドのネットワーク フレンド関係データを使用します。 チームロビーでは、Xbox Live プレイヤーと Xbox Live を使用していないプレイヤーは、タイトルのアカウント ID で一意に識別されます。 すべてのプレイヤーの識別子には、ゲーマータグ、および他のマルチプレイヤー ネットワークの同等のプレイヤー名が表示されます。

    次のスクリーンショットは、ロビーに表示されたプレーヤー ロスターの UI の例を示しています。

    クロスネットワーク ロスター UI を示すスクリーンショット

    ロビー UI では、チームリーダーが次の手順として、他のチームとのゲーム セッションを探すためのマッチ プロパティ (レベルやカスタム ルールなど) を選択し、試合を開始します。

  7. ゲーム セッションのマッチメイキング。

    既存のクロスネットワーク チームは、チーム リーダーによって追加のマッチ プロパティと共にマッチメイキングに送信されます。 これらのプロパティは最適なマッチを特定するために使用され、マッチに対して 2 つのチームの新しいセットが生成されます。 この時点で、マッチ サービスは両方のチームの専用サーバーも識別します。

  8. ゲーム MPSD セッションを作成して参加します。

    匿名ゲーム セッション マッチメイキングの結果とは、Xbox Live へのサービス間呼び出しを介してマッチ サービスまたは専用サービスによって作成される MPSD ゲーム セッションです。 すべての Xbox Live プレイヤーがこのゲーム セッションに参加しており、サービスはカスタム プロパティを使用して、セッション内で Xbox Live を使用していないプレイヤーに関するヒントを追加で提供します。 これらのヒントは、セッションの状態を設定するために、クライアント ロジックにより使用される場合があります。

  9. 専用サーバーに接続します。

    最後の手順では、すべてのクライアントが専用サーバーに安全に接続し、クロスネットワーク ゲームプレイを開始します。 マルチプレイヤー ネットワーク間のすべてのトラフィックは、専用サーバー経由でルーティングされます。 ピアツーピア接続は許可されません。

  10. ゲームプレイの完了。

    ゲームプレイ マッチが終了した後、次の表に示す操作をチームで実行できます。

    操作 説明
    マッチのリプレイ プレイヤーはサーバーに接続されたままになり、MPSD ゲーム セッションに残ります。 プレイヤーは、新しいゲームプレイ マッチを開始します。
    新しい対戦相手を検索します。 プレイヤーはサーバーから切断し、MPSD ゲーム セッションを離れます。 プレイヤーはロビー セッションに残り、次のラウンドのマッチメイキングのロビー画面に戻ります。

セッション管理

すべての Xbox 要件を満たすために、タイトルではXbox Live プレイヤー用に次の表のような 2 つの MPSD セッションを作成します。

セッション 説明
ロビー セッション このセッションは、Xbox Live へのサービス間呼び出しを介してマッチメイキング サービスによって作成されます。 セッションの作成時には、チーム内のすべての Xbox Live プレーヤーの予約が含まれます。 これは、プレイヤーが招待の送信または途中参加を行うことができるセッションです。 招待と途中参加では、Xbox Live システムの使用が必須であり、ネットワークを越えて使用することはできません。 そのため、すべての Xbox Live プレイヤーは、このセッションをアクティビティ セッションとして設定します。
ゲーム セッション このセッションは、Xbox Live へのサービス間呼び出しを介してマッチメイキング サービスによって作成されます。 ゲームセッション(チーム間での)に参加しているすべての Xbox Live プレイヤーの予約が含まれており、Xbox Live プレイヤーのマルチプレイヤー アクティビティの追跡に使用されます。

Xbox Live 以外のプレイヤーは、MPSD セッションにおいてセッション メンバーとして直接表されることはありません。 以下のコード例のように、タイトルはカスタム セッション プロパティでそのプレゼンスのみを追跡します。

{{"name":"kumarplayer"},{"name":"spencerplayer"},{"name":"eliseplayer"}}

このリストと Xbox Live のセッション メンバーを使って、セッションが一杯かどうかを判断することができます。 一杯の場合に正しく動作させるには、Xbox Live の招待と途中参加の機能を無効にする必要があります。 プレイヤー (またはサーバー) は、この機能を無効にするためにセッションに closed プロパティを設定します。

注意

ゲームプレイ中のプレイヤーを追跡するために使用される MPSD セッションは、Xbox の要件に準拠するために gameplay の機能を有効にする必要があります。

プレーヤーの通信のブロックとレポート

タイトルのプレイヤーのブロックは、タイトル レベルでサポートされています。

Xbox Live プレイヤーのブロック

タイトルは、XblPrivacyBatchCheckPermissionAsync を使用してマルチプレイヤーの特権を確認します。 タイトルでは、他の Xbox Live プレイヤーとのチャットや、Xbox Live を使用していないプレイヤー、Xbox Live を使用していないフレンドのプレイヤー クラスにも使用されています。 タイトルでは、XGameUiShowPlayerProfileCardAsync を使用して別のプレイヤーのプロフィールにもアクセスできます。 プレーヤーは、プレーヤー プロファイル UI の他のプレーヤーをブロックできます。

Xbox Live を使用していないプレーヤーのブロック

タイトルでは、Xbox Live を使用していないプレイヤーとの通信のブロックをサポートするために、タイトル内ブロック リストが使用されます。 このリストはタイトル サービス上で管理され、マルチプレイヤーのアクセス許可が確認されます。 クロスネットワーク チャットは、既定では使用できません。 次のスクリーンショットのように、Xbox Live を使用していないプレイヤーは、カスタム タイトル UI を通してタイトルでブロックすることができます。

プレーヤーの通信ブロックを示すスクリーンショット

Xbox Live プレイヤー レポート

タイトルでは、プレイヤーのレポートも可能です。 Xbox Live の場合、プレーヤーはプレーヤー プロファイル UI 経由で他のプレーヤーをレポートします。 Xbox Live エンフォースメントによってプレイヤー レポートが処理されます。

Xbox Live 以外のプレーヤーのレポート

Xbox Live 以外のプレイヤーの場合、タイトルではカスタム レポート UI フローが提供されます。 タイトルでは、プレイヤーのレポートをタイトルに応じて処理し、他のマルチプレイヤーネットワークによるガイドラインに基づいています。

Microsoft Store

Xbox Live と他のマルチプレイヤー ネットワークでのゲーム通貨の購入は、タイトル サービスで追跡されます。 タイトルでは、すべてのタイトル バージョン間で共有される仮想通貨ウォレットとゲーム内アイテム インベントリーが提供されます。 次の表の制限は、Xbox Live ではないタイトル バージョンに適用されます。

制限 説明
プレイヤー スキン プレイヤーは、ゲーム内通貨でのみプレイヤー スキンを購入することができます。 ゲーム内通貨は、すべてのネットワークで使用可能な統一ゲーム内ウォレットで管理されます。 すべてのプレイヤー スキンは、すべてのタイトル バージョンで同じです。
消耗品アイテム 消耗品の購入は、ゲーム内通貨でのみ可能です。 通貨と同様に、消費型アイテムは統一ゲーム内インベントリーで管理されます。
ダウンロード コンテンツ Xbox Live プラットフォームでは、ダウンロード コンテンツ (新しいマップとキャラクターの種類) は Microsoft Store で管理されます。 他のストアの使用権は共有されません。 すべてのプレイヤーは、同じマップで一緒にプレイするために、各自のストアに有効な使用権を持っている必要があります。 一致する権利を持っていないプレイヤーにとっては、購入されていないキャラクターの種類が表示されますが、プレイすることはできません。

実績

タイトルには、プレイしたマルチプレイヤー ゲームなど、マルチプレイヤー操作に基づく複数の実績があります。 この (および同様の) 実績についての実績進行状況には、クロスネットワーク マルチプレイヤー ゲーム セッションが含まれます。 タイトルには、クロスネットワーク ゲームプレイに限定される実績は含まれません。 Xbox One (またはそれ以降)のタイトル実績の場合、他のタイトル バージョンでのゲームプレイによっても実績を上げることが可能です。

プレイヤーの進行状況

プレイヤーの進行状況は、タイトルのすべてのバージョン間で共有されます。 カスタム タイトル アカウントには、プレイヤーの進行状況の情報が含まれます。

ゲーム録画と配信

タイトルでは、ゲーム録画とスクリーンショットに加えて、クロスネットワーク マルチプレイヤー マッチの配信のサポートが提供されます。

ランキング

タイトルのランキングは、Xbox Live のランキングを超える広範なランキング機能を提供するタイトル サービスを通じて実装されます。 サービスでは基になる複数のランキングが作成され、それらが並列に更新されます。マルチプレイヤー ネットワークごとに 1 つのランキングと、すべてのマルチプレイヤー ネットワークからの結果を結合した 1 つのマージされたランキングがあります。 クロスネットワーク マルチプレイヤーが有効になっている場合は、以下のスクリーンショットのように、統合されたランキングが表示されます。

統合されたランキングを示すスクリーンショット

注意

すべてのプレイヤーは、マルチプレイヤー ロビーと同じ方法で表されます。

プレイヤーがクロスネットワーク ゲームプレイ機能を無効にしている場合、Xbox Live だけのランキングが表示されます。

タイトル固有のアカウントを使用して、ランキング サービスですべてのプレイヤーが内部的に識別されます。 Xbox Live プレイヤーの外部識別子は、クエリしているタイトル インスタンスによって異なります。

  • Xbox Live タイトル インスタンスでは、XUID が返され、クライアントは検索を実行してプレイヤーのゲーマータグ文字列を特定します。

  • タイトルのインスタンスが Xbox Live でない場合は、プレイヤーのゲーマータグまたは DisplayName 文字列が返されます。 サービスは、Xbox Live へのサービス間呼び出しからこの文字列を取得し、最大 4 時間キャッシュします。