このガイダンスは、開発者が Amazon GameLift Testing Toolkit を使用して、マルチプレイヤーゲームをテスト、可視化、最適化するのに役立ちます。開発者は、このツールキットを使用して Amazon GameLift インフラストラクチャのトラブルシューティング、デバッグ、および調整を行うことができます。このガイダンスでは、実際のプレイヤーと同じコードを実行する仮想プレイヤーを使用するオプション機能があるため、開発者はローンチの前にゲームが適切に動作するかどうかをテストできます。
アーキテクチャ図
ステップ 1
Amazon CloudFront が、Amazon Simple Storage Service (Amazon S3) に保存されているツールキットウェブコンソールへのアクセスを提供します。Amazon Cognito ユーザープールでツールキットコンソールユーザーを認証します。
ステップ 2
ウェブコンソールが Amazon API Gateway WebSocket API に接続します。この API は、AWS Lambda 関数を呼び出してリクエストを処理し、データを Amazon DynamoDB に保存します。
ステップ 3
Lambda 関数で Amazon GameLift インフラストラクチャを直接クエリして更新できます。
ステップ 4
ゲームリスナーが Amazon EventBridge から GameLift イベントを受け取り、AWS Step Functions を使用して、GameLift と Amazon CloudWatch からインフラストラクチャの更新をポーリングおよび受信します。
ステップ 5
ゲームリスナーが、カスタム EventBridge イベントバスを介して、集約されたイベントデータを送信します。 Lambda 関数がイベントを受信し、データを DynamoDB に保存します。この関数は API Gateway を呼び出し、接続されたウェブコンソールユーザーにデータを送信して表示します。
ステップ 6
ウェブコンソールのユーザーは、AWS Fargate で仮想プレイヤータスクを起動して、実際のゲームクライアントをシミュレートすることもできます。
ステップ 7
各仮想プレイヤータスクは Amazon Cognito のゲスト ID をリクエストし、ゲームクライアントサービス API Gateway に接続してマッチメイキングをリクエストします。
ステップ 8
Lambda 関数が GameLift FlexMatch を呼び出してマッチメイキングプロセスを開始し、成功したマッチをゲームセッションキューを使用してフリートに配置します。
ステップ 9
仮想プレイヤータスクが GameLift フリートインスタンスに接続され、ゲームセッションを開始します。
Well-Architected Pillars
AWS Well-Architected フレームワークは、クラウドでシステムを構築する際に行う決定の長所と短所を理解するのに役立ちます。フレームワークの 6 つの柱により、信頼性が高く、安全かつ効率的で、費用対効果が高く、持続可能なシステムを設計および運用するためのアーキテクチャのベストプラクティスを学ぶことができます。AWS マネジメントコンソールで無料で提供されている AWS Well-Architected Tool を使用し、各柱の一連の質問に回答することで、これらのベストプラクティスに照らしてワークロードを確認できます。
上記のアーキテクチャ図は、Well-Architected のベストプラクティスを念頭に置いて作成されたソリューションの例です。完全に Well-Architected であるためには、可能な限り多くの Well-Architected ベストプラクティスに従う必要があります。
-
オペレーショナルエクセレンス
ツールキットとサンプルゲームのどちらも Infrastructure as Code で完全にデプロイされているため、手動での作業によるエラー、および変更をデプロイする労力が削減します。
-
セキュリティ
API Gateway 上のサーバーレスウェブコンソール API は、Amazon Cognito ユーザープールに対する AWS Identity and Access Management (IAM) ベースの認証で保護されます。
API Gateway 上のサーバーレスサンプルゲームバックエンドは、IAM ベースの認証で保護され、プレイヤーのゲスト ID を安全に検証します。
GameLift 上のゲームサーバーでは、クライアント/サーバー通信に使用するポートへのアクセスのみが許可されます。バックエンド Lambda 関数は必要なサービスにのみアクセスします。
-
信頼性
データは DynamoDB テーブルに保存され、オンデマンドの容量割り当てを利用して、需要の変化に応じて自動的にスケールします。
ソリューションバックエンドサービスは、インスタンスを自動的にスケールする Lambda を使用します。
サンプルゲームバックエンドは、需要の変化を処理する GameLift Target ベースの自動スケーリングをサポートしています。
-
パフォーマンス効率
API Gateway、Lambda、DynamoDB、Fargate などのマネージドサーバーレステクノロジーを活用することで、請求は使用したリソースに対してのみ発生するため、ソリューションを管理するために必要な運用上の労力を削減することができます。
このソリューションは任意のリージョンにデプロイ可能で、CloudFront を利用してウェブコンソールのエンドユーザーのレイテンシーを短縮します。
-
コストの最適化
仮想プレイヤータスクを Fargate Spot で起動することで、テストのコストを削減できます。
ウェブコンソールとサンプルゲームバックエンドはサーバーレステクノロジーを利用しているため、請求が発生するのは使用したリソースに対してのみです。
ウェブコンソールバックエンドは Lambda と API Gateway のネイティブスケーリング機能を利用します。DynamoDB テーブルは、オンデマンドの容量割り当てを使用してリソースが需要に一致するようにします。
サンプルゲームバックエンドは、必要なリソースを最小限に抑える GameLift Target ベースの自動スケーリングをサポートします。
-
持続可能性
このガイダンスはマネージドサービスを幅広く使用しているため、高い平均使用率を維持する責任は AWS にあります。
サンプルゲームバックエンドは、必要なリソースを最小限に抑える GameLift Target ベースの自動スケーリングをサポートします。ゲームセッションを最小数のサーバーインスタンスに配置することで、リソース使用率は一貫して高く保たれます。
マネージドサービスを広く活用することで、ガイダンスは環境への個々の影響を削減します。
ゲームサーバーをスポットフリートで起動し、仮想プレイヤータスクを Fargate Spot で起動することによって、未使用のリソースによる持続可能性の影響をさらに削減できます。
関連コンテンツ
免責事項
サンプルコード、ソフトウェアライブラリ、コマンドラインツール、概念の実証、テンプレート、またはその他の関連技術 (私たちの担当者から提供される前述のものを含む) は、AWS カスタマーアグリーメント、またはお客様と AWS との間の関連文書契約 (いずれか該当する方) に基づき、AWS コンテンツとしてお客様に提供されるものです。お客様は、この AWS コンテンツを、お客様の本番アカウント、または本番データもしくはその他の重要なデータで使用すべきではありません。お客様は、サンプルコードなどの AWS コンテンツを、お客様固有の品質管理手法および基準に基づいて、本番グレードでの使用に適したテスト、セキュリティ確保、および最適化を行う責任を負います。AWS コンテンツのデプロイには、Amazon EC2 インスタンスの実行や Amazon S3 ストレージの使用など、AWS の課金対象リソースを作成または使用するための AWS 料金が発生する場合があります。