

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

# Unity 用プラグイン: Amazon GameLift Servers Anywhere を使用してローカルテストを設定する
<a name="unity-plug-in-anywhere"></a>

このワークフローでは、Amazon GameLift Servers 機能用のクライアントコードとサーバーコードを追加し、プラグインを使用してローカルワークステーションをテストゲームサーバーのホストとして指定します。統合タスクが完了したら、プラグインを使用してゲームクライアントとサーバーのコンポーネントをビルドします。

**Amazon GameLift Servers Anywhere ワークフローを開始するには:**
+ Unity エディタのメインメニューで **Amazon GameLift Servers** を選択し、続いて **[Anywhere でホスト]** を選択します。この操作により、@Anywhere フリートでゲームを設定するためにプラグインページが開きます。このページには、ゲームコンポーネントを統合し、ビルドし、起動するための 5 ステッププロセスが表示されます。

## プロファイルを設定する
<a name="unity-plug-in-anywhere-profile"></a>

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

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

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

## ゲームコードを C\$1 サーバー SDK と統合する
<a name="unity-plug-in-anywhere-integrate"></a>

**注記**  
サンプルゲームをインポートした場合は、この手順をスキップできます。サンプルゲームアセットには、必要なサーバーコードとクライアントコードがすでに設定されています。

ワークフローのこの手順では、ゲームプロジェクトのクライアントコードとサーバーコードを更新します。
+ ゲームサーバーは、ゲームセッション開始のプロンプトの受信、接続情報の提供、ステータスの報告を行うために、Amazon GameLift Servers サービスと通信できる必要があります。
+ ゲームクライアントは、ゲームセッションの情報、ゲームセッションへの参加または開始情報、ゲームに参加するための接続情報を取得できる必要があります。

### サーバーコードを統合する
<a name="unity-plug-in-anywhere-integrate-server"></a>

カスタムシーンがある独自のゲームプロジェクトを使用している場合は、指定のサンプルコードを使用して、必要なサーバーコードをゲームプロジェクトに追加します。

1. ゲームプロジェクトファイルで、`Assets/Scripts/Server` フォルダを開きます。存在しない場合は、作成します。

1. GitHub リポジトリ[ aws/amazon-gamelift-plugin-unity](https://github.com/aws/amazon-gamelift-plugin-unity) に移動し、パス `Samples~/SampleGame/Assets/Scripts/Server` を開きます。

1. `GameLiftServer.cs` ファイルを見つけて、ゲームプロジェクトの `Server` フォルダにコピーします。サーバー実行可能ファイルを構築するときは、このファイルをビルドターゲットとして使用します。

サンプルコードには、Amazon GameLift Servers C\$1 サーバー SDK (バージョン 5) を使用する、以下の最小限の必須要素が含まれています。
+ Amazon GameLift Servers APIクライアントを初期化します。Amazon GameLift Servers Anywhere フリートには、サーバーパラメータを指定した `InitSDK()` コールが必要です。これらの設定は、プラグインで使用できるように自動的に設定されます。
+ Amazon GameLift Servers サービスからのリクエストに応答するため、`OnStartGameSession`、`OnProcessTerminate`、`onHealthCheck` を含む必須のコールバック関数を実装します。
+ 指定されたポートで `ProcessReady()` を呼び出し、サーバープロセスがゲームセッションをホストする準備が整ったことを Amazon GameLift Servers サービスに通知します。

サンプルサーバーコードをカスタマイズする場合は、以下のリソースを参照してください。
+ [サーバー SDK を使用して、Amazon GameLift Servers をゲームサーバーに追加します。](gamelift-sdk-server-api.md)
+ [C\$1 サーバー SDK 5.x for Amazon GameLift Servers -- アクション](integration-server-sdk5-csharp-actions.md)

### クライアントコードを統合する
<a name="unity-plug-in-anywhere-integrate-client"></a>

カスタムシーンで独自のゲームプロジェクトを使用している場合は、基本的な機能をゲームクライアントに統合する必要があります。また、プレイヤーがサインインしてゲームセッションに参加できるように、UI 要素を追加する必要があります。Amazon GameLift Servers ( AWS SDK 内の) のサービス API を使用して、ゲームセッション情報の取得、新しいゲームセッションの作成、既存のゲームセッションへの参加を行います。

Anywhere フリートでのローカルテスト用クライアントを構築する場合、Amazon GameLift Servers サービスへの直接呼び出しを追加できます。クラウドホスティング用のゲームを開発する場合、または本番ホスティングに Anywhere フリートを使用する場合、ゲームクライアントと Amazon GameLift Servers サービス間のすべての通信を処理するクライアント側バックエンドサービスを作成する必要があります。

Amazon GameLift Servers をクライアントコードに統合するには、次のリソースを参考にしてください。
+ クライアントを GitHub リポジトリ aws/amazon-gamelift-plugin-unity の GameLiftCoreApi クラスと統合します。このクラスは、プレイヤー認証とゲームセッション情報の取得に関する制御を提供します。
+ GitHub リポジトリ aws/amazon-gamelift-plugin-unity、`Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs` にあるサンプルゲーム統合を表示します。
+ Unity ゲームクライアントに Amazon GameLift Servers を追加する手順に従います。

Anywhere フリートに接続するゲームクライアントの場合、ゲームクライアントには以下の情報が必要です。プラグインは、プラグインで作成したリソースを使用するようにゲームプロジェクトを自動的に更新します。
+ FleetId - Anywhere フリートの一意の識別子。
+ FleetLocation - Anywhere フリートのカスタムロケーション。
+ AwsRegion - Anywhere フリートがホストされている AWS リージョン。これは、ユーザープロファイルで設定したリージョンです。
+ ProfileName - AWS SDK for Amazon GameLift Servers へのアクセスを許可するローカルマシンの AWS 認証情報プロファイル。ゲームクライアントは、これらの認証情報を使用して Amazon GameLift Serversサービスへのリクエストを認証します。

**注記**  
認証情報プロファイルはプラグインによって生成され、ローカルマシンに保存されます。そのため、ローカルマシン (または同じプロファイルのマシン) でクライアントを実行する必要があります。

## Anywhere フリートに接続する
<a name="unity-plug-in-anywhere-fleet"></a>

このステップでは、使用する Anywhere フリートを指定します。Anywhere フリートは、ゲームサーバーをホスティングするための、どこにでも配置できる一連のコンピューティングリソースを定義します。
+ 現在使用している AWS アカウントに既存の Anywhere フリートがある場合は、**フリート名**ドロップダウンフィールドを開き、フリートを選択します。このドロップダウンには、現在アクティブなユーザープロファイルの AWS リージョン内の Anywhere フリートのみが表示されます。
+ 既存のフリートがない場合、または新しいフリートを作成する場合は、**[新しい Anywhere フリートを作成]** を選択してフリート名を指定します。

プロジェクトに Anywhere フリートを選択すると、Amazon GameLift Servers はフリートのステータスがアクティブであることを確認し、フリート ID を表示します。このリクエストの進行状況は Unity エディタの出力ログで追跡できます。

## コンピューティングを登録する
<a name="unity-plug-in-anywhere-register"></a>

このステップでは、ローカルワークステーションを新しい Anywhere フリートのコンピューティングリソースとして登録します。

1. ローカルマシンのコンピューティング名を入力します。フリートに複数のコンピューティングを追加する場合、名前は一意でなければなりません。

1. **[コンピューティングを登録]** を選択します。このリクエストの進行状況は Unity エディタの出力ログで追跡できます。

プラグインは、IP アドレスが localhost (127.0.0.1) に設定されているローカルワークステーションを登録します。この設定は、同じマシンでゲームクライアントとサーバーを実行することを前提としています。

このアクションに応じて、Amazon GameLift Servers はコンピューティングに接続できることを確認し、新しく登録されたコンピューティングに関する情報を返します。

## ゲームを起動する
<a name="unity-plug-in-anywhere-launch"></a>

このステップでは、ゲームコンポーネントをビルドし、それを起動してゲームをプレイします。以下のタスクを実行します。

1. ゲームクライアントの設定を行います。このステップでは、プラグインにプロンプトして、ゲームプロジェクトの `GameLiftClientSettings` アセットを更新します。プラグインはこのアセットを使用して、ゲームクライアントが Amazon GameLift Servers サービスに接続する際に必要となる特定の情報を保存します。

   1. サンプルゲームをインポートして初期化しなかった場合は、新しい `GameLiftClientSettings` アセットを作成します。Unity エディタのメインメニューで、**[アセット]、[作成]、[Amazon GameLift]、[クライアント設定]** の順に選択します。プロジェクトで `GameLiftClientSettings` の複数のコピーを作成すると、プラグインはこれを自動検出し、プラグインが更新するアセットについて通知します。

   1. **[ゲームを起動]** で、**[クライアントの設定: Anywhere 設定を適用]** を選択します。このアクションは、先ほど設定した Anywhere フリートを使用するようにゲームクライアント設定を更新します。

1. ゲームクライアントをビルドして実行します。

   1. 標準の Unity ビルドプロセスを使用してクライアント実行可能ファイルを構築します。**[ファイル]、[ビルド設定]** の順に選択し、プラットフォームを **Windows、Mac、Linux **に切り替えます。サンプルゲームをインポートして設定を初期化すると、ビルドリストとビルドターゲットが自動更新されます。

   1. 新しく構築されたゲームクライアント実行可能ファイルの 1 つ以上のインスタンスを起動します。

1. Anywhere フリートでゲームサーバーを起動します。エディタで、**[サーバー: サーバーを起動]** を選択します。このタスクでは、ライブサーバーが起動されます。Unity エディタが開いている限り、クライアントはこのサーバーに接続できます。

1. ゲームセッションを開始するかゲームセッションに参加します。ゲームクライアントインスタンスで、UI を使用して各クライアントをゲームセッションに参加させます。参加方法は、機能をクライアントに追加した方法によって異なります。

サンプルゲームクライアントを使用している場合、次の特徴があります。
+ プレイヤーログインコンポーネント。Anywhere フリートのゲームサーバーに接続する場合、プレイヤーの検証はありません。任意の値を入力して、ゲームセッションに参加します。
+ ゲーム参加のシンプルな UI。クライアントがゲームに参加しようとすると、クライアントは利用可能なプレイヤースロットがあるアクティブなゲームセッションを自動的に検索します。ゲームセッションが利用できない場合、クライアントは新しいゲームセッションをリクエストします。ゲームセッションが利用可能な場合、クライアントは利用可能なゲームセッションへの参加をリクエストします。複数の同時クライアントでゲームをテストすると、最初のクライアントがゲームセッションを開始し、残りのクライアントは既存のゲームセッションに自動的に参加します。
+ 4 つのプレイヤースロットがあるゲームセッション。最大 4 つのゲームクライアントインスタンスを同時に起動でき、同じゲームセッションに参加できます。

**サーバー実行可能ファイルからの起動 (オプション)**

Anywhere フリートでテストするためのゲームサーバー実行可能ファイルを構築して起動できます。

1. 標準の Unity ビルドプロセスを使用してサーバー実行可能ファイルを構築します。**[ファイル]、[ビルド]** の順に選択し、プラットフォームを**専有サーバー**とビルドに切り替えます。

1. Anywhere フリート ID と AWS リージョンを使用して AWS CLI コマンド [get-compute-auth-token](https://docs.aws.amazon.com/cli/latest/reference/gamelift/get-compute-auth-token.html) を呼び出して、短期認証トークンを取得します。フリート ID は、フリートの作成時に **[Anywhere フリートに接続する]** に表示されます。アクティブな**プロファイルを選択すると、「プロファイルの設定**」に AWS リージョンが表示されます。

   ```
   aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
   ```

1. コマンドラインから新しく構築されたゲームサーバー実行可能ファイルを起動し、有効な認証トークンを渡します。

   ```
   my_project.exe --authToken [token]
   ```