Unreal 用プラグイン: ゲームをマネージドコンテナフリートにデプロイする - Amazon GameLift Servers

Unreal 用プラグイン: ゲームをマネージドコンテナフリートにデプロイする

このガイド付きプラグインワークフローを使用して、ゲームサーバーのコンテナイメージを作成し、コンテナベースのホスティングソリューションにデプロイします。ゲームコードをまだ統合していない場合は、「Unreal 用プラグイン: ゲームコードを統合」を参照してください。このワークフローを正常に完了すると、コンテナ化されたゲームサーバーがクラウドで実行され、プラグインを使用してゲームクライアントを起動し、ゲームセッションに接続してゲームをプレイできます。

開始する前に

このワークフローでは、次のタスクを完了していることを前提としています。

  • ゲームサーバーコードを Amazon GameLift Servers サーバー SDK と統合します。ホストされたゲームサーバーは、新しいゲームセッションの開始リクエストに応答し、ゲームセッションのステータスをレポートできるように、Amazon GameLift Servers サービスと通信できる必要があります。このタスクをまだ完了していない場合は、まずプラグインワークフロー [Anywhere でホスト] を実行することをお勧めします。ゲームサーバーコードの準備に関するガイダンスについては、「ゲームサーバーコードを更新する」を参照してください。マネージドコンテナフリートの場合、ゲームサーバーを サーバー SDK バージョン 5.2 以上 と統合する必要があります。

    注記

    スタートアップゲームマップを使用している場合、このタスクはすでに完了しています。

  • Linux で実行するようにゲームサーバー実行可能ファイルをパッケージ化します。Windows で開発し、C++ サーバー SDK バージョン 5.2.x 以前を統合する場合は、Unreal クロスコンパイルツールキットを使用する必要があります。または、別の Linux ワークスペースを設定するか、Windows サブシステム for Linux (WSL) などのツールを使用することもできます。

  • ゲームサーバービルドでデプロイするファイルを収集します。ローカルマシン上に 作業ディレクトリを作成し、コンテナイメージに組み込むファイルを整理します。これには、ゲームの依存関係、コンテナ起動時にゲームサーバーやその他のプロセスを起動するためのスクリプトなどが含まれます。

  • ゲームサーバービルドの OpenSSL ライブラリファイルを追加します。ゲームサーバーがサーバー SDK 5.3 以降と統合されている場合は、このステップをスキップできます。

    OpenSSL ライブラリを手動で見つけて、<YourGame>/Binaries/Win64 のゲームビルドパッケージディレクトリにコピーします。Unreal Engine 5 バージョンで使用するのと同じ OpenSSL バージョンを使用する必要があります。間違った OpenSSL ライブラリでデプロイされたゲームビルドは、Amazon GameLift Servers サービスと通信できません。

    OpenSSL ライブラリを検索するには、ゲームエンジンソースを確認します。場所は開発環境によって異なります。

    Windows の場合:

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll

    • [ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll

    Linux の場合:

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1

    • Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1

  • ゲームクライアントコードを Amazon GameLift Servers と統合します。このタスクを完了する一つの方法は、プラグインに付属している、既に統合済みのサンプルアセットを追加することです。ゲームクライアントコードの準備に関するガイダンスについては、「クライアントゲームマップを統合する 」を参照してください。

  • ローカルマシンに Docker をインストールしてセットアップします。プラグインにコンテナイメージの作成と、ECR リポジトリへのプッシュを行わせたい場合、このツールをインストールしておく必要があります。または、これらのタスクを手動で実行し、既存のコンテナイメージを使用するようにプラグインへ指示することもできます。コンテナイメージを手動で構築する方法の詳細については、「Amazon GameLift Servers 用のコンテナイメージを構築する」を参照してください。

Amazon GameLift Servers マネージドコンテナワークフローを開始するには:
  • Unreal エディタのメインツールバーで、Amazon GameLift Serversメニューを選択し、マネージドコンテナを選択します。この操作により、プラグインページ [マネージドコンテナでホスト] が開き、ゲームサーバービルドを基にしたコンテナイメージの作成、コンテナフリートへのデプロイ、ゲームの起動までをステップごとに案内するワークフローが表示されます。

ステップ 0: プロファイルを設定する

このセクションには、現在選択されているユーザープロファイルが表示されます。現在のユーザープロファイルが、このワークフローで使用するものであることを確認します。このワークフローで作成されるすべてのリソースは、プロファイルの AWS アカウントに関連付けられ、プロファイルのデフォルト AWS リージョンに配置されます。プロファイルユーザーのアクセス許可によって、AWS リソースとアクションへのアクセスが決まります。

次の場合は、選択中のユーザープロファイルを変更する必要がある場合があります。

  • 現在、プロファイルが選択されていない場合。

  • 別のプロファイルを選択する場合、または新しいプロファイルを作成する場合。

  • 選択したプロファイルのブートストラップステータスが「非アクティブ」の場合、そのプロファイルをブートストラップする必要があります。

選択するユーザープロファイルを設定または変更するには
  • Amazon GameLift Servers メニューで、[AWS アクセス認証情報を開く] を選択します。

ステップ 1: コンテナの準備状況を評価する

ゲームサーバーをコンテナフリートにデプロイする前に、これをコンテナイメージにパッケージ化し、Amazon ECR リポジトリに保存する必要があります。これらのタスクは、プラグインが自動的に処理することも、手動で実行することもできます。このステップでは、コンテナイメージおよび ECR リポジトリの状態に関する情報を入力します。

評価用の質問に回答し、プラグインが実行すべき手順を指示します。

  • 新しいコンテナイメージを作成します。このオプションを選択すると、次のステップでゲームサーバービルドディレクトリの場所と実行可能ファイルの入力を求められます。プラグインは (Amazon GameLift Servers が提供する) Dockerfile テンプレートを使用し、ゲーム用に自動的に設定します。テンプレートは Amazon GameLift Servers 用のコンテナイメージを構築する で使用できます。このオプションを選択した後、プラグインが新しいイメージを保存する場所を指定します。

    • 新しい Amazon ECR リポジトリを作成し、コンテナイメージをプッシュします。プラグインは、AWS アカウントと選択したユーザープロファイルの AWS リージョン デフォルト設定を使用して、プライベート ECR リポジトリを作成します。

    • Amazon ECR リポジトリにコンテナイメージをプッシュします。このオプションを選択すると、次のステップでリストから既存の Amazon ECR リポジトリを選択するよう求められます。リストには、AWS アカウントのすべての Amazon ECR リポジトリと、選択したユーザープロファイルの AWS リージョン デフォルト設定が含まれます。パブリックリポジトリまたはプライベートリポジトリを選択できます。

  • 既存のコンテナイメージを使用します。イメージを手動で構築した場合は、Amazon GameLift Servers が提供する Dockerfile テンプレートを使用することをお勧めします。このテンプレートは Amazon GameLift Servers 用のコンテナイメージを構築する で入手できます。このオプションを選択したら、イメージの場所を指定します。

    • ローカルに保存された Docker 生成イメージ。このオプションを選択すると、プラグインは新しい Amazon ECR プライベートリポジトリを作成し、ローカルのイメージファイルをプッシュします。次のステップでは、プラグインがイメージファイルを見つけるために使用するイメージ ID の入力を求められます。

    • Amazon ECR リポジトリに既に保存されているコンテナイメージ。このオプションを選択すると、次のステップで、リストから既存の Amazon ECR リポジトリとイメージを選択するよう求められます。リストには、AWS アカウントのすべての Amazon ECR リポジトリと、選択したユーザープロファイルの AWS リージョン デフォルト設定が含まれます。パブリックリポジトリまたはプライベートリポジトリを選択できます。

ステップ 2: イメージデプロイを設定する

このステップでは、コンテナイメージをコンテナフリートにデプロイするために、プラグインが必要とする情報を提供します。このステップでは、以下の情報をリクエストします。

  • ステップ 1 で選択した内容に基づき、ゲームサーバービルド、コンテナイメージ、または Amazon ECR リポジトリの場所。

  • マネージドコンテナのデプロイで使用するシナリオ。

  • クライアント設定の出力パス。AWS 設定を含むクライアントビルドのフォルダを選択します。次のロケーションを探してください: [client-build]/[project-name]/Content/CloudFormation

  • オプションのデプロイ設定。このセクションには、プラグインがデフォルトで使用する設定が含まれます。または、デフォルト値を変更できます。

    • ゲーム名は、デフォルトでゲームプロジェクトの名前に設定されます。プラグインが作成するすべての AWS リソースは、ゲーム名の値を参照します。

    • ポート範囲、メモリ制限、vCPU 制限は、コンテナフリートの設定です。これらの値のカスタマイズの詳細については、接続ポート範囲については「ネットワーク接続を構成する」、リソース制限については「リソース制限の設定」を参照してください。

    • コンテナイメージタグは、Amazon ECR でコンテナイメージを分類するために使用されます。デフォルト値は unreal-gamelift-plugin です。

    • Amazon ECR リポジトリの名前。このフィールドを編集してカスタム名を提案できるのは、プラグインが ECR リポジトリを作成している場合のみです。デフォルト値は unreal-game lift-plugin-ecr-repository です。

デプロイシナリオのオプション

このシナリオでは、ゲームサーバーを 1 つのコンテナフリートにデプロイします。これは、AWS とのサーバー統合とコンテナ設定をテストするための出発点として最適です。次のリソースをデプロイします。

  • Amazon GameLift Servers コンテナグループ定義では、コンテナイメージをコンテナフリートにデプロイして実行する方法について説明します。

  • Amazon GameLift Servers ゲームサーバーコンテナがインストールされ実行されている、エイリアス付きのコンテナフリート (オンデマンド)。

  • プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。

  • ユーザープールと API をリンクする API ゲートウェイオーソライザー。

  • API ゲートウェイへの過剰なプレイヤー呼び出しをスロットリングするための Web アクセスコントロールリスト (ACL)。

  • ゲームセッションのリクエストやゲームへの参加など、ゲームクライアントに代わって Amazon GameLift Servers サービスにリクエストを行うバックエンドサービス。

    • プレイヤーがゲームセッションスロットをリクエストするための API ゲートウェイ + Lambda 関数。この関数は、何も利用できない場合に CreateGameSession() を呼び出します。

    • プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ + Lambda 関数。

このシナリオでは、ゲームサーバーをコンテナフリートにデプロイし、ゲームセッションの配置を設定し、FlexMatch マッチメーキングを設定します。このシナリオは、ホスティングソリューション用のマッチメーカーコンポーネントの設計を開始する準備ができたときに役立ちます。このシナリオでは、このソリューションための基本リソースを作成し、必要に応じて後でカスタマイズできます。次のリソースをデプロイします。

  • Amazon GameLift Servers コンテナフリートでコンテナイメージをデプロイして実行する方法を説明するコンテナグループ定義。

  • Amazon GameLift Servers ゲームサーバーコンテナがインストールされ実行されている、エイリアス付きのコンテナフリート (オンデマンド)。

  • FlexMatch のマッチメーキング設定とプレイヤーのリクエストとフォームマッチを受け入れるためのマッチメーキングルールセット。

  • (実行可能性、コスト、プレイヤーレイテンシーなどに基づいて) 最適なホスティングリソースを見つけ、ゲームセッションを開始することで、提案されたマッチのリクエストに応える Amazon GameLift Servers ゲームセッションプレイスメントキュー。

  • プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。

  • ユーザープールと API をリンクする API ゲートウェイオーソライザー。

  • API ゲートウェイへの過剰なプレイヤー呼び出しをスロットリングするための Web アクセスコントロールリスト (ACL)。

  • ゲームセッションのリクエストやゲームへの参加など、ゲームクライアントに代わって Amazon GameLift Servers サービスにリクエストを行うバックエンドサービス。

    • プレイヤーがゲームセッションスロットをリクエストするための API ゲートウェイ + Lambda 関数。この関数は、何も利用できない場合に StartMatchmaking() を呼び出します。

    • プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ + Lambda 関数。

  • DynamoDB テーブルには、プレイヤーのマッチメーキングチケットとゲームセッション情報を保存できます。

  • GameSessionQueue イベントを処理する SNS トピック + Lambda 関数。

コンテナフリートをデプロイする

フリート設定が完了したら、[コンテナフリートをデプロイ] ボタンを選択してデプロイを開始します。このプロセスには、プラグインがコンテナイメージを作成して ECR にプッシュし、コンテナフリートのホスティングリソースをプロビジョニングし、選択したホスティングソリューションシナリオのフリートやその他の AWS リソースをデプロイするまでに数分かかることがあります。

デプロイを開始すると、各ステップの進行状況を追跡できます。設定によっては、次の手順が含まれる場合があります。

  • コンテナイメージの設定

  • Amazon ECR リポジトリの作成

  • イメージの構築と Amazon ECR へのプッシュ

  • コンテナグループ定義の作成

  • コンテナフリートの作成

デプロイの詳細については、[AWSマネジメントコンソールで表示] を選択します。コンテナフリートがアクティブステータスに達すると、フリートはゲームセッションをホストする準備ができているサーバープロセスで実行しているコンテナをアクティブに実行します。

デプロイが完了すると、ゲームセッションをホストし、プレイヤー接続を受け入れる準備ができている作業コンテナフリートがあります。

進行中のデプロイを停止することはできません。デプロイが不正な状態になった場合、または失敗した場合は、[デプロイをリセット] オプションを使用して最初からやり直すことができます。

クライアントの起動

この時点で、Amazon GameLift Servers でホストされているマルチプレイヤーゲームを起動してプレイするために必要なタスクはすべて完了しています。ゲームをプレイするには、[クライアントを起動] を選択してゲームクライアントのローカルインスタンスを起動します。

  • シングルフリートシナリオをデプロイした場合、1 人のプレイヤーで 1 つのクライアントインスタンスを開き、サーバーマップに入って動き回ることができます。ゲームクライアントの 2 つ目のインスタンスを開き、同じサーバーゲームマップに 2 人目のプレイヤーを追加できます。

  • FlexMatch シナリオをデプロイした場合、ホスティングソリューションは少なくとも 2 つのゲームクライアントがマッチメイキングリクエストを行うのを待ちます。少なくとも 2 つのインスタンスのゲームクライアントを、1 人のプレイヤーとともに開きます。2 人のプレイヤーがマッチングされ、マッチングのゲームセッションに参加するように求められます。

コンテナフリートの作成

マネージドコンテナホスティングソリューションを正常にデプロイした場合は、[デプロイを更新] 機能を使用できます。このオプションを使用すると、1 つのフリートを作成することなく、デプロイされたコンテナフリートの設定を更新できます。

デプロイを更新する際には、別のゲームサーバービルドでコンテナイメージをデプロイしたり、Amazon ECR リポジトリを変更したり、別のデプロイシナリオを選択したり、オプションの設定をカスタマイズしたりできます。

変更をデプロイする準備ができたら、[更新] を選択します。デプロイの更新に必要な時間は、完全なデプロイに似ています。デプロイの詳細については、[AWS マネジメントコンソールで表示] を選択します。

デプロイされたリソースをクリーンアップします。

ベストプラクティスとして、マネージドコンテナソリューションの AWS リソースが不要になったらすぐにクリーンアップします。これらのリソースを削除しないと、引き続きコストが発生する可能性があります。

リソースを削除するには、次の作業を行います。

  • マネージドコンテナリソーススタック。このスタックのリソースは、選択したデプロイシナリオによって異なります。スタック全体を削除するには、CloudFormation コンソールを使用します。Amazon GameLift Servers プラグインから生成されたスタックは、命名規則 GameLiftPluginForUnreal-{GameName}-Containers を使用します。スタックの削除プロセスが完了するまで待ってから、プラグインで新しいマネージドコンテナのデプロイを開始します。詳細については、「CloudFormation コンソールからスタックを削除する」を参照してください。

  • Amazon ECR リポジトリ。プラグインを使用してコンテナイメージのリポジトリを作成した場合は、不要になったリポジトリを削除できます。マネージドコンテナのデプロイをリセットする前にリポジトリを削除する必要はありません。デプロイを更新またはリセットすると、別のリポジトリを使用するように指示されない限り、プラグインは同じリポジトリを自動的に使用します。詳細については、「Amazon ECR のプライベートリポジトリの削除」を参照してください。