[SEO 小見出し]
このガイダンスは、ゲーム開発者が Amazon GameLift とサーバーレスバックエンドコンポーネントを使用して AWS 上で永続的なワールドゲームを構築し、仮想世界をホストするために役立ちます。このアーキテクチャは、マネージドコンポーネントとサーバーレスコンポーネントを使用してオペレーションの労力を軽減し、プレイヤーの需要に合わせてスケールします。開発者は、このアーキテクチャを使用して、macOS と Windows で永続的な仮想世界ゲーム開発を始めることができます。このガイダンスには、Infrastructure as Code (IaC) の自動化、依存関係を設定するための設定スクリプト、Unity クライアント/サーバー実装のサンプルが含まれています。
アーキテクチャ図
注: ステップ A~C はシステムのバックエンドを、ステップ 1~9 はフロントエンドを表します。
ステップ A
Amazon Eventbridge が 1 分ごとに WorldManager
AWS Lambda 関数をトリガーします。この関数は Amazon GameLift API を介して既存のワールドのステータスをチェックします。
ステップ B
WorldManager Lambda 関数は、バックエンドアクセスを高速化するために、セッションとワールドの現在の状態を Amazon DynamoDB に保存します。
ステップ C
WorldManager は、Amazon GameLift API CreateGameSession を呼び出すことによって、設定済みのワールドを DynamoDB からクエリし、実行中でないすべてのワールドを作成します。
ステップ 1
ゲームクライアントが、Amazon Cognito アイデンティティプールに ID と認証情報をリクエストし、承認済みの API リクエストに署名します。
ステップ 2
ゲームクライアントが Amazon API Gateway を介してワールドリストをリクエストします。API Gateway が、DynamoDB の定義済みリージョンでゲームセッション情報をチェックする ListWorlds Lambda 関数をトリガーします。
ステップ 3
ゲームクライアントが API Gateway を介して JoinWorld Lambda 関数を呼び出して、特定のリージョンの特定のワールドに参加するリクエストを送信します。
ステップ 4
Lambda 関数がプレイヤーのプレイヤーセッションを作成し、DynamoDB でそのワールドのプレイヤー数を増やして、接続情報をゲームクライアントに送信します。
ステップ 5
クライアントが、TCP (Transmission Control Protocol) を介して Amazon GameLift セッションに直接接続し、プレイヤーセッション ID を送信します。
ステップ 6
Amazon GameLift セッションが、Amazon GameLift サーバーの Software Development Kit (SDK) を使用してプレイヤーセッション ID を検証します。
ステップ 7
Amazon GameLift が、ワールド固有のプレイヤーデータをチェックし、必要に応じてプレイヤーデータを更新します。プレイヤーが退出した後、プレイヤーの最後の位置が保存されます。
ステップ 8
Amazon GameLift セッションが DynamoDB でスケジュールされた終了を確認します。リクエストされた場合は終了します。
ステップ 9
ゲームサーバーが CloudWatch エージェントを使用して Amazon CloudWatch にログとメトリクスを送信します。
今すぐ始める
このガイダンスをデプロイ
Well-Architected の柱
AWS Well-Architected フレームワークは、クラウドでシステムを構築する際に行う決定の長所と短所を理解するのに役立ちます。フレームワークの 6 つの柱により、信頼性が高く、安全かつ効率的で、費用対効果が高く、持続可能なシステムを設計および運用するためのアーキテクチャのベストプラクティスを学ぶことができます。AWS マネジメントコンソールで無料で提供されている AWS Well-Architected Tool を使用し、各柱の一連の質問に回答することで、これらのベストプラクティスに照らしてワークロードを確認できます。
上記のアーキテクチャ図は、Well-Architected のベストプラクティスを念頭に置いて作成されたソリューションの例です。完全に Well-Architected であるためには、可能な限り多くの Well-Architected ベストプラクティスに従う必要があります。
-
オペレーショナルエクセレンス
AWS Cloud Development Kit (AWS CDK) が、AWS CloudFormation を使用してリソースの更新とロールバックを制御することにより、デプロイと更新を処理します。これにより、手動での設定変更によるエラーが削減されます。
Amazon GameLift フリートの更新では、CloudFormation が置換フリートを作成します。置換フリートが完全にアクティブになってトラフィックを受け付けるようになったら、古いフリートが終了します。
-
セキュリティ
ゲームクライアントは Amazon Cognito アイデンティティプール ID を使用して、バックエンドサービスへのアクセスを保護します。これは、アイデンティティプールから提供された AWS Identity and Access Management (IAM) 認証情報でリクエストに書名することによって行われます。API Gateway 上でホストされている提供済み API に接続できるのは、認証済みのリクエストだけです。さらに、ゲームクライアントがアクセスできるのはクライエント自身のアカウントのデータのみです。
-
信頼性
ゲームサーバー (その結果としてゲームワールド) がクラッシュした場合、アーキテクチャーは自動的にワールドを新しいワールドに置き換えます。新しいワールドは、その特定のワールドの同じ永続データにアクセスできます。
-
パフォーマンス効率
Amazon GameLift では、クライアントとサーバー間の直接通信が可能で、ほぼリアルタイムのパフォーマンスを最適化できます。このアーキテクチャにより、開発者は複数の AWS リージョンにまたがってゲームサーバーをホストできるため、ゲームクライアントとサーバー間のレイテンシーを短縮します。
-
コストの最適化
このアーキテクチャは、プレイヤートラフィックに基づいて正確な量のリソースに対して請求が行われる API Gateway、Lambda、DynamoDB などのサーバーレスコンポーネントを活用しているため、コストを削減できます。さらに、Amazon GameLift は需要に応じてスケールするように設定できるため、いつでも実行中の未使用リソースを最小限に抑えることができます。
-
持続可能性このアーキテクチャは、マネージドサービスとサーバーレスサービスを使用して現在のプレイヤーの負荷に必要なリソースのみを実行し、環境への個々の影響を軽減します。
関連コンテンツ
免責事項
サンプルコード、ソフトウェアライブラリ、コマンドラインツール、概念の実証、テンプレート、またはその他の関連技術 (私たちの担当者から提供される前述のものを含む) は、AWS カスタマーアグリーメント、またはお客様と AWS との間の関連文書契約 (いずれか該当する方) に基づき、AWS コンテンツとしてお客様に提供されるものです。お客様は、この AWS コンテンツを、お客様の本番アカウント、または本番データもしくはその他の重要なデータで使用すべきではありません。お客様は、サンプルコードなどの AWS コンテンツを、お客様固有の品質管理手法および基準に基づいて、本番グレードでの使用に適したテスト、セキュリティ確保、および最適化を行う責任を負います。AWS コンテンツのデプロイには、Amazon EC2 インスタンスの実行や Amazon S3 ストレージの使用など、AWS の課金対象リソースを作成または使用するための AWS 料金が発生する場合があります。
本ガイダンスにおける第三者のサービスまたは組織への言及は、Amazon または AWS と第三者との間の承認、後援、または提携を意味するものではありません。AWS からのガイダンスは技術的な出発点であり、アーキテクチャをデプロイするときにサードパーティのサービスとの統合をカスタマイズできます。