ゲームセッションキューの設計 - Amazon GameLift

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ゲームセッションキューの設計

このトピックでは、レイテンシーを最小限に抑えてプレイヤーエクスペリエンスを提供し、ホスティングリソースを効率的に使用するキューを設計する方法について説明します。ゲームセッションキューとその仕組みの詳細については、「ゲームセッションプレイスメント用の Amazon GameLiftt キューのセットアップ」を参照してください。

Amazon GameLift の以下の機能にはキューが必要です。

キューのスコープを定義します。

ゲームのプレイヤー集団には、一緒にプレイしてはいけないプレイヤーグループが存在する可能性があります。例えば、ゲームを 2 つの言語でパブリッシュする場合、各言語には独自のゲームサーバーが必要です。

プレイヤー集団のゲームセッション配置を設定するには、プレイヤーセグメントごとに個別のキューを作成します。各キューをスコープ設定して、プレイヤーを正しいゲームサーバーに配置します。キューのスコープ設定の一般的な方法には、次のようなものがあります。

  • 地理的なロケーション別。複数の地理的エリアにゲームサーバーをデプロイする場合、プレイヤーのレイテンシーを削減するために、ロケーション別にプレイヤー用のキューを構築できます。

  • ビルド/スクリプトのバリエーション別。ゲームサーバーのバリエーションが複数ある場合は、同じゲームセッションでプレイできないプレイヤーグループをサポートしている可能性があります。例えば、ゲームサーバーのビルドまたはスクリプトは、異なる言語やデバイスタイプなどをサポートすることがあります。

  • イベントタイプ別。特別なキューを作成して、トーナメントやその他の特別なイベント参加者のゲームを管理できます。

プレイヤーレイテンシーポリシーを作成する

プレイスメントリクエストにプレイヤーレイテンシーデータが含まれている場合、アルゴリズムは、すべてのプレイヤーに対して、最小のレイテンシーロケーションのゲームセッションを検出します。平均プレイヤーレイテンシーに基づいてゲームセッションを配置することで、Amazon GameLift は多くのプレイヤーを高いレイテンシーのゲームに配置することを防ぎます。ただし、Amazon GameLift はそれでもプレイヤーを非常に高いレイテンシーで配置します。このようなプレイヤーに対応するため、プレイヤーレイテンシーポリシーを作成します。

プレイヤーレイテンシーポリシーは、Amazon GameLift がリクエストされたゲームセッションを、リクエスト内のプレイヤーが最大値を超えるレイテンシーを経験するロケーションに配置すのを防止します。また、プレイヤーレイテンシーポリシーは、Amazon GameLift がゲームセッションリクエストをレイテンシーの高いプレイヤーとマッチングしないようにすることもできます。

ヒント

グループ内のすべてのプレイヤーで同様のレイテンシーを必要とするなど、プレイヤーのレイテンシーのルールを具体的に管理したい場合は、Amazon GameLift FlexMatch を使用して、レイテンシーベースのマッチメイキングルールを作成します。

例えば、タイムアウトが 5 分間で、次のプレイヤーレイテンシーポリシーのあるキューについて検討してみましょう。

  1. 120 秒かけて、すべてのプレイヤーのレイテンシーが 50 ミリ秒未満のロケーションを検索します。

  2. 120 秒かけて、すべてのプレイヤーのレイテンシーが 100 ミリ秒未満のロケーションを検索します。

  3. 次に、キューのタイムアウトまでの残り時間を使って、すべてのプレイヤーレイテンシーが 200 ミリ秒未満のロケーションを検索します。

前に説明したキューを設定するコンソールの画面例。

マルチロケーションキューを構築する

すべてのキューにマルチロケーション設計を推奨します。この設計により、プレイスメント速度とホスティングの耐障害性が向上します。プレイヤーレイテンシーデータを使用して、最小のレイテンシーでプレイヤーをゲームに参加させるには、マルチロケーション設計が必要です。スポットインスタンスフリートを使用するマルチロケーションキューを構築する場合は、「チュートリアル:スポットインスタンスのゲームセッションキューを設定する」の手順に従ってください。

マルチロケーションキューを作成する 1 つの方法は、マルチロケーションフリートをキューに追加することです。こうすることで、キューは、任意のフリートのロケーションにゲームセッションを配置できます。冗長性を保つため、設定やホームロケーションが異なる他のフリートを追加することもできます。マルチロケーションのスポットインスタンスのフリートを使用している場合は、ベストプラクティスに従って、同じロケーションを含むオンデマンドインスタンスのフリートを含めてください。

次の例では、基本的なマルチロケーションキューの設計プロセスについて説明します。この例では、2 つのフリートを使用します。1 つはスポットインスタンスフリートで、もう 1 つはオンデマンドインスタンスフリートです。各フリートにはプレイスメントロケーション us-east-1us-east-2 ca-central-1、および us-west-2 に次の AWS リージョン があります。

マルチロケーションフリートを含む基本的なマルチロケーションキューを作成するには
  1. キューを作成するロケーションを選択します。クライアントサービスをデプロイした場所の近くのロケーションにキューを配置することで、リクエストの待ち時間を最小限に抑えることができます。この例では、キューを us-east-1 に構築します。

  2. 新しいキューを作成し、キューの送信先としてマルチロケーションフリートを追加します。送信先の順序によって、Amazon GameLift がゲームセッションを配置する方法が決まります。この例では、最初にスポットインスタンスフリートをリストし、オンデマンドインスタンスフリートを 2 番目にリストしています。

  3. キューのゲームセッションのプレイスメント優先順位を定義します。この順序により、キューが利用可能なゲームサーバーを最初に検索するロケーションが決まります。この例では、デフォルトの優先順序を使用します。

  4. ロケーションの順序を定義します。ロケーションの順序を定義しない場合、Amazon GameLift はロケーションをアルファベット順に使用します。

キューのプレイスメントロケーションと送信先を設定するコンソールの画面例 (前の手順で説明)。
[ゲームセッションの配置優先順位] と [ロケーションの順序] を設定するコンソールの画面例 (前の手順で説明)。

ゲームセッションプレイスメントに優先順位を付ける

Amazon GameLift は FleetIQ アルゴリズムを使用して、順序付けられた一連の基準に基づいて新しいゲームセッションをどこに配置するかを決定します。デフォルトの優先順位を使用することも、順序をカスタマイズすることもできます。

デフォルトの優先順序

プレイヤーレイテンシーデータを含むプレイスメントリクエストの場合、FleetIQ はゲームセッションのプレイスメント条件を次のデフォルト順序で優先順位付けします。

  1. [レイテンシー] – リクエスト内のすべてのプレイヤーの最小平均レイテンシー。

  2. [コスト] – レイテンシーが複数のロケーションで等しい場合、最小のホスティングコスト。ホスティングコストは、主にインスタンスタイプとロケーションの組み合わせに基づいています。

  3. [送信先] – レイテンシーとコストがマルチロケーションで等しい場合は、送信先の順序。FleetIQ は、キュー構成にリストされている順番に基づいて送信先の優先順位を付けます。

  4. [ロケーション] – レイテンシー、コスト、および送信先が複数のロケーションにおいて等しい場合はロケーションの順序。FleetIQ は、キュー構成にリストされている順番に基づいてロケーションの優先順位を付けます。

カスタム優先順序

[Amazon GameLift コンソール] でキューの優先順位をカスタマイズするには、優先度の値を希望の位置にドラッグします。AWS Command Line Interface (AWS CLI) を使用してキューの優先順位をカスタマイズするには、create-game-session-queue コマンドと --priority-configuration オプションを使用します。このコマンドを使用して新しいキューを作成したり、既存のキューを更新できます。

FleetIQ アルゴリズムは、デフォルトの順序に基づいて、明示的に言及されていない条件をリストの最後に追加します。優先度設定にロケーション基準を含める場合は、ロケーションの順序付きリストも指定する必要があります。

必要に応じて複数のキューを設計する

ゲームとプレイヤーによっては、複数のゲームセッションキューを作成する必要がある場合があります。ゲームクライアントサービスが新規のゲームセッションをリクエストする際に、どのゲームセッションキューを使用するか指定されます。複数のキューを使用するかどうかを判断するには、以下を検討してください。

  • ゲームサーバーのバリエーション ゲームサーバーのバリエーションごとに個別のキューを作成することができます。キュー内のすべてのフリートは、互換性のあるゲームサーバーをデプロイする必要があります。これは、キューを使用してゲームに参加するプレイヤーが、キュー内の任意のゲームサーバーでプレイできる必要があるためです。

  • 異なるプレイヤーグループ。Amazon GameLift がプレイヤーグループに基づいてゲームセッションを配置する方法をカスタマイズできます。たとえば、特別なインスタンスタイプまたはランタイム設定を必要とする特定のゲームモードに合わせてキューをカスタマイズする必要がある場合があります。または、トーナメントやその他のイベントのプレースメントを管理するために特別なキューが必要な場合があります。

  • ゲームセッションのキューメトリクス。ゲームセッションプレイスメントメトリクスの収集方法に基づいて、キューを設定できます。詳細については、「キューの Amazon GameLift メトリクス」を参照してください。

キューメトリクスの評価

キューのパフォーマンスを評価するには、メトリクスを使用します。キューに関係するメトリクスは、Amazon GameLift コンソール または Amazon CloudWatch で表示できます。キューメトリクスのリストと説明については、「キューの Amazon GameLift メトリクス」を参照してください。

キューメトリクスは、以下に関する分析情報を提供します。

  • [キュー全体のパフォーマンス] – キューメトリックは、キューがプレイスメントリクエストにどの程度正常に応答したかを示します。これらのメトリクスは、プレイスメントが失敗するタイミングと理由を特定するのにも役立ちます。フリートを手動でスケールしたキューの場合、AverageWaitTime および QueueDepth メトリクスはキューのキャパシティをいつ調整する必要があるか示す場合があります。

  • [FleetIQ アルゴリズムのパフォーマンス — FleetIQ アルゴリズムを使用するプレイスメントリクエストの場合、メトリクスはアルゴリズムが理想的なゲームセッションプレイスメントを見つける頻度を示します。プレイスメントでは、プレイヤーのレイテンシーが最も低いリソースや、コストが最も低いリソースを優先的に使用することができます。Amazon GameLift が理想的なプレイスメントを発見できない一般的な理由を特定するエラーメトリクスもあります。メトリクスの詳細については、「Amazon CloudWatch で Amazon GameLift をモニタリングする」を参照してください。

  • [ロケーション固有のプレイスメント] – マルチロケーションキューの場合、メトリクスはロケーション別の正常なプレイスメントを示します。FleetIQ アルゴリズムを使用するキューの場合、このデータはプレイヤーのアクティビティの発生箇所に関する有益な分析情報を提供します。

FleetIQ アルゴリズムのパフォーマンスメトリクスを評価する場合は、以下のヒントを参考にしてください。

  • キューの理想的なプレイスメントを発見する比率を追跡するには、PlacementsSucceeded メトリクスと最小レイテンシーおよび最低料金に関する FleetIQ のメトリクスを併用します。

  • キューが理想的なプレイスメントを見つける比率を上げるには、以下のエラーメトリクスを確認してください。

    • FirstChoiceOutOfCapacity が高い場合は、キューのフリートに合わせてキャパシティスケーリングを調整してください。

    • FirstChoiceNotViable エラーメトリクスが高い場合は、スポットインスタンスフリートを確認してください。特定のスポットインスタンスタイプの中断率が高すぎる場合、スポットフリートは「有効でない」とみなされます。この問題を解決するには、キューを変更して異なるインスタンスタイプのスポットインスタンスのフリートを使用します。ロケーションごとに異なるインスタンスタイプのスポットインスタンスフリートを含めることをお勧めします。