

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

# Amazon GameLift Servers Anywhere を使用した反復型開発の準備
<a name="integration-dev-iteration"></a>

Amazon GameLift Servers には、ゲーム開発時に使用するテスト用のホスト環境の設定に役立つツールとソリューションが用意されています。これらのツールを使用すると、Amazon GameLift Servers によるマネージドホスティングの実際のプレイヤー体験を反映し、迅速かつ反復的な開発プロセスをサポートする環境を作成できます。

別のテスト環境で、テスト中に Amazon GameLift Servers マネージドフリートのオーバーヘッドを削除します。新しいゲームサーバービルドのイテレーションをアップロードしたり、新しいフリートを作成したり、アクティブ化するまで 15 分以上待ったりする必要がなくなります。代わりに、新しいビルドを作成し、新しいビルドでテストフリートをすばやく更新し、新しいビルドを起動してテストを開始できます。

Amazon GameLift Servers Anywhere フリートを使用すると、開発ワークステーションなどのローカルデバイスを使用してテスト環境を設定できます。クラウドベースのホスティングリソースを使用してテスト環境を設定することもできます。

Anywhere テスト環境をセットアップして、次のようなさまざまなシナリオを開発してテストします。
+ ゲームサーバー統合と Amazon GameLift Servers サーバー SDK をテストします。 AWS CLI 呼び出しを使用して新しいゲームセッションを開始し、ゲームセッションイベントを追跡することで、ゲームクライアントが動作しなくてもテストできます。
+ ゲーム用コンポーネントを開発する際に、ゲームクライアント、バックエンドサービスそして Amazon GameLift Servers サービス間のインタラクションをテストします。ゲームに参加するためのプレイヤー体験をファインチューニングします。
+ FlexMatch マッチメーカー設計を試します。ルールセットのバリエーションやその他のマッチメーキング機能の実装を試します。マッチメーキングバックフィルを設定してテストします。
+ ゲームサーバーライフサイクル管理用に、(Amazon GameLift Serversエージェントでの) ランタイム設定など別の Amazon GameLift Servers ホスティング機能を試します。
+ 実際のホスト環境で、マルチプレイヤーインタラクションを含むゲームでのプレイヤー体験のあらゆる側面をすばやく構築、テスト、および繰り返して検証します。

後で、ゲームの起動準備をする際に、Amazon GameLift Servers マネージドフリートを追加してホスティング設定をファインチューニングし、以下を含む追加のシナリオをテストします。
+ マルチロケーションフリート、スポットフリート、オンデマンドフリート、複数のインスタンスタイプの使用など、ゲームセッションキュー設計を試してテストします。
+ オプションのレイテンシーポリシーやフリートの優先順位付け設定の使用など、マネージドフリートでゲームセッション配置オプションを試します。
+ 自動または手動スケーリングオプションを使用して、プレイヤーの需要を満たすようにキャパシティスケーリングを設定します。
+ Amazon GameLift Servers マネージドフリート AWS CloudFormation を使用して をセットアップし、ホスティングリソースを長期的に管理します。

**Fast Build Update Tool (開発専用)**  
マネージド EC2 フリートの場合、ゲームサーバービルドの更新をデプロイするには、新しいビルドを 1 つずつ Amazon GameLift Servers にアップロードし、ビルドに対して新しいフリートを作成する必要があります。  
Fast Build Update Tool を使用すると、開発中にこうした手順を回避できるため、時間を節約し、開発のイテレーションを高速化できます。このツールを使用すると、既存のフリート内のすべてのコンピューティングでゲームビルドファイルをすばやく更新できます。このツールにはいくつかのオプションがあり、ゲームビルド全体を置き換えたり、6 つの特定のファイルを変更したり、更新後にゲームサーバープロセスを再起動する方法を管理できます。このツールを使用して、フリート内の個々のコンピューティングを更新することもできます。  
Fast Build Update Tool を入手し、その使用方法の詳細を確認するには、GitHub にある [Fast Build Update Tool ](https://github.com/aws/amazon-gamelift-toolkit/tree/main/fast-build-update-tool)の Amazon GameLift Servers リポジトリを参照してください。

**Topics**
+ [クラウドベースのテスト環境を構築する](integration-dev-iteration-cloud.md)
+ [Amazon GameLift Servers Anywhereでローカルテストを設定する](integration-testing.md)
+ [Amazon GameLift Servers Local を使用して統合をテストする](integration-testing-local.md)

# クラウドベースのテスト環境を構築する
<a name="integration-dev-iteration-cloud"></a>

**注記**  
このトピックでは、Amazon GameLift Servers バージョン 5.x 用のサーバー SDK と統合されたゲームの反復テストについて説明します。ゲームでサーバー SDK バージョン 4.x 以前を使用している場合は、「[Amazon GameLift Servers Local を使用して統合をテストする](integration-testing-local.md)」を参照してください。

Amazon GameLift Servers Anywhere フリートを使用して、クラウドベースのホスト環境でゲームコンポーネントを繰り返し構築およびテストします。ホスティングリソースと Amazon GameLift Servers サービスへの接続を使用して Anywhere フリートを作成し、それらの上でゲームサーバーを実行し、必要に応じてゲーム機能をテストします。

**Amazon GameLift Servers エージェントを使用して Anywhere フリートをデプロイする**  
ゲームサーバービルドが Amazon GameLift Servers SDK 5.x 以降と統合されている場合は、Amazon GameLift Servers エージェントを使用してクラウドベースの Anywhere フリートにデプロイできます。エージェントは、フリート内の各コンピューティングのゲームサーバーのライフサイクルやその他のタスクを管理するバックグラウンドプロセスです。これらのタスクには、Anywhere フリートへのコンピューティングの登録、認証トークンの取得、一連の手順に基づくゲームサーバープロセスの起動/停止が含まれます。エージェントは、フリートのランタイム設定によって制御されます。この設定は、フリートの有効期間中いつでも更新できます。(エージェントはマネージド EC2 フリートに自動的にデプロイされます。) 詳細とエージェントのダウンロード方法については、「[Amazon GameLift Servers GitHub リポジトリ](https://github.com/aws/amazon-gamelift-agent)」を参照してください。

## Amazon EC2 で反復テストを設定する
<a name="integration-dev-iteration-cloud-ec2"></a>

この [Amazon GameLift Servers ツールキットソリューション]( https://github.com/aws/amazon-gamelift-toolkit/tree/main/development-instance-with-amazon-gamelift-anywhere-and-gamelift-agent)のガイド付きワークフローを使用して、Amazon GameLift Servers でのマネージドホスティングエクスペリエンスを反映するクラウドベースのホスティング環境を設定します。

GitHub リポジトリには、Amazon GameLift Servers Anywhere と Amazon GameLift Servers エージェントを使用してテスト環境をセットアップするためのほとんどのプロセスを自動化するスクリプト一式が用意されています。また、新しいゲームサーバービルドをテストするたびに環境を更新するためのガイダンスも提供します。サンプルゲームサーバービルドを使用してテスト環境をデプロイする単一のスクリプトを実行することも、各手順を実行して独自のゲームサーバービルドでセットアップすることもできます。

このワークフローでは、 を使用してスクリプトを実行し AWS マネジメントコンソール、コマンドラインタスクを完了 AWS CloudShell することで、 で完全に作業します。

**注記**  
このチュートリアルのタスクでは、、、Amazon S3Amazon GameLift Servers AWS CloudShell、、Amazon EC2 AWS Systems Manager、および のサービスに対するアクセス許可を持つ AWS アカウントユーザーが必要です AWS Identity and Access Management。 Amazon S3 AWS アカウントへの管理者レベルのアクセス権を持つユーザーには、必要なアクセス許可が既に付与されています。

ワークフローでは、次のタスクについて説明します。
+ **Amazon GameLift Servers のゲームサーバービルドをパッケージ化します。**このワークフローには、サンプル C\$1\$1 ゲームサーバーを構築するためのスクリプトが用意されています。このゲームサーバーは、サーバー SDK for Amazon GameLift Servers バージョン 5.x と既に統合されており、ホスティングの準備ができています。または、統合が完了したら、独自のゲームプロジェクトで作業することもできます。
+ **ゲームサーバーのビルドと依存関係を保存する Amazon Simple Storage Service バケットを設定します。**ゲームビルドの新しいバージョンを作成すると、それらを S3 に保存し、スクリプトを使用してゲームテスト用の Anywhere フリートを更新できます。
+ **Amazon GameLift Servers エージェントを取得してビルドします。**エージェントは、設定に基づいてホスティングリソースのゲームサーバープロセスを管理します。これは、同じロジックを使用し、Amazon GameLift Servers マネージド EC2 ホスティングと同じように動作します。
+ **ホスティングリソースの Anywhere フリートを設定します。**Anywhere フリートの場合、Amazon GameLift Servers サービスを使用して、Amazon GameLift Servers が管理していないリソースをホスティングできます。この手順では、ランタイム設定も設定します。ランタイム設定では、ゲームサーバープロセスを開始するタイミングと方法を Amazon GameLift Servers エージェントに指示します。
+ **Amazon EC2 インスタンスをセットアップします。**これは反復テスト用のテスト環境です。(本番稼働レベルの使用状況に合わせて最適化された) フルマネージド Amazon GameLift Servers インスタンスの代わりに、標準の EC2 インスタンスを使用する方がはるかに高速です。標準の EC2 インスタンスを使用すると、必要に応じてゲームサーバーをすばやく継続的に更新できます。
+ **ゲームサーバービルドと Amazon GameLift Servers エージェントを Amazon EC2 インスタンスにデプロイします。**ワークフローには、ゲームビルドの最新バージョンとすべての依存関係を取得し、EC2 インスタンスにインストールするスクリプトが用意されています。このワークフローでは、依存関係には Amazon GameLift Servers エージェントと CloudWatch エージェントが含まれます。
+ **Amazon GameLift Servers エージェントを開始します。**インストールされると、エージェントが自動的に開始され、手順を実行します。具体的には次のとおりです。
  + Amazon GameLift Servers Anywhere フリートで EC2 インスタンスをコンピューティングとして登録します。
  + WebSocket と Amazon GameLift Servers サービス間の接続を確立し、最新のランタイム設定を取得します。
  + ランタイム設定の手順に基づいて、ゲームサーバープロセスを起動します。このワークフローでは、エージェントはゲームサーバー実行可能ファイルの単一のプロセスを開始するように指示されます。
+ **ゲームシナリオをテストします。**テスト環境をセットアップし、最新のゲームサーバービルドをインストールしたら、テストを開始できます。このワークフローでは、ゲームセッションの開始など、テストに関するいくつかの手順について説明します。CloudWatch ゲームサーバーログにアクセスして、ゲームセッションの起動とプレイヤーの受け入れ準備ができたときの進行状況を追跡します。

  ゲームクライアントやクライアント側のバックエンドサービスなど、ゲームコンポーネントを開発する際に、これらをテストシナリオに含めることができます。ゲームクライアントを使用してゲームセッションをリクエストし、Amazon GameLift Servers サービスから接続情報を取得し、ゲームセッションに直接接続します。
+ **新しいゲームサーバーのビルドと繰り返しテストをデプロイします。**ゲームの開発時に、新しいゲームサーバービルドを生成すると、テストを実行する EC2 テスト環境にすばやくデプロイできます。これらを Amazon S3 バケットにアップロードし、ワークフロースクリプトを使用してテスト環境を更新します。

## ゲームを Amazon GameLift Servers マネージドフリートに移行する
<a name="integration-dev-iteration-cloud-transition"></a>

開発テストを完了し、起動の準備が整ったら、Amazon GameLift Servers マネージドフリートに切り替える良いタイミングとなります。マネージドフリートを使用して、ゲームホスティングリソースをファインチューニングおよびテストします。ゲームセッションの配置ソリューション (キューとマッチメーカー) を実装し、最適なホスティングハードウェア (スポットフリートを含む) と場所を選択し、容量のスケーリング戦略を選択します。また、フリート、キュー、マッチメーカーなど、すべてのゲームホスティングリソースのライフサイクルをより効率的に管理 AWS CloudFormation するために、 の使用を開始することもできます。

これにより、クラウドベースの Anywhere テストフリートから Amazon GameLift Servers マネージドフリートへの移行に対する工数は最小限に抑えられます。ゲームコードを変更する必要はありません。同じキューとマッチメーカーを再利用できます。次のいずれかのタスクを実行します。
+ **Amazon GameLift Servers ビルドリソースを作成します。**Anywhere テストフリートでは、ゲームサーバーのビルドと依存関係を各フリートコンピューティングに手動でデプロイする必要があります。マネージドフリートでは、ゲームビルドパッケージを Amazon GameLift Servers にアップロードします。これにより、すべてのフリートコンピューティングに自動的にデプロイされます。ゲームビルドファイルのパッケージ化と、Amazon S3 バケット内のファイルを使用したビルドリソース作成の詳細については、「[Amazon GameLift Servers のゲームサーバービルドを作成する](gamelift-build-cli-uploading.md)」を参照してください。
+ **マネージドフリートを作成します。**コンソールまたは AWS CLI を使用し、EC2 マネージドフリートを指定してフリートを作成します。このタイプのフリートには、ビルドリソースとインスタンスタイプの指定など、追加の設定が必要です。同じランタイム設定を使用すると、各フリートコンピューティングのゲームサーバーライフサイクルを管理できます。マネージドフリートの作成の詳細については、「[Amazon GameLift Servers マネージド EC2 フリートを作成する](fleets-creating.md)」を参照してください。
+ **フリートエイリアスをリダイレクトします (オプション)。**Anywhere フリートで使用するエイリアスを設定すると、マネージドフリートに同じエイリアスを再利用できます。エイリアスの作成または更新の詳細については、「[Amazon GameLift Servers エイリアスの作成](aliases-creating.md)」を参照してください。

# Amazon GameLift Servers Anywhereでローカルテストを設定する
<a name="integration-testing"></a>

**注記**  
このトピックでは、サーバー SDK for Amazon GameLift Servers バージョン 5.x 用サーバー SDK と統合されたゲームのローカルテストについて説明します。ゲームでサーバー SDK バージョン 4.x 以前を使用している場合は、「[Amazon GameLift Servers Local を使用して統合をテストする](integration-testing-local.md)」を参照してください。

Amazon GameLift Servers Anywhere フリートと独自のハードウェアを使用して、シミュレートされたホスト環境でゲームコンポーネントを繰り返し構築およびテストします。フリートを設定し、ローカルデバイスを登録して、Amazon GameLift Servers サービスへの接続を確立します。ゲームサーバービルドをデバイスにインストールし、ゲームサーバープロセスを開始し、必要に応じてゲーム機能をテストします。ゲームサーバービルドは、新しいビルドのイテレーションをテストするために、必要な回数だけ更新できます。

Anywhere フリートでは、CLI AWS またはテストスクリプトを使用してテストできます。ゲームクライアントを Amazon GameLift Servers と統合した場合は、同じローカルデバイスまたは別のデバイスでクライアントを実行できます。

フリートによるローカルテストは、Amazon GameLift Servers とのゲームサーバー統合をテストするために特に役立ちます。ローカルマシンのすべてのホスティングアクティビティと、イベントとログデータを完全に可視化できます。

**注記**  
Unreal Engine または Unity にAmazon GameLift Servers プラグインを使用していますか? これらのツールには、Anywhere フリートでローカルテストを設定するためのガイド付きワークフローが含まれています。[Unity 用プラグイン: Amazon GameLift Servers Anywhere を使用してローカルテストを設定する](unity-plug-in-anywhere.md) または [Unreal 用プラグイン: Amazon GameLift Servers Anywhere でゲームをローカルでホストする](unreal-plugin-anywhere.md) のドキュメントに従います。

**Topics**
+ [ローカルの Anywhere フリートを設定する](#integration-testing-anywhere-fleet)
+ [ゲームサーバーを更新してインストールする](#integration-testing-dev)
+ [ゲームセッションアクティビティをテストする](#integration-testing-test)
+ [ゲームサーバーでのイテレーション](#fleet-anywhere-iteration)
+ [ゲームを Amazon GameLift Servers マネージドフリートに移行する](#fleet-anywhere-transition)

## ローカルの Anywhere フリートを設定する
<a name="integration-testing-anywhere-fleet"></a>

ローカルワークステーションの Anywhere フリートを作成するには、次の手順を実行します。 AWS CLI または AWS マネジメントコンソール の を使用する詳細な手順についてはAmazon GameLift Servers、「」を参照してください[Amazon GameLift Servers Anywhere フリートを作成する](fleets-creating-anywhere.md)。

**Anywhere フリートを作成するには**

1. **ワークステーション用のカスタムロケーションを作成します。(AWS CLI またはコンソール）。**カスタムロケーションは、Anywhere フリートに含める予定のコンピューティングリソースのラベルにすぎません。カスタムロケーション名は `custom-` で始まる必要があります。例: `custom-my_laptop`。「[カスタムロケーションを作成する](fleets-creating-anywhere.md#fleet-anywhere-location)」を参照してください。

1. **Anywhere フリート (AWS CLI またはコンソール) を作成します。**この手順では、ローカルワークステーションのカスタムロケーションを使用してフリートリソースを作成します。「[Anywhere フリートを作成する](fleets-creating-anywhere.md#fleet-anywhere-create)」を参照してください。

   新しいフリートの ID または ARN 値をメモします。この値は次のステップで必要になります。

1. **ローカルワークステーションをフリートコンピューティングとして登録します (AWS CLI のみ）。**ゲームサーバーをホストするには、Anywhere フリートに少なくとも 1 つのコンピューティングリソースが必要です。「[フリートにコンピューティングを追加する](fleets-creating-anywhere.md#fleet-anywhere-compute)」を参照してください。フリートにコンピューティングを追加するには、次の情報が必要です。
   + コンピューティング名。フリート内の各コンピューティングには、一意の名前が必要です。
   + Anywhere フリート識別子。`FleetID` または `FleetArn` のいずれかを使用できます。
   + コンピューティングの接続情報。`IpAddress` または `DnsName` のいずれかを指定します。これは、Amazon GameLift Servers とゲームクライアントがゲームサーバーに接続する方法です。
   + Anywhere フリート内のカスタムロケーション。

   `GameLiftServiceSdkEndpoint` の戻り値をメモします。Anywhere フリートで実行するようにゲームサーバーを更新するときは、この値が必要です。

## ゲームサーバーを更新してインストールする
<a name="integration-testing-dev"></a>

このタスクは、ゲームサーバービルドを Amazon GameLift Servers サーバー SDK 5.x と既に統合していることを前提としています。統合プロセスでは、Amazon GameLift Servers サービスとやり取りしてゲームセッションを開始および管理できるように、ゲームサーバーにコードを追加します。

Anywhere フリートの場合、特定のゲームサーバー設定を手動で設定する必要があります。Amazon GameLift Servers マネージドフリートでは、これらの設定は自動的に設定されます。

**Anywhere フリート用にゲームサーバーを準備する**

1. **認証トークンを取得します。**ゲームサーバーには、 Amazon GameLift Serversサービスとのすべての通信に認証トークンを含める必要があります。Amazon GameLift Servers認証トークンは有効期間が短く、定期的に更新する必要があります。

   ベストプラクティスとして、スクリプトを作成して次のタスクを完了します。
   + CLI AWS アクション を呼び出します`get-compute-auth-token`。
   + ローカルコンピューティングの環境変数など、ゲームサーバープロセスが取得できるトークンの戻り値を保存します。

   ゲームサーバーと一緒にスクリプトをコンピューティングにインストールします。最初のゲームサーバープロセスを開始する前に、実行するスクリプトを設定します。ゲームサーバープロセスがアクティブな間は、スクリプトを定期的に実行して有効な認証トークンを維持します。コンピューティング上のすべてのゲームサーバープロセスは、同じ認証トークンを使用できます。

1. **Amazon GameLift Servers ゲームサーバーコードを更新します。**ゲームサーバーコードをサーバー SDK for Amazon GameLift Servers と統合すると、アクション `InitSdk()` への呼び出しが追加されます。ゲームサーバーを Anywhere フリートで実行する場合、この呼び出しには、追加のサーバーパラメータが必要です。詳細については、開発言語に該当する「[サーバープロセスを初期化する](gamelift-sdk-server-api.md#gamelift-sdk-server-initialize)」および「[サーバー SDK 5.x for Amazon GameLift Servers](reference-serversdk.md)」を参照してください。サーバーパラメータは次のとおりです。
   + `webSocketUrl` – このパラメータを、フリートにコンピューティングを登録したときに返される `GameLiftServiceSdkEndpoint` 値に設定します。
   + `hostId` – Anywhere フリートにコンピューティングを登録するときに指定するコンピューティング名にこのパラメータを設定します。
   + `fleetId` – このパラメータを Anywhere フリートの ID に設定します。
   + `authToken` – このパラメータを、コンピューティングの認証トークンを取得するリクエストに応答して返されるトークンに設定します。
   + `processId` – このパラメータを設定して、ローカルコンピューティングで実行されているゲームサーバープロセスを特定します。同時ゲームサーバープロセスごとに一意のプロセス ID が必要です。

   各ゲームサーバープロセスが使用するサーバーパラメータ値は、プロセスが実行されている Anywhere フリートコンピューティングに固有である必要があります。コンピューティングに適切な値を取得する方法の詳細については、「[フリートにコンピューティングを追加する](fleets-creating-anywhere.md#fleet-anywhere-compute)」を参照してください。ベストプラクティスとして、`webSocketUrl`、`hostId`、`fleetId`、および `authToken` をローカルコンピューティングの環境変数として設定します。コンピューティングで実行されるすべてのサーバープロセスは、これらの値を使用します。

1. ローカルコンピューティングにゲームサーバービルドをインストールします。ゲームサーバーの実行に必要なすべての依存関係を含めます。

1. ローカルコンピューティングで実行されている 1 つ以上のゲームサーバープロセスを開始します。ゲームサーバープロセスがサーバー SDK アクション `ProcessReady()` を呼び出すと、プロセスはゲームセッションをホストする準備が整います。

## ゲームセッションアクティビティをテストする
<a name="integration-testing-test"></a>

ゲームセッションを使用して、ゲームサーバーの統合をテストします。Amazon GameLift Servers機能と統合されたゲームクライアントがない場合は、 AWS CLI を使用するとゲームセッションを開始できます。次のシナリオを試行します。
+ **ゲームセッションの作成。**[create-game-session ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/create-game-session.html) コマンド (または [CreateGameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateGameSession.html) API オペレーション) を呼び出します。 Anywhereフリートの ID とカスタムロケーションを指定します。この呼び出しは、新しいゲームセッションの一意の識別子を返します。
+ **ゲームセッションステータスを確認します。 **[describe-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/describe-game-sessions.html) コマンド (または [DescribeGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_DescribeGameSessions.html) API アクション) を呼び出します。ゲームセッション ID を指定します。この呼び出しは、ゲームセッションステータスを含む詳細なゲームセッション情報を返します。アクティブ状態のゲームセッションは、プレイヤーによる接続ができることを示します。フリートのすべてのゲームセッションのリストを取得するには、[list-game-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/list-game-sessions.html) コマンド (または [ListGameSessions](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_ListGameSessions.html) API アクション) を呼び出します。
+ **ゲームセッションに接続します。**ゲームクライアントにゲームセッションに参加する機能がある場合は、ゲームセッション情報に含まれる接続情報を使用します。

## ゲームサーバーでのイテレーション
<a name="fleet-anywhere-iteration"></a>

同じ Anywhere フリートとコンピューティングを使用すると、ゲームサーバーぶり度の別のバージョンをテストできます。

1. **既存の `GameSession` をクリーンアップします。**ゲームサーバープロセスがクラッシュした場合または、`ProcessEnding()` を呼び出さない場合は、ゲームサーバーがヘルスチェックの送信を停止した後に、Amazon GameLift Servers が `GameSession` をクリーンアップします。

1. **新しいゲームサーバービルドを生成します。**ゲームサーバーを変更し、改訂されたビルドをパッケージ化します。

1. **ローカルコンピューティングでゲームサーバービルドを更新します。**以前の Anywhere フリートはまだアクティブで、ラップトップはフリート内のコンピューティングリソースとして登録されたままです。

1. **更新された認証トークンを取得します。**[get-compute-auth-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/get-compute-auth-token.html) CLI コマンドを呼び出し、トークンをローカルコンピューティングに保存します。

1. **ローカルコンピューティングで実行されている 1 つ以上のゲームサーバープロセスを開始します。**ゲームサーバープロセスが `ProcessReady()` を呼び出すと、テストに使用する準備が整います。

## ゲームを Amazon GameLift Servers マネージドフリートに移行する
<a name="fleet-anywhere-transition"></a>

開発テストを完了し、起動の準備が整ったら、Amazon GameLift Servers マネージドフリートに切り替える良いタイミングとなります。マネージドフリートを使用して、ゲームホスティングリソースをファインチューニングおよびテストします。ゲームセッションの配置ソリューション (キューとマッチメーカー) を実装し、最適なホスティングハードウェア (スポットフリートを含む) と場所を選択し、容量のスケーリング戦略を選択します。また、フリート、キュー、マッチメーカーなど、すべてのゲームホスティングリソースのライフサイクルをより効率的に管理 AWS CloudFormation するために、 の使用を開始することもできます。

ローカルテストフリートから Amazon GameLift Servers マネージドフリートに移行するには、いくつかの小さな修正を行う必要があります。同じキューとマッチメーカーは再利用できます。次のいずれかのタスクを実行します。
+ **ゲームサーバーのコード呼び出しを `InitSdk()` に変更します。**サーバーパラメータを削除します。マネージドフリートの場合、Amazon GameLift Servers はこの情報を自動的に追跡します。
+ **Amazon GameLift Servers ビルドリソースを作成します。**Anywhere テストフリートでは、ゲームサーバーのビルドと依存関係を各フリートコンピューティングに手動でデプロイする必要があります。マネージドフリートでは、ゲームビルドパッケージを作成して Amazon GameLift Servers にアップロードします。これにより、すべてのフリートコンピューティングに自動的にデプロイされます。ゲームビルドファイルのパッケージ化と、Amazon S3 バケット内のファイルを使用したビルドリソース作成の詳細については、「[Amazon GameLift Servers のゲームサーバービルドを作成する](gamelift-build-cli-uploading.md)」を参照してください。Amazon GameLift Servers はマネージドフリートでこれらのタスクを自動的に処理するため、コンピューティングを登録して認証トークンを取得するスクリプトを含めないでください。
+ **マネージドフリートを作成します。**EC2 マネージドフリートを指定して、コンソールまたは AWS CLI を使用してフリートを作成します。このタイプのフリートには、ビルドリソースとインスタンスタイプの指定など、追加の設定が必要です。フリートコンピューティングごとにゲームサーバーライフサイクルを管理するには、すべてのユーザーがランタイム設定をセットアップする必要があります。マネージドフリートの作成の詳細については、「[Amazon GameLift Servers マネージド EC2 フリートを作成する](fleets-creating.md)」を参照してください。
+ **フリートエイリアスをリダイレクトします (オプション)。**Anywhere フリートで使用するエイリアスを設定すると、マネージドフリートに同じエイリアスを再利用できます。エイリアスの作成または更新の詳細については、「[Amazon GameLift Servers エイリアスの作成](aliases-creating.md)」を参照してください。

# Amazon GameLift Servers Local を使用して統合をテストする
<a name="integration-testing-local"></a>

**注記**  
このトピックでは、サーバー SDK for Amazon GameLift Servers バージョン 3.x および 4.x と統合されたゲームのテストについて説明します。サーバー SDK パッケージには、Amazon GameLift Servers Local の互換バージョンが含まれています。サーバー SDK バージョン 5.x を使用している場合は、Amazon GameLift Servers Anywhere フリートを用いたローカルテストについては「[GameLift Server SDK 5.x でのローカルテスト](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-testing-local.html)」を参照してください。SDK 4.x から 5.x への移行に関するガイダンスについては、「[GameLift Server SDK 5.x への移行](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-serversdk5-migration.html)」を参照してください。

Amazon GameLift Servers Local を使用して、ローカルデバイスでマネージド Amazon GameLift Servers サービスの限定バージョンを実行し、それに対してゲーム統合をテストします。このツールは、ゲーム統合で反復開発を行う場合に便利です。代わりの方法 - 新しい各ビルドを Amazon GameLift Servers にアップロードし、ゲームをホストするようフリートを設定する場合は、毎回数回以上かかる場合があります。

Amazon GameLift Servers Local では、以下の点を確認できます。
+ ゲームサーバーが サーバー SDK と正常に統合されており、新しいゲームセッションの開始、新しいプレイヤーの承諾、ヘルスおよびステータスの報告を行うために Amazon GameLift Servers サービスと正しく通信している。
+ ゲームクライアントが正常に AWS SDK for Amazon GameLift Servers と統合されており、既存のゲームセッションでの情報の取得、新しいゲームセッションの開始、プレイヤーのゲームへの参加、ゲームセッションへの接続を行うことができる。

Amazon GameLift Servers Local は、マネージド Amazon GameLift Servers サービスの自己完結型バージョンを開始するコマンドラインツールです。Amazon GameLift ServersAmazon GameLift Servers Local には、サーバープロセスの初期化、ヘルスチェック、API コールおよびレスポンスの実行イベントログも用意されています。Local は、Amazon GameLift Servers 向けの AWS SDK アクションのサブセットを認識します。呼び出しは、AWS CLI またはゲームクライアントから行うことができます。すべての API アクションは、Amazon GameLift Servers ウェブサービスでの実行と同じようにローカルで実行されます。

各サーバープロセスは 1 つのゲームセッションのみをホストする必要があります。ゲームセッションは、Amazon GameLift Servers Local への接続に使用する実行可能ファイルです。ゲームセッションが完了したら、`GameLiftServerSDK::ProcessEnding` を呼び出して、プロセスを終了します。Amazon GameLift Servers でローカルでテストする場合、複数のサーバープロセスをスタートできます。各プロセスは Amazon GameLift Servers Local に接続します。その後、サーバープロセスごとに 1 つのゲームセッションを作成できます。ゲームセッションが終了すると、ゲームサーバープロセスは終了します。その後、別のサーバープロセスをマニュアルでスタートする必要があります。

Amazon GameLift Serversローカルは、以下の API をサポートしています。
+ CreateGameSession
+ CreatePlayerSession
+ CreatePlayerSessions
+ DescribeGameSessions
+ DescribePlayerSessions

## Amazon GameLift Servers Local のセットアップ
<a name="integration-testing-local-start"></a>

Amazon GameLift Servers Local は、[サーバー SDK](https://aws.amazon.com/gamelift/servers/getting-started/) にバンドルされた実行可能ファイル `.jar`として提供されます。Windows または Linux で実行でき、Amazon GameLift Servers でサポートされる任意の言語で使用できます。SDK バージョン 4.0.2 の場合は、[GitHub の公式リリース](https://github.com/amazon-gamelift/amazon-gamelift-servers-csharp-server-sdk/releases)からダウンロードできます。GameLiftLocal.jar ファイルは GameLift-CSharp-ServerSDK-4.0.2.zip アーティファクトに含まれています。

Local を実行する前に、以下のものもインストールされている必要があります。
+ サーバー SDK for Amazon GameLift Servers バージョン 3.1.5 から 4.x までのビルド
+ Java 8 

## ゲームサーバーのテスト
<a name="integration-testing-local-server"></a>

ゲームサーバーのみをテストする場合、AWS CLI を使用して Amazon GameLift Servers Local サービスへのゲームクライアント呼び出しをシミュレートできます。これにより、ゲームサーバーが正常に実行されていることと、以下の点が確認されます。
+ ゲームサーバーが正しく起動し、サーバー SDK for Amazon GameLift Servers を初期化します。
+ 起動プロセスの一環として、サーバーでゲームセッションをホストする準備ができていることをゲームサーバーが Amazon GameLift Servers に通知する。
+ ゲームサーバーが実行中 1 分ごとにヘルスステータスを Amazon GameLift Servers に送信する。
+ ゲームサーバーがリクエストに応答して新しいゲームセッションを開始する。

1. **Amazon GameLift Servers Local を起動します。**

   コマンドプロンプトウィンドウを開き、`GameLiftLocal.jar` ファイルがあるディレクトリに移動して実行します。デフォルトでは、Local はポート 8080 でゲームクライアントからのリクエストをリッスンします。別のポート番号を指定するには、以下の例に示すように `-p` パラメータを使用します。

   ```
   java -jar GameLiftLocal.jar -p 9080
   ```

   Local が起動すると、2 つのローカルサーバー (ゲームサーバーをリッスンしているサーバーとゲームクライアントまたは AWS CLI をリッスンしているサーバー) が起動したことがログに示されます。ログは、ゲームコンポーネントとの通信など、2 つのローカルサーバーでのアクティビティを報告し続けます。

1. **ゲームサーバーを起動します。**

   Amazon GameLift Servers が統合されたゲームサーバーをローカルで起動します。ゲームサーバーのエンドポイントを変更する必要はありません。

   Local のコマンドプロンプトウィンドウでは、ゲームサーバーが Amazon GameLift Servers Local サービスに接続されていることがログメッセージに示されます。これは、ゲームサーバーがServer SDK for Amazon GameLift Servers を、`InitSDK()` を使って正常に初期化したことを意味します。示されたログパスを使用して `ProcessReady()` を呼び出し、成功した場合はゲームセッションをホストする準備が完了します。ゲームサーバーの実行中、Amazon GameLift Servers はゲームサーバーから各ヘルスステータスレポートをログに記録します。次のログメッセージの例は、正常に統合されたゲームサーバーを示しています。

   ```
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal!
   16:50:53,451  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true
   16:50:53,543  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs"
   logPathsToUpload: "C:\\game\\error"
   port: 1935
           
   16:50:53,544  INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true,
   16:50:53,558  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy
   ```

   考えられるエラーおよび警告メッセージには次のものがあります。
   + エラー: "pID: *<process ID>* の ProcessReady が見つかりません\$1 InitSDK() は呼び出されましたか?"
   + 警告: "プロセスのステータスは pID: *<process ID>* で既にプロセスに存在します\$1 ProcessReady(...) は複数回呼び出されましたか?"

1. **AWS CLI を開始します。**

   ゲームサーバーが `ProcessReady()` を正常に呼び出したら、クライアント呼び出しを開始できます。別のコマンドプロンプトウィンドウを開き、AWS CLI ツールを開始します。デフォルトでは、AWS CLI は Amazon GameLift Servers ウェブサービスエンドポイントを使用します。これは、次のリクエスト例に示すように、`--endpoint-url` パラメータを使用して各リクエストで Local エンドポイントによって上書きする必要があります。

   ```
   AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080  --fleet-id fleet-123
   ```

   AWS CLI コマンドプロンプトウィンドウでは、`AWS gamelift` コマンドを使用すると、[[AWS CLI コマンドリファレンス]](https://docs.aws.amazon.com/cli/latest/reference/gamelift) に記載されているように応答が返されます。

1. **ゲームセッションの作成。**

   AWS CLI を使用して、[CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html) リクエストを送信します。リクエストは予期される構文に従う必要があります。Local では、`FleetId` パラメータを任意の文字列 (`^fleet-\S+`) に設定できます。

   ```
   AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id
       fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
   ```

   Local のコマンドプロンプトウィンドウでは、Amazon GameLift Servers Local がゲームサーバーに `onStartGameSession` コールバックを送信したことがログメッセージに示されます。ゲームセッションが正常に作成された場合、ゲームサーバーは `ActivateGameSession` を呼び出すことで応答します。

   ```
   13:57:36,129  INFO || - [SDKInvokerImpl]
           Thread-2 - Finished sending event to game server to start a game session:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6.
           Waiting for ack response.13:57:36,143  INFO || - [SDKInvokerImpl]
           Thread-2 - Received ack response: true13:57:36,144  INFO || -
           [CreateGameSessionDispatcher] Thread-2 - GameSession with id:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6
           created13:57:36,227  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest
           requested? true13:57:36,230  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId:
           "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"
   ```

   AWS CLI ウィンドウで、Amazon GameLift Servers はゲームセッション ID を含むゲームセッションオブジェクトで応答します。新しいゲームセッションのステータスが [Activating] になっていることに注目してください。ゲームサーバーが ActivateGameSession を呼び出すとステータスは [Active] に変わります。変更されたステータスを確認するには、AWS CLI で `DescribeGameSessions()` を呼び出します。

   ```
   {
       "GameSession": {
         "Status": "ACTIVATING",
         "MaximumPlayerSessionCount": 2,
         "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
         "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890",
         "IpAddress": "127.0.0.1",
         "Port": 1935
       }
   }
   ```

## ゲームサーバーおよびクライアントのテスト
<a name="integration-testing-local-client"></a>

プレイヤーのゲームへの接続など、ゲームの完全統合を確認するには、ゲームサーバーとクライアントの両方をローカルで実行することができます。これにより、ゲームクライアントから Amazon GameLift Servers Local へのプログラムによる呼び出しをテストできます。次のアクションを確認できます。
+ ゲームクライアントが、ゲームセッションの作成、既存のゲームセッションでの情報の取得、プレイヤーセッションの作成など、AWS Local サービスへの Amazon GameLift Servers SDK リクエストを正常に行っています。
+ プレイヤーがゲームセッションに参加しようとしたときにゲームサーバーがプレイヤーを正しく検証する。プレイヤーが検証されると、ゲームサーバーはプレイヤーデータ (実装されている場合) を取得できます。
+ プレイヤーがゲームを終了すると、ゲームサーバーが接続中断を報告する。
+ ゲームサーバーがゲームセッションの終了を報告する。

1. **Amazon GameLift Servers Local を起動します。**

   コマンドプロンプトウィンドウを開き、`GameLiftLocal.jar` ファイルがあるディレクトリに移動して実行します。デフォルトでは、Local はポート 8080 でゲームクライアントからのリクエストをリッスンします。別のポート番号を指定するには、以下の例に示すように `-p` パラメータを使用します。

   ```
   ./gamelift-local -p 9080
   ```

   Local が起動すると、2 つのローカルサーバー (ゲームサーバーをリッスンしているサーバーとゲームクライアントまたは AWS CLI をリッスンしているサーバー) が起動したことがログに示されます。

1. **ゲームサーバーを起動します。**

   Amazon GameLift Servers が統合されたゲームサーバーをローカルで起動します。メッセージログの詳細については、「[ゲームサーバーのテスト](#integration-testing-local-server)」を参照してください。

1. **Local のゲームクライアントを設定して起動します。**

   Amazon GameLift Servers Local サービスでゲームクライアントを使用するには、「[Amazon GameLift Servers APIをセットアップします。](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize)」で説明されているように、ゲームクライアントのセットアップに以下の変更を加える必要があります。
   + `ClientConfiguration` などの Local エンドポイントをポイントするように、`http://localhost:9080` オブジェクトを変更します。
   + ターゲットフリートの ID 値を設定します。Local では、実際のフリート ID は必要ありません。ターゲットフリートを、`^fleet-\S+` などの任意の有効な文字列 (`fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d`) に設定します。
   + AWS 認証情報を設定します。Local では、実際の AWS 認証情報は必要ありません。アクセスキーとシークレットキーを任意の文字列に設定できます。

   Local のコマンドプロンプトウィンドウで、ゲームクライアントを起動すると、`GameLiftClient` を初期化し、Amazon GameLift Servers サービスと正常に通信していることがログメッセージに示されます。

1. **Amazon GameLift Servers サービスへのゲームクライアント呼び出しをテストします。**

   ゲームクライアントが以下の API コールのすべてまたはいずれかを正常に行っていることを確認します。
   + [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html)
   + [DescribeGameSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html)
   + [CreatePlayerSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSession.html)
   + [CreatePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSessions.html)
   + [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html)

   Local のコマンドプロンプトウィンドウでは、`CreateGameSession()` を呼び出した場合のみログメッセージが生成されます。ログメッセージは、Amazon GameLift Servers Local がゲームサーバーにゲームセッションの開始を求め (`onStartGameSession` コールバック)、ゲームサーバーがゲームセッションを呼び出したときに `ActivateGameSession` が成功した場合に表示されます。AWS CLI ウィンドウでは、説明されているとおり、すべての API コールによりレスポンスまたはエラーメッセージが生成されます。

1. **ゲームサーバーが新しいプレイヤー接続を検証していることを確認します。**

   ゲームセッションとプレイヤーセッションを作成したら、ゲームセッションへの直接接続を確立します。

   Local のコマンドプロンプトウィンドウでは、ゲームサーバーが `AcceptPlayerSession()` リクエストを送信して新しいプレイヤー接続を検証したことがログメッセージに表示されます。AWS CLI を使用して `DescribePlayerSessions()` を呼び出した場合、プレイヤーセッションステータスが Reserved から Active に変わります。

1. **ゲームサーバーがゲームおよびプレイヤーのステータスを Amazon GameLift Servers サービスにレポートしていることを確認します。**

   Amazon GameLift Servers がプレイヤーの要求を管理してメトリクスを正常にレポートするには、ゲームサーバーも各種ステータスを Amazon GameLift Servers にレポートする必要があります。Local が以下のアクションに関連するイベントを記録していることを確認します。AWS CLI を使用してステータス変更を追跡することもできます。
   + **プレイヤーがゲームセッションから切断する** - Amazon GameLift Servers Local ログメッセージには、ゲームサーバーが `RemovePlayerSession()` を呼び出すことが示されます。AWS CLI への `DescribePlayerSessions()` 呼び出しには、`Active` から `Completed` へのステータス変更が反映されます。さらに、`DescribeGameSessions()` を呼び出して、ゲームセッションの現在のプレイヤー数が 1 人減少したことを確認することもできます。
   + **ゲームセッションが終了する** - Amazon GameLift Servers Local ログメッセージには、ゲームサーバーが `TerminateGameSession()` を呼び出すことが示されます。
**注記**  
以前のガイダンスでは、ゲームセッションを終了するときに `TerminateGameSession()` を呼び出していました。このメソッドは Amazon GameLift Servers サーバー SDK v4.0.1 で非推奨です。「[ゲームセッションを終了する](gamelift-sdk-server-api.md#gamelift-sdk-server-shutdownsession)」を参照してください。
   + **サーバープロセスが終了した** - Amazon GameLift Servers Local ログメッセージには、ゲームサーバーが `ProcessEnding()` を呼び出すことが示されます。AWS CLI への `DescribeGameSessions()` 呼び出しには、`Active` から `Terminated` (または `Terminating`) へのステータス変更が反映されます。

## Local でのバリエーション
<a name="integration-testing-local-special"></a>

Amazon GameLift Servers Local を使用する場合は、次の点に留意してください。
+ Amazon GameLift Servers ウェブサービスとは異なり、Local はサーバーのヘルスステータスを追跡せず、`onProcessTerminate` コールバックを開始しません。Local はゲームサーバーのヘルスレポートの記録を停止するだけです。
+ AWS SDK への呼び出しの場合、フリート ID は検証されないため、パラメータ要件を満たす任意の文字列値 (`^fleet-\S+`) にすることができます。
+ Local で作成されたゲームセッション ID の構造は異なります。ここに示すように、文字列 `local` が含まれています。

  ```
  arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6
  ```