Amazon GameLift Servers マネージドコンテナでホスティングするための開発ロードマップ - Amazon GameLift Servers

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

Amazon GameLift Servers マネージドコンテナでホスティングするための開発ロードマップ

このロードマップでは、コンテナ化されたゲームサーバー用のAmazon GameLift Serversマネージドホスティングソリューションを開発する方法について説明します。マネージドコンテナは、 が提供するホスティングソリューションの 1 つですAmazon GameLift Servers。ホスティングオプションの詳細については、「」を参照してくださいAmazon GameLift Servers ソリューション

を使用したマネージドコンテナソリューションAmazon GameLift Serversには、次のコンポーネントがあります。

  • マルチプレイヤーゲームホスティング用に最適化された Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用する 1 つ以上のコンテナフリート。

  • ゲームサーバービルドを含むコンテナイメージ。Amazon Elastic Container Registry (Amazon ECR) プライベートリポジトリにアップロードされます。ゲームサーバービルドは、 用のサーバー SDK と統合Amazon GameLift Serversされ、Linux で動作するように構築されています。

  • ゲームクライアントに代わって Amazon GameLift Servers サービスとやり取りするバックエンドサービス。バックエンドサービスはAmazon GameLift Servers、 SDK の一部である のサービス API の機能 AWS を使用します。

  • 新しいAmazon GameLift Serversゲームセッションのリクエストを処理し、すべてのフリートで利用可能なゲームサーバーを検索し、ゲームセッションを開始するようにゲームサーバーに求めるゲームセッションキュー。

  • (オプション) マルチプレイヤーマッチを作成し、それらのゲームセッションを設定するFlexMatchマッチメーカー。

このロードマップは、コンテナ化されたゲームサーバーをAmazon GameLift Serversマネージドコンテナで正常に稼働させるための効率的な道筋を示しています。必要なコンポーネントが揃ったら、ゲーム開発を繰り返し、ホスティングソリューションをカスタマイズできます。ローンチが近づいたら、本番稼働レベルの使用に備えてホスティングソリューションを準備する方法について、「Amazon GameLift Servers ホスティングによるゲームの起動の準備」を参照してください。

マネージドコンテナ用の以下のツールを使用して、オンボーディングを高速化します。
  • コンテナスターターキットは、統合とフリートのセットアップを合理化します。ゲームサーバーに重要なゲームセッション管理機能を追加し、事前設定されたテンプレートを使用して、ゲームサーバー用のコンテナフリートと自動デプロイパイプラインを構築します。デプロイ後、 Amazon GameLift Serversコンソールと API ツールを使用して、フリートのパフォーマンスのモニタリング、ゲームセッションの管理、メトリクスの分析を行います。

  • Unreal Engine および Unity 開発者の場合は、 Amazon GameLift Servers プラグインを使用してゲームサーバーを統合し、ゲームエンジンの開発環境内からコンテナフリートを構築します。プラグインのガイド付きワークフローは、マネージドコンテナを使用したクラウドベースのホスティングによる高速でシンプルなソリューションの作成に役立ちます。この基盤に基づいてゲーム用のカスタムホスティングソリューションを作成できます。

ゲームサーバーに機能を追加して、ホスティング用にデプロイされたときにAmazon GameLift Serversサービスと通信できるようにします。

  • ゲームプロジェクトのサーバー SDK for Amazon GameLift Servers (バージョン 5.2 以降) を取得します。サーバー SDK は、C++、C#、Go で利用可能です。サーバー SDK for をダウンロードしますAmazon GameLift Servers。サーバー SDK は C++、C#、Go で使用できます。

  • ゲームサーバーコードを変更して、サーバーの SDK 機能を追加します。ガイダンスについては、「カスタムゲームサーバーとゲームを統合する」を参照してください。少なくとも、以下を実行します。

    • Amazon GameLift Servers SDK を初期化し、Amazon GameLift Serversサービスと WebSocket 接続を確立するコードを追加します。サーバー SDK アクション InitSdk() を使用します。

    • サーバープロセスがゲームセッションをホストする準備ができたら、Amazon GameLift Serversサービスに報告するコードを追加します。サーバー SDK アクション ProcessReady() を使用します。

    • 必要なコールバック関数 OnStartGameSession()、、および を実装しますOnProcessTerminate()。これらの機能を使用すると、ゲームサーバープロセスは Amazon GameLift Serversサービスとの接続を維持し、 から求められたときにゲームセッションを開始しAmazon GameLift Servers、ゲームサーバープロセスを終了するリクエストに応答できます。

    • サーバープロセスがゲームセッションを終了するときにAmazon GameLift Serversサービスに報告するコードを追加します。サーバー SDK アクション ProcessEnding() を使用します。

  • ゲームサーバービルドをパッケージ化します。Linux で実行するようにゲームサーバーを構築します。ゲームサーバーの実行に必要なビルドやその他のファイルを準備します。Windows で開発している場合、このステップでは、別の Linux ワークスペースを設定するか、Windows サブシステム for Linux (WSL) などのツールを使用する場合があります。ゲームサーバービルドをテストしたり、コンテナイメージを構築およびテストしたりするには、Linux 環境が必要です。

  • ゲームサーバーの統合をテストします。統合されたゲームサーバーがAmazon GameLift Serversサービスに接続し、プロンプトに応答できることを確認します。「」で説明されているように、ローカルワークステーションをテストホストとしてシンプルな Amazon GameLift ServersAnywhere フリートを設定することをお勧めしますAmazon GameLift ServersAnywhere でローカルテストを設定する。ゲームサーバービルドをテストホストにインストールし、サーバープロセスを開始します。 AWS CLI を使用して新しいゲームセッションをリクエストし、Amazon GameLift Serversサービスがサーバープロセスにゲームセッションの開始を正常に促すことを確認します。

ゲームクライアントがゲームセッションへの参加をリクエストし、接続情報を取得して、ホストされているゲームセッションに直接接続する方法を作成します。最も一般的なアプローチは、ゲームクライアントと サービスの間のミドルマンとして機能するバックエンドAmazon GameLift Serversサービス機能を設定することです。このアプローチにより、ホスティングリソースを保護し、プレイヤーがゲームセッションにどのように配置されるかをより詳細に制御することができます。

  • ホスティング用のバックエンドサービス機能を構築します。バックエンドサービスは Amazon GameLift Serversサービスと通信し、接続情報をゲームクライアントに配信します。この機能には、ゲームセッションの開始、ゲームへのプレイヤーの配置、ゲームセッション情報の取得が含まれます。ガイダンスについては、「カスタムゲームサーバーとゲームを統合する」を参照してください。少なくとも、以下を実行します。

  • プレイヤーがホストされているゲームセッションに参加できるようにする機能をゲームクライアントに追加します。ゲームクライアントは、 に直接ではなく、バックエンドサービスにリクエストを行いますAmazon GameLift Servers。バックエンドサービスがゲームセッション接続情報を提供すると、ゲームクライアントはゲームセッションに直接接続してゲームをプレイします。

  • ゲームクライアントの統合をテストします。テストには、既存の Amazon GameLift ServersAnywhere フリートをローカルワークステーションで使用できます。新しいバックエンドサービスを使用して新しいゲームセッションをリクエストし、(1) Amazon GameLift Serversサービスがサーバープロセスにゲームセッションの開始を正常に促し、(2) ゲームクライアントがゲームセッションに接続できることを確認します。

新しいゲームセッションのリクエストを処理する方法をカスタマイズしAmazon GameLift Servers、それらをホストするために利用可能なゲームサーバーを見つけます。 は、すべてのフリートのすべてのゲームサーバーの可用性Amazon GameLift Serversを自動的に追跡します。ゲームクライアントがゲームセッションへの参加リクエストを送信すると、 は最小レイテンシー、コスト、可用性などの定義された優先順位のセットに基づいて「可能な限り最良の」配置Amazon GameLift Serversを探します。

  • 利用可能なゲームサーバーで新しいゲームセッションを配置するためのゲームセッションキューを作成します。キューは、ゲームセッション配置の主要なメカニズムです。ガイダンスについては、「ゲームセッションキューを作成する」を参照してください。

    • 少なくとも、Anywhere フリートをキュー内の送信先として追加します。その他のすべての設定はオプションのカスタマイズです。

  • バックエンドサービスコードで、CreateGameSession() 呼び出しを StartGameSessionPlacement() に変換します。マルチフリートキューにゲームセッションを作成する」を参照してください。

  • ゲームセッションに参加できる状態になったら、ゲームクライアントに通知するメカニズムを作成します。開発中は、 の呼び出しを使用してゲームセッションのステータスをポーリングできますDescribeGameSessionPlacement。ただし、大量の処理にキューを使用する前に、イベント通知を有効にする必要があります。「ゲームセッション配置のイベン通知を設定」を参照してください。

  • FlexMatchマッチメーキングを追加します (オプション)。マッチメーキングルールセットを構築し、ゲームセッションキューを操作するマッチメーキング設定を作成します。マッチメーキングシステムの設定に関するガイダンスについては、 デAmazon GameLift ServersFlexMatchベロッパーガイドを参照してください。

  • プレイスメントシステムをテストします。テストには、既存の Amazon GameLift ServersAnywhere フリートをローカルワークステーションで使用できます。バックエンドサービスを使用して新しいゲームセッションをリクエストし、Amazon GameLift Serversサービスがサーバープロセスにゲームセッションの開始を正常に促すことを確認します。

ゲームサーバーを正常に統合したら、ゲームサーバー実行可能ファイルを使用してコンテナイメージを作成します。で使用するため、Amazon Elastic Container Registry (Amazon ECR) リポジトリに保存しますAmazon GameLift Servers。詳細な手順については、「のコンテナイメージを構築する Amazon GameLift Servers」を参照してください。

  • ゲームサーバーコンテナ ( 提供) の Dockerfile テンプレートを取得しますAmazon GameLift Servers。ゲームサーバーのビルドファイルの ファイルを変更します。

  • ゲームサーバーコンテナイメージを構築します。Linux 環境で作業するには、Docker ツールを使用してイメージを作成します。

  • コンテナイメージを Amazon ECR にプッシュします。コンテナフリートをデプロイする予定の AWS リージョン 同じ と を使用して AWS アカウント 、Amazon ECR にパブリックリポジトリまたはプライベートリポジトリを作成します。コンテナイメージをプッシュします。

  • Anywhere フリートを使用してコンテナイメージをテストします (オプション)。クラウドホスト型のコンテナフリートにデプロイする前に、コンテナイメージをローカルでテストすることもできます。テストには、既存の Amazon GameLift ServersAnywhere フリートをローカルワークステーションで使用できます。ゲームサーバーコンテナをインストールして実行し、(1) Amazon GameLift Serversサービスがサーバープロセスにゲームセッションの開始を正常に促し、(2) ゲームクライアントがゲームセッションに接続できることを確認します。

ここまでは、セルフマネージド Anywhere フリートを使用して、ゲームコンポーネントをテストおよび反復処理してきました。ソリューションの最後の部分は、本稼働システムに必要なクラウドベースのホスティングリソースをセットアップすることです。本番稼働用の計画と設定を開始するには、Amazon GameLift Serversマネージドコンテナフリートをセットアップし、本番稼働用にカスタマイズします。

  • コンテナグループ定義を作成します。コンテナグループ定義は、フリートのコンテナアーキテクチャを記述します。 と は、デプロイするコンテナイメージを識別します。「コンテナフリートのAmazon GameLift Serversコンテナグループ定義を作成する」を参照してください。コンテナイメージが保存され AWS リージョン ているのと同じ にコンテナグループ定義を作成します。フリートのロケーションの選び方については、「フリートのロケーション」を参照してください。少なくとも、以下を実行します。

    • ゲームサーバーコンテナグループ定義を作成します。

    • ゲームサーバービルドでコンテナイメージを含むコンテナ定義を追加します。

    • コンテナのゲームサーバープロセスのポート範囲を設定します。

  • マネージドコンテナフリートを作成します。フリートを作成すると、 はホスティング用にゲームサーバービルドのデプロイをAmazon GameLift Serversすぐに開始します。マネージドフリートの多くの側面を設定できます。ガイダンスについては、「Amazon GameLift Servers マネージドコンテナフリートを作成する」を参照してください。少なくとも、以下を実行します。

    • コンテナフリートの AWS Identity and Access Management (IAM) サービスロールを設定します。「の IAM サービスロールを設定する Amazon GameLift Servers」を参照してください。

    • フリートインスタンスにデプロイするゲームサーバーコンテナグループ定義を指定します。

    • 他のすべてのパラメータで使用できるデフォルト値を使用します。 は、最適な設定のためにいくつかのパラメータをAmazon GameLift Servers計算します。

  • コンテナフリートをキューに追加します。ゲームセッションキューで、Anywhere テストフリートをマネージドコンテナフリートに置き換えます。

  • コンテナフリートでゲームホスティングをテストします。この時点で、ソリューション全体をテストできるはずです。ゲームクライアントを起動し、バックエンドサービスを介してゲームセッションをリクエストします。接続情報を取得し、コンテナフリートのゲームセッションに接続します。

  • フリートデプロイで反復処理します。コンテナグループ定義とフリート設定を更新し、既存のフリートに更新をデプロイできます。

ゲームのローンチに備えて、マネージドホスティングリソースを微調整する必要があります。考慮すべき決定事項には、次のようなものがあります。