

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

# Unreal 用プラグイン: ゲームをマネージド EC2 フリートにデプロイする
<a name="unreal-plugin-ec2"></a>

このワークフローでは、プラグインを使用して、Amazon GameLift Servers が管理するクラウドベースのコンピューティングリソースでホストするようにゲームを変更します。統合されたゲームサーバービルドを Amazon GameLift Servers サービスにアップロードしてデプロイします。ゲームコードをまだ統合していない場合は、「[Unreal 用プラグイン: ゲームコードを統合](unreal-plugin-integrate.md)」を参照してください。このワークフローが完了すると、動作するゲームクライアントができ、クラウド内のゲームサーバーに接続できます。

**Amazon GameLift Servers マネージド Amazon EC2 ワークフローを開始するには:**
+ Unreal エディタのメインツールバーで Amazon GameLift Servers メニューを選択し、**[マネージド EC2 でホストする]** を選択します。このアクションにより **[Amazon EC2 Fleet のデプロイ]** というプラグインページが開き、ゲームコンポーネントを統合、ビルド、デプロイ、起動するための 6 つのステップのプロセスが表示されます。

## ステップ 1: プロファイルを設定する
<a name="unreal-plugin-ec2-profile"></a>

このワークフローに従うときに使用したいプロファイルを選択します。選択したプロファイルは、ワークフローのすべてのステップに影響します。作成するすべてのリソースは、プロファイルの AWS アカウントに関連付けられ、プロファイルのデフォルト AWS リージョンに配置されます。プロファイルユーザーのアクセス許可によって、 AWS リソースとアクションへのアクセスが決まります。

**ユーザープロファイルを設定する**

1. 使用可能なプロファイルのドロップダウンリストからプロファイルを選択します。まだプロファイルがない場合、または新しいプロファイルを作成する場合は、**Amazon GameLift** メニューに移動し、Set ** AWS User Profiles **を選択します。

1. ブートストラップステータスが [アクティブ] ではない場合、**[ブートストラッププロファイル]** を選択して、ステータスが [アクティブ] になるまで待機します。

## ステップ 2: ゲームコードをセットアップする
<a name="unreal-plugin-ec2-integrate"></a>

このステップでは、Amazon GameLift Servers C\$1\$1 サーバー SDK for Unreal と連携するようにゲームサーバーとゲームクライアントビルドを準備します。ゲームコードをまだ統合しておらず、ゲームクライアントとサーバー実行可能ファイルを構築していない場合は、「[Unreal 用プラグイン: ゲームコードを統合](unreal-plugin-integrate.md)」を参照してください。ローカルワークステーションのゲーム実行可能ファイルへのパスを入力します。

ワークフローの子の手順では、Unreal エディタのソースビルドバージョンをまだ設定していない場合は、プラグインに説明とソースコードへのリンクが表示されます。クライアントおよびサーバーコンポーネントを構築するときは、ソース構築バージョンを使用する必要があります。

サーバー SDK と統合されたゲームサーバーを構築したら、次のタスクを実行して、ホスティングのために Amazon GameLift Servers にアップロードする準備をします。

### サーバービルドをクラウドデプロイ用にパッケージ化するには (Windows)
<a name="w2aab9c11b9c19c35b9b9b1"></a>

Unreal Editor がデフォルトでサーバービルドファイルを保存する `WindowsServer` フォルダに、次の内容を追加します。

1. **サーバービルドのインストールスクリプトを `WindowsServer` フォルダのルートにコピーします。**インストールスクリプトは、プラグインのダウンロードに含まれています。ファイル `[project-name]/Plugins/Resources/CloudFormation/extra_server_resources/install.bat` を探します。Amazon GameLift Servers はこのファイルを使用して、ホスティングコンピューティングにサーバービルドをインストールします。

1. **`VC_redist.x64.exe` ファイルを `WindowsServer` フォルダにコピーします。**Unreal Engine バージョン 5.6 以降を使用している場合は、このステップをスキップできます。このファイルは Visual Studio のインストールに含まれています。一般的に `C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Redist/MSVC/v142` にあります。

1. **OpenSSL ライブラリファイルをゲームサーバービルドに追加します。**ゲームサーバーがサーバー SDK 5.3 以降と統合されている場合は、このステップをスキップできます。このバージョンは、Unreal バージョン 3.0 以降の Amazon GameLift Servers プラグインに含まれています。

   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`

### サーバービルドをクラウドデプロイ用にパッケージ化するには (Linux)
<a name="w2aab9c11b9c19c35b9c11b1"></a>

Linux 用に構築されたゲームサーバーを準備する詳細な手順については、「[Amazon Linux での Unreal Engine 5 向けにサーバー SDK for Amazon GameLift Servers を構築する](https://github.com/aws/amazon-gamelift-toolkit/tree/main/building-gamelift-server-sdk-for-unreal-engine-and-amazon-linux)」を参照してください。

1. **ビルドファイルを整理する作業ディレクトリを指定します。**作業ディレクトリの構造は、各ホスティングコンピューティングにそのままデプロイされます。Linux で構築されたゲームサーバーとすべての依存ファイルを追加します。

1. **作業ディレクトリのルートにサーバービルドインストールスクリプトを作成します。**必要に応じて、`install.sh` ファイルを作成し、ゲームサーバービルドを適切にインストールするために必要なコマンドを追加します。Amazon GameLift Servers はこのファイルを使用して、各 EC2 ホスティングリソースにサーバービルドをインストールします。

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

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

   1. ゲームエンジンソースで 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`

   1. OpenSSL ライブラリを見つけたら、`<YourGame>/Binaries/Linux` のゲームビルドパッケージディレクトリにコピーします。

## ステップ 3: デプロイシナリオを選択する
<a name="unreal-plugin-ec2-scenarios"></a>

このステップでは、この時点でデプロイしたいゲームホスティングソリューションを選択します。どのシナリオを使用しても、ゲームを複数デプロイすることができます。
+ 単一リージョンフリート: ゲームサーバーを、アクティブなプロファイルのデフォルト AWS リージョンにある単一のホスティングリソースのフリートにデプロイします。このシナリオは、 AWS とのサーバー統合とサーバービルド設定をテストする出発点に適しています。次のリソースをデプロイします。
  + ゲームサーバービルドをインストールして実行中のAWS フリート (オンデマンド)。
  + プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。
  + ユーザープールと API をリンクする API ゲートウェイオーソライザー。
  + プレイヤーから API ゲートウェイへの過剰な呼び出しを スロットリングする WebACl。
  + プレイヤーがゲームスロットをリクエストするための API ゲートウェイ \$1 Lambda 関数。この関数は、何も利用できない場合に `CreateGameSession()` を呼び出します。
  + プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ \$1 Lambda 関数。
+ FlexMatch フリート: ゲームサーバーを一連のフリートにデプロイし、プレイヤー対戦を作成するためのルールを含む FlexMatch マッチメーカーをセットアップします。このシナリオでは、マルチフリート、マルチロケーション構造で低コストのスポットホスティングを使用して、耐久性のある可用性をを実現します。このアプローチは、ホスティングソリューション向けのマッチメーカーコンポーネントの設計をすでに開始している場合に役立ちます。このシナリオでは、このソリューションための基本リソースを作成し、必要に応じて後でカスタマイズできます。次のリソースをデプロイします。
  + FlexMatch のマッチメーキング設定とプレイヤーのリクエストとフォームマッチを受け入れるためのマッチメーキングルールセット。
  + ゲームサーバービルドがインストールされ、複数のロケーションで稼働している 3 つの AWS フリート。バックアップとして 2 つのスポットフリートと 1 つのオンデマンドフリートが含まれます。
  + (実行可能性、コスト、プレイヤーレイテンシーなどに基づいて) 最適なホスティングリソースを見つけ、ゲームセッションを開始することで、提案されたマッチのリクエストに応えるAWS ゲームセッションプレイスメントキュー。
  + プレイヤーが認証してゲームを開始するための Amazon Cognito ユーザープールとクライアント。
  + ユーザープールと API をリンクする API ゲートウェイオーソライザー。
  + プレイヤーから API ゲートウェイへの過剰な呼び出しを スロットリングする WebACl。
  + プレイヤーがゲームスロットをリクエストするための API ゲートウェイ \$1 Lambda 関数。この関数は `StartMatchmaking()` を呼び出します。
  + プレイヤーがゲームリクエストの接続情報を取得するための API ゲートウェイ \$1 Lambda 関数。
  + Amazon DynamoDB テーブルには、プレイヤーのマッチメーキングチケットとゲームセッション情報を保存できます。
  + SNS トピック \$1 GameSessionQueue イベントを処理する SNS トピック \$1 Lambda 関数。

## ステップ 4: ゲームパラメーターを設定する
<a name="unreal-plugin-ec2-parameters"></a>

このステップでは、以下にアップロードするためのゲームについて説明します AWS。
+ サーバービルド名: ゲームサーバービルドにわかりやすい名前を付けてくます。 AWS はこの名前を使ってアップロードされてデプロイに使用されるサーバービルドのコピーを参照します。
+ サーバービルド OS: サーバーが実行されるように構築されるオペレーティングシステムを入力します。これにより、 AWS にゲームのホストに使用するコンピューティングリソースの種類が通知されます。
+ ゲームサーバーフォルダ: ローカルサーバービルドフォルダのパスを指定します。
+ ゲームサーバービルド: ゲームサーバーの実行可能ファイルのパスを指定します。
+ ゲームクライアントパス: ゲームクライアント実行ファイルへのパスを指定します。
+ クライアント設定出力: このフィールドは、 AWS 設定を含むクライアントビルドのフォルダを指す必要があります。次のロケーションを探してください: `[client-build]/[project-name]/Content/CloudFormation`。

## ステップ 5: デプロイシナリオ
<a name="unreal-plugin-ec2-deploy"></a>

このステップでは、選択したデプロイシナリオに基づいてゲームをクラウドホスティングソリューションにデプロイします。このプロセスは、 AWS がサーバービルドを検証し、ホスティングリソースをプロビジョニングし、ゲームサーバーをインストールし、サーバープロセスを起動し、ゲームセッションをホスティングする準備が整うまで数分かかる場合があります。

デプロイを開始するには、**[CloudFormation をデプロイ]** を選択します。ゲームホスティングの状況は、こちらで追跡できます。詳細については、 AWS マネジメントコンソール AWS にサインインしてイベント通知を表示できます。プラグインのアクティブなユーザープロファイルと同じアカウント、ユーザー、 AWS リージョンを使用してサインインしてください。

デプロイが完了すると、 AWS EC2 インスタンスにゲームサーバーがインストールされています。少なくとも 1 つのサーバープロセスが実行中で、ゲームセッションを開始する準備ができています。

## ステップ 6: クライアントの起動
<a name="unreal-plugin-ec2-launch"></a>

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

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

FlexMatch シナリオをデプロイした場合、ソリューションは少なくとも 2 つのクライアントがゲームセッションプレイスメントのキューに入るのを待ってから、プレイヤーがサーバーマップに入ることができます。