次の方法で共有


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

バージョン 1.0, 2020/3/1

次のシナリオ例は、大規模なマルチプレイヤー オンライン ゲームで推奨されるクロスネットワーク機能とフローを示すことを目的としています。 1 つの考えられる設計と実装のパスを示します。

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

  • オープン ゲーム ワールド

    タイトルでは、プレイヤー間の相互作用が可能なオープン ゲーム ワールドがサポートされます。 プレイヤーは、プレイヤー対環境 (PvE) 体験のオープン ワールドで緩やかにグループ化できます。 プレイヤー対プレイヤー (PvP) 体験は 1:1 で、選択した領域でのみ許可されます。

  • インスタンス化されたゲーム セクションのカスタム マッチメイキング

    タイトルでは、インスタンス化された PvP または PvE ゲームプレイ セクションに入るプレイヤーのカスタム マッチメイキング サービスを実装します。 このサービスでは、プレイヤーやプレイヤーのチームがまとめてマッチングされます。

  • 専用サーバー

    タイトルのすべてのゲームプレイは専用サーバー上で実行されます。 すべてのトラフィックも、これらのサーバーを介してルーティングされます。

  • チャット

    タイトルでは、すべてのプレイヤー間のボイス チャットとテキスト チャットがサポートされます。 グローバル テキスト チャットもサポートされています。 すべてのトラフィックは、サーバーを介してルーティングされます。

  • 消費型アイテム

    タイトルでは、購入可能な (プレミアム) ゲーム内通貨と共にゲーム内ストアを提供します。 この通貨では、プレイヤーがアイテムや消費型アイテムを購入できます。

  • DLC

    購入可能ダウンロード コンテンツには、新しいプレイヤー キャラクター クラスのロックを解除する新しいゲーム リージョンが含まれています。

タイトル サービス

この例では、プレイヤーがゲームの起動時にやり取りする最初のタイトル サービスはタイトル サインイン サービスです。 ゲームでプレイするには、プレイヤーがタイトル アカウントを作成し、それを Xbox Live アカウントにリンクする必要があります。 アカウントの作成は、タイトル内またはタイトルの Web ページで行うことができます。

アカウントのリンクは、プレイヤーの XUID を使用してタイトル固有のアカウントにリンクして行います。 タイトルで、プレイヤーはユーザー名/パスワードを使用してタイトル アカウントにサインインし、アカウントをリンクします。 XUID の使用には事前にアクセスの承認が必要で、デベロッパー アカウント マネージャーに相談する必要があります。 XUID は、送信時および保管時に保護する必要があります。

タイトルの Web ページで、タイトル アカウントでサインインしているプレイヤーは、アカウントをリンクするために Microsoft アカウントにもサインインします。 詳細については、Web サイトのアカウント リンクに関するドキュメントのトピックを参照してください。

タイトル アカウントには、ネットワークの起点に関係なくすべてのタイトル サービスがプレイヤーを処理できるようにする一意の ID (GUID) があります。 タイトル アカウントでは、プレイヤー キャラクター、進行状況、インベントリー、すべてのプレイヤー メタデータなどプレイヤーの状態もすべて格納されます。

タイトル フロー

MMO ゲームでは、クロスネットワーク機能の準拠フローは、プレイヤーがオープン ワールドにいるかインスタンス化されたゲームプレイにいるかによって決まります。 すべてのケースに以下の手順が適用されます。

  1. 権限の検証

    プレイヤーのサインイン後、タイトルでは、アクティブなプレイヤーのマルチプレイヤー権限 (254 と 189) とクロスネットワーク権限 (185) を検証します。 いずれかの権限が拒否された場合、プレイヤーはタイトルに入れず、エラー ダイアログが表示されます。 この時点で、タイトルでは、ボイス チャットとテキスト チャットが機能を適切に制限できるように、通信権限 (252) も確認されます。

  2. クロスネットワーク通知

    ゲームの初回起動時に、クロスネットワーク機能がゲームプレイに存在することがプレイヤーに通知されます。

次の手順は、オープン ゲーム ワールドに適用されます。

  1. オープン ワールドに入る

    プレイヤーは、ゲームにサインインしてタイトル サーバーに接続したときに、常にオープン ワールドに入ります。

  2. オープン ワールド MPSD セッションへの参加

    オープン ワールド ゲームプレイのタイトル サーバーは、オープン ワールド ゲームプレイのゲーム リージョンを反映する複数の MPSD セッションを作成します。 こうした MPSD セッションの 1 つ以上で、ゲームプレイ機能が有効化されます。 すべての Xbox Live ユーザーは、ユーザーのゲーム リージョンのオープン ワールド セッションに参加します。 サーバーでは、Xbox Live プレイヤーと Xbox Live 以外のプレイヤーの両方に関する情報が保持されます。

    オープン ワールド セッションでは、Xbox Live プレイヤーの途中参加と招待が可能で、サーバーがクライアントからの新しい接続を受け入れない場合にのみクローズドに設定されます。

  3. オープン ワールド ゲームプレイの有効化

    他のプレイヤーとのゲームプレイ機能は、プレイヤーの権限に応じて利用できます。

    • グローバル テキスト チャットは、通信権限セットを持つプレイヤーに対して常に有効です。
    • すべてのテキスト チャット メッセージでは、文字列検証サービスとブロック リストを使用して、攻撃的な言葉使いや用語をフィルター処理します。
    • すべてのプレイヤー (Xbox Live/Xbox Live と Xbox Live/Xbox Live 以外) 間の直接テキスト チャットまたはボイス チャットは、必要なすべてのプライバシーの確認とアクセス許可チェックの後でのみ有効になります。 詳細については、「プレイヤーのブロック、ミュート、レポート」を参照してください。

    Xbox Live 以外のフレンド関係の場合、タイトルではタイトル固有のフレンド関係が使用されます。

    Xbox Live プレイヤー間の直接の対話がタイトル サービスによって追跡され、オープン ワールド MPSD セッション内のこれらのプレイヤー間のエンカウント ID を設定するために使用されます。 これにより、互いの最近遊んだプレイヤー リストにプレイヤーが表示されるようになります。

次の手順は、インスタンス化された PvE または PvP ゲームプレイに適用されます。

  1. グループ MPSD セッション

    Xbox Live プレイヤーの場合、タイトルでは MPSD セッションを使用して Xbox Live プレイヤーを追跡します。 Xbox Live 以外のプレイヤーは、タイトルのサービスを介して追跡されます。

  2. グループ招待/途中参加

    この例では、プレイヤー グループへの参加または招待はゲーム設計により制限されます。 Xbox Live プレイヤーの途中参加と招待をサポートするため、グループ MPSD セッションが使用されます。 ゲーム内クロスネットワーク招待は、タイトル サービスによりサポートされます。

    タイトルを起動する Xbox Live の招待は、招待されたゲームプレイへの自動化された UI フローを提供し、招待されたゲーム内アクティビティ/パーティーにプレイヤーを参加させます。 参加エラーが発生した場合、関連するエラーはプレイヤーに明確に伝達されます。 このようなエラーには、ゲーム グループがフルである、アクティビティが参加不可能である、プレイヤーがオフラインであるなど場合があります。

  3. グループ マッチメイキング

    タイトルでは、グループ PvP または PvE マッチメイキング フローに対してクロスネットワーク マルチプレイヤーが有効にされます。 この例では、プレイヤーはマッチメイキング UI を使用して PvP または PvE 体験を選択し、その後他のプレイヤーと共にインスタンス化されたプレイ体験にグループ化されます。

  4. ゲーム MPSD セッションの作成と参加

    グループ マッチメイキングの結果は、Xbox Live へのサービス間呼び出しを介してサービスをマッチングすることで作成される MPSD ロビー セッションです。 すべての Xbox Live ユーザーは、このゲーム セッションに参加し、インスタンス化されたゲームプレイ中はこのセッションに残ります。

    サービスはカスタム プロパティを使用して、セッションの Xbox Live 以外のユーザーに関するヒントを追加で提供します。 これらのヒントは、フローの残りの部分でセッションの状態を設定するために、クライアント ロジックにより使用される場合があります。

  5. インスタンス化されたゲームプレイ

    すべてのプレイヤーの準備が完了した後、インスタンス化されたゲームプレイが開始されます。 この例では、Xbox Live プレイヤー間のチャットも専用サーバー経由で有効になります。

    インスタンス化されたゲームプレイ中は、プレイヤーのリストがゲーム UI で表示されます。 このリストは、タイトルのキャラクター名リストです。ゲーマータグまたはプレイヤーの他のネットワーク識別子を表示するオプションも含まれます。 Xbox Live プレイヤーは一意に強調表示されます。

    このグループ UI の例は次のとおりです。

    インスタンス化されたゲームプレイ中にプレイヤーのリストを表示するグループ UI の例。

  6. ゲームプレイの完了

    インスタンス化されたゲームプレイが完了すると、チーム プレイヤーはオープン ゲーム ワールドに戻ります。 プレイヤーは MPSD ゲーム セッションを離れ、オープン ワールド MPSD セッションをアクティビティ セッションとして設定します。

セッション管理

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

  • オープン ワールド リージョンのゲーム セッション

    大規模 MPSD セッションは、タイトル サーバー インスタンスごとに、Xbox Live へのサービス間呼び出しを介してタイトル サービスによって開始時に作成されます。 タイトル サーバー インスタンスのすべてのプレイヤーは、対応する MPSD セッションに参加します。 これらのセッションでは、最近遊んだプレイヤー リストで正しく表現されるように、互いにやり取りする Xbox Live プレイヤーのエンカウント ID がサーバーにより設定されます。

  • インスタンス化されたゲーム セッション

    このセッションは、Xbox Live へのサービス間呼び出しを介してマッチメイキング サービスによって作成されます。 これには、ゲーム セッションにおける (チームを超えた) すべての Xbox Live プレイヤーの予約が含まれます。 これは、Xbox Live プレイヤーの最近遊んだプレイヤー リストに正しく情報を表示するために使用されます。

  • グループ セッション

    このセッションは、プレイヤーがグループ (1 人のグループ) を作成するとすぐに作成されます。 これは、アクティビティ セッションで途中参加および招待をサポートするために使用されます。

    ゲーム設計によって、プレイヤーは特定のゲーム モードでは参加することができません。 これらのモードでは、途中参加と招待を無効にするために closed プロパティが使用されます。

Xbox Live 以外のプレイヤーは、MPSD セッションにおいてセッション メンバーとして直接表現されることはありません。 追跡を目的に、タイトルではカスタム セッション プロパティにプレイヤーの存在を反映します。

{{"name":"jackplayer"},{"name":"johnplayer"},{"name":"joeplayer"}}

このリストと Xbox Live セッション メンバーは、サーバー インスタンスがいっぱいかどうかの確認にも使用されます。

大規模な MPSD セッションでは、Xbox 要件を順守するためにゲームプレイ機能を有効にする必要があります。

サービス間の呼び出しの詳細については、サービス間の Xbox Live 呼び出しに関するドキュメントのトピックを参照してください。

プレイヤー ID

プレイヤーのタイトル固有のキャラクター名は、すべてのネットワークで共有されます。 キャラクター名の作成時に、文字列検証サービスを使用してすべての文字列が検証されます。 攻撃的な言葉使いや用語はブロックされます。

  • Xbox Live プレイヤーの ID

    タイトルは、すべての Xbox Live プレイヤーの Xbox Live プロフィールへのアクセスを提供します。 これは、チャットやゲームプレイにおけるやり取りで利用できるゲーム内 UI を通じて行われます。

  • Xbox Live 以外のプレイヤーの ID

    タイトルでは、Xbox Live 以外のプロフィールやプロフィール名にアクセスすることはできません。

プレイヤーのブロック、ミュート、レポート

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

  • Xbox Live プレイヤーのブロック/ミュート

    タイトルでは、check_multiple_permissions_with_multiple_target_users を使用して、マルチプレイヤーや別の Xbox Live プレイヤーとのチャットの権限と、Xbox Live 以外のプレイヤー/Xbox Live 以外のフレンドのプレイヤー クラスをチェックします。 ブロックとミュートは、プレイヤーのプロフィール UI を通じて利用可能です。

    同じゲームプレイ内の他の Xbox Live プレイヤーのブロック/ミュート状態は、ゲームプレイの移行時 (別のゲームプレイ モードや場所に移動するなど) または 5 分後のうち、いずれか早い方の時間にチェックされます。

  • Xbox Live 以外のプレイヤーのブロック/ミュート

    タイトルでは、Xbox Live 以外のプレイヤーのブロックとミュートをサポートするために、タイトル内ブロック リストが使用されます。 このリストはタイトル サービス上で管理され、マルチプレイヤーのアクセス許可が確認されます。 カスタム タイトル UI を通じてタイトル内で Xbox Live 以外のプレイヤーをミュートできる必要があります。

  • Xbox Live プレイヤー レポート

    タイトルでは、プレイヤーのレポートも可能です。 Xbox Live の場合、レポートは、タイトルでアクセス可能なプロフィール UI を通じてプレイヤーによって行われます。 Xbox Live エンフォースメントによってプレイヤー レポートが処理されます。

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

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

マーケットプレース

Xbox Live と他のマルチプレイヤー ネットワークでの仮想通貨の購入は、シナリオによってタイトル サービスで追跡されます。

  • 仮想通貨

    プレイヤーは、すべてのプラットフォームで仮想通貨とアイテムの統合ウォレットを持ちます。

  • ダウンロード コンテンツ

    ダウンロード コンテンツ (DLC) により、ゲームの新しいリージョンにアクセスできるようになります。 Microsoft Store は、Xbox Live プラットフォームでの購入に使用されます。

    プレイヤーは対応する DLC リージョンにのみ入ることができ、各自のストアのリージョンの使用権を持つ他のキャラクターとプレイすることができます。

実績

タイトルには、オープン ワールドとインスタンス化されたゲームプレイ アクションに基づく実績があります。 実績の進行状況には、クロスネットワーク ゲームプレイ体験が含まれます。 タイトルには、クロスネットワーク ゲームプレイのみに限定される実績は含まれません。

プレイヤーの進行状況

プレイヤーの進行状況は、タイトルのすべてのバージョン間で共有されます。 この目的では、複数のマルチプレイヤー ネットワークとカスタム タイトル サービスにリンクされたカスタム タイトル アカウントが使用されます。

ゲーム録画/配信

タイトルでは、オープン ワールドとインスタンス化されたゲームプレイのゲーム録画とスクリーンショットが可能ですが、すべてのテキスト チャットは画像バッファーから削除されます。

ランキング

タイトルでは、タイトル内の PvP マッチや PvE チャレンジのカスタム ランキングがサポートされています。 これらのランキングは、タイトル サービスによって維持されます。 このサービスは、クライアントで読み取り可能なプレイヤー名に解決される GUID でプレイヤーを識別します。