View a markdown version of this page

サーバーレスバックエンドを使用したセッションベースのゲームサーバーホスティング - ゲーム業界レンズ

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

サーバーレスバックエンドを使用したセッションベースのゲームサーバーホスティング

ゲーム用のアーキテクチャを開発するときは、必要な機能と機能、および所有する準備が整っている運用管理オーバーヘッドのレベルを考慮してください。運用の容易さと柔軟性のバランスを最適化するために、クラウドプロバイダーのマネージドサービスを使用してゲームを構築できます。マネージドサービスを使用すると、独自のカスタムゲーム機能の開発とカスタマイズを制御できると同時に、インフラストラクチャのデプロイと管理の負担を軽減できます。

セッションベースのマルチプレイヤーゲームをホストするには、ゲームサーバープロセスをホストするサーバーインフラストラクチャと、マッチメーキングとセッション管理のためのスケーラブルなバックエンドが必要です。次のリファレンスアーキテクチャは、Amazon GameLift マネージドホスティングとサーバーレスバックエンドを使用してセッションベースのゲームを管理する方法を示しています。

セッションベースのゲーム用の Amazon GameLift マネージドホスティング

セッションベースのゲーム用の Amazon GameLift マネージドホスティング

この図は、GameLift マネージドゲームホスティングで実行されているゲームにプレイヤーを参加させるプロセスを示しています。以下のステップには次のものが含まれます。

  1. ゲームクライアントは、Amazon Cognito ID プールから Amazon Cognito ID をリクエストします。これは、オプションで外部 ID プロバイダーに接続できます。

  2. ゲームクライアントは一時的なアクセス認証情報を受け取り、Amazon API Gateway を介してゲームセッションをリクエストします。 Amazon Cognito

  3. API Gateway は AWS Lambda 関数を呼び出します。

  4. Lambda 関数は、Amazon DynamoDB テーブルからプレイヤーデータをリクエストします。Amazon Cognito ID は、認証された ID がリクエストコンテキストデータで提供されるため、正しいプレイヤーデータを安全にリクエストするために使用されます。

  5. 追加情報 (プレイヤースキルレベルなど) に正しいプレイヤーデータを使用すると、Lambda 関数は GameLift FlexMatch マッチメーキングを通じてマッチングをリクエストします。FlexMatch マッチメイキング設定は、JSON ベースの設定ドキュメントで定義できます。ゲームクライアントは、さまざまなリージョンのサーバーエンドポイントに ping を送信することでレイテンシーメトリクスを生成でき、レイテンシーデータを使用してレイテンシーベースのマッチメーキングをサポートできます。

  6. FlexMatch は、適切なレイテンシーを持つ適切なプレイヤーグループを リージョンにマッチさせた後、GameLift キューを通じてゲームセッションの配置を要求します。キューには、1 つ以上の登録済みリージョンロケーションを持つフリートが含まれます。

  7. セッションがフリートのいずれかのロケーションに配置されると、Amazon SNS トピックにイベント通知が送信されます。

  8. Lambda 関数は Amazon SNS イベントを受け取り、それを処理します。

  9. Amazon SNS メッセージが MatchmakingSucceeded イベントの場合、Lambda 関数はサーバーポートと IP アドレスを使用して結果を DynamoDB に書き込みます。time-to-live (TTL) 値を使用して、不要になったマッチメーキングチケットが DynamoDB から削除されるようにします。

  10. ゲーム クライアントは API Gateway に対して署名付きリクエストを行い、特定の間隔でマッチメイキングチケットのステータスをチェックします。

  11. API Gateway は、マッチメイキングチケットのステータスをチェックする Lambda 関数を呼び出します。

  12. Lambda 関数は DynamoDB をチェックして、チケットが成功したかどうかを確認します。成功すると、Lambda 関数は IP アドレス、ポートおよびプレーヤーセッション ID をクライアントに送信します。チケットが失敗した場合、Lambda 関数はマッチングの準備が整っていないことを示すレスポンスを送信します。

  13. ゲームクライアントは、バックエンドから提供されたポートと IP アドレスを使用して、TCP または UDP を使用してゲームサーバーに接続します。プレイヤーセッション ID をゲームサーバーに送信し、ゲームサーバーは Amazon GameLift Server SDK を使用して検証します。

または、前述のアーキテクチャを変更して、Amazon GameLift で API Gateway WebSockets を使用することもできます。このアプローチでは、ゲームクライアントとゲームバックエンドサービス間の通信は、WebSocket ベースの実装を使用して行われます。この実装を使用すると、ゲームバックエンドの Lambda 関数がポーリングモデルを実装するのではなく、WebSocket 経由でゲームクライアントへのサーバー側のメッセージを開始できます。