Amazon GameLift Servers Anywhereでローカルテストを設定する
注記
このトピックでは、サーバー SDK for Amazon GameLift Servers バージョン 5.x 用サーバー SDK と統合されたゲームのローカルテストについて説明します。ゲームでサーバー SDK バージョン 4.x 以前を使用している場合は、「Amazon GameLift Servers Local を使用して統合をテストする」を参照してください。
Amazon GameLift Servers Anywhere フリートと独自のハードウェアを使用して、シミュレートされたホスト環境でゲームコンポーネントを繰り返し構築およびテストします。フリートを設定し、ローカルデバイスを登録して、Amazon GameLift Servers サービスへの接続を確立します。ゲームサーバービルドをデバイスにインストールし、ゲームサーバープロセスを開始し、必要に応じてゲーム機能をテストします。ゲームサーバービルドは、新しいビルドのイテレーションをテストするために、必要な回数だけ更新できます。
Anywhere フリートでは、AWS CLI またはテストスクリプトを使用してテストできます。ゲームクライアントを Amazon GameLift Servers と統合した場合は、同じローカルデバイスまたは別のデバイスでクライアントを実行できます。
フリートによるローカルテストは、Amazon GameLift Servers とのゲームサーバー統合をテストするために特に役立ちます。ローカルマシンのすべてのホスティングアクティビティと、イベントとログデータを完全に可視化できます。
注記
Unreal Engine または Unity にAmazon GameLift Servers プラグインを使用していますか? これらのツールには、Anywhere フリートでローカルテストを設定するためのガイド付きワークフローが含まれています。Unity 用プラグイン: Amazon GameLift Servers Anywhere を使用してローカルテストを設定する または Unreal 用プラグイン: Amazon GameLift Servers Anywhere でゲームをローカルでホストする のドキュメントに従います。
トピック
ローカルの Anywhere フリートを設定する
ローカルワークステーションの Anywhere フリートを作成するには、次の手順を実行します。AWS CLI または AWS マネジメントコンソール を使用して Amazon GameLift Servers を行う際の詳細な手順については、Amazon GameLift Servers Anywhere フリートを作成する を参照してください。
Anywhere フリートを作成するには
ワークステーション用のカスタムロケーションを作成します。(AWS CLI またはコンソール)。カスタムロケーションは、Anywhere フリートに含める予定のコンピューティングリソースのラベルにすぎません。カスタムロケーション名は
custom-で始まる必要があります。例:custom-my_laptop。「カスタムロケーションを作成する」を参照してください。Anywhere フリート (AWS CLI またはコンソール) を作成します。この手順では、ローカルワークステーションのカスタムロケーションを使用してフリートリソースを作成します。「Anywhere フリートを作成する」を参照してください。
新しいフリートの ID または ARN 値をメモします。この値は次のステップで必要になります。
ローカルワークステーションをフリートコンピューティングとして登録します (AWS CLI のみ)。ゲームサーバーをホストするには、Anywhere フリートに少なくとも 1 つのコンピューティングリソースが必要です。「フリートにコンピューティングを追加する」を参照してください。フリートにコンピューティングを追加するには、次の情報が必要です。
-
コンピューティング名。フリート内の各コンピューティングには、一意の名前が必要です。
-
Anywhere フリート識別子。
FleetIDまたはFleetArnのいずれかを使用できます。 -
コンピューティングの接続情報。
IpAddressまたはDnsNameのいずれかを指定します。これは、Amazon GameLift Servers とゲームクライアントがゲームサーバーに接続する方法です。 -
Anywhere フリート内のカスタムロケーション。
GameLiftServiceSdkEndpointの戻り値をメモします。Anywhere フリートで実行するようにゲームサーバーを更新するときは、この値が必要です。-
ゲームサーバーを更新してインストールする
このタスクは、ゲームサーバービルドを Amazon GameLift Servers サーバー SDK 5.x と既に統合していることを前提としています。統合プロセスでは、Amazon GameLift Servers サービスとやり取りしてゲームセッションを開始および管理できるように、ゲームサーバーにコードを追加します。
Anywhere フリートの場合、特定のゲームサーバー設定を手動で設定する必要があります。Amazon GameLift Servers マネージドフリートでは、これらの設定は自動的に設定されます。
Anywhere フリート用にゲームサーバーを準備する
認証トークンを取得します。ゲームサーバーには、 Amazon GameLift Serversサービスとのすべての通信に認証トークンを含める必要があります。Amazon GameLift Servers認証トークンは有効期間が短く、定期的に更新する必要があります。
ベストプラクティスとして、スクリプトを作成して次のタスクを完了します。
AWS CLI アクション
get-compute-auth-tokenを呼び出します。ローカルコンピューティングの環境変数など、ゲームサーバープロセスが取得できるトークンの戻り値を保存します。
ゲームサーバーと一緒にスクリプトをコンピューティングにインストールします。最初のゲームサーバープロセスを開始する前に、実行するスクリプトを設定します。ゲームサーバープロセスがアクティブな間は、スクリプトを定期的に実行して有効な認証トークンを維持します。コンピューティング上のすべてのゲームサーバープロセスは、同じ認証トークンを使用できます。
Amazon GameLift Servers ゲームサーバーコードを更新します。ゲームサーバーコードをサーバー SDK for Amazon GameLift Servers と統合すると、アクション
InitSdk()への呼び出しが追加されます。ゲームサーバーを Anywhere フリートで実行する場合、この呼び出しには、追加のサーバーパラメータが必要です。詳細については、開発言語に該当する「サーバープロセスを初期化する」および「サーバー SDK 5.x for Amazon GameLift Servers」を参照してください。サーバーパラメータは次のとおりです。-
webSocketUrl– このパラメータを、フリートにコンピューティングを登録したときに返されるGameLiftServiceSdkEndpoint値に設定します。 -
hostId– このパラメータを、Anywhere フリートにコンピューティング登録した時に指定されるコンピューティング名に設定します。 -
fleetId– このパラメータを Anywhere フリートの ID に設定します。 -
authToken– このパラメータを、コンピューティングの認証トークンを取得するリクエストに応答して返されるトークンに設定します。 -
processId– このパラメータを設定して、ローカルコンピューティングで実行されているゲームサーバープロセスを特定します。同時ゲームサーバープロセスごとに一意のプロセス ID が必要です。
各ゲームサーバープロセスが使用するサーバーパラメータ値は、プロセスが実行されている Anywhere フリートコンピューティングに固有である必要があります。コンピューティングに適切な値を取得する方法の詳細については、「フリートにコンピューティングを追加する」を参照してください。ベストプラクティスとして、
webSocketUrl、hostId、fleetId、およびauthTokenをローカルコンピューティングの環境変数として設定します。コンピューティングで実行されるすべてのサーバープロセスは、これらの値を使用します。-
ローカルコンピューティングにゲームサーバービルドをインストールします。ゲームサーバーの実行に必要なすべての依存関係を含めます。
ローカルコンピューティングで実行されている 1 つ以上のゲームサーバープロセスを開始します。ゲームサーバープロセスがサーバー SDK アクション
ProcessReady()を呼び出すと、プロセスはゲームセッションをホストする準備が整います。
ゲームセッションアクティビティをテストする
ゲームセッションを使用して、ゲームサーバーの統合をテストします。Amazon GameLift Servers機能と統合されたゲームクライアントがない場合は、AWS CLI を使用するとゲームセッションを開始できます。次のシナリオを試行します。
ゲームセッションの作成。create-game-session
コマンド (または CreateGameSession API オペレーション) を呼び出します。 Anywhereフリートの ID とカスタムロケーションを指定します。この呼び出しは、新しいゲームセッションの一意の識別子を返します。 ゲームセッションステータスを確認します。 describe-game-sessions
コマンド (または DescribeGameSessions API アクション) を呼び出します。ゲームセッション ID を指定します。この呼び出しは、ゲームセッションステータスを含む詳細なゲームセッション情報を返します。アクティブ状態のゲームセッションは、プレイヤーによる接続ができることを示します。フリートのすべてのゲームセッションのリストを取得するには、list-game-sessions コマンド (または ListGameSessions API アクション) を呼び出します。 -
ゲームセッションに接続します。ゲームクライアントにゲームセッションに参加する機能がある場合は、ゲームセッション情報に含まれる接続情報を使用します。
ゲームサーバーでのイテレーション
同じ Anywhere フリートとコンピューティングを使用すると、ゲームサーバーぶり度の別のバージョンをテストできます。
-
既存の
GameSessionをクリーンアップします。ゲームサーバープロセスがクラッシュした場合または、ProcessEnding()を呼び出さない場合は、ゲームサーバーがヘルスチェックの送信を停止した後に、Amazon GameLift Servers がGameSessionをクリーンアップします。 -
新しいゲームサーバービルドを生成します。ゲームサーバーを変更し、改訂されたビルドをパッケージ化します。
-
ローカルコンピューティングでゲームサーバービルドを更新します。以前の Anywhere フリートはまだアクティブで、ラップトップはフリート内のコンピューティングリソースとして登録されたままです。
-
更新された認証トークンを取得します。get-compute-auth-token
CLI コマンドを呼び出し、トークンをローカルコンピューティングに保存します。 -
ローカルコンピューティングで実行されている 1 つ以上のゲームサーバープロセスを開始します。ゲームサーバープロセスが
ProcessReady()を呼び出すと、テストに使用する準備が整います。
ゲームを Amazon GameLift Servers マネージドフリートに移行する
開発テストを完了し、起動の準備が整ったら、Amazon GameLift Servers マネージドフリートに切り替える良いタイミングとなります。マネージドフリートを使用して、ゲームホスティングリソースをファインチューニングおよびテストします。ゲームセッションの配置ソリューション (キューとマッチメーカー) を実装し、最適なホスティングハードウェア (スポットフリートを含む) と場所を選択し、容量のスケーリング戦略を選択します。また、フリート、キュー、マッチメーカーなど、すべてのゲームホスティングリソースのライフサイクルをより効率的に管理するために、AWS CloudFormation の使用を開始することもできます。
ローカルテストフリートから Amazon GameLift Servers マネージドフリートに移行するには、いくつかの小さな修正を行う必要があります。同じキューとマッチメーカーは再利用できます。次のいずれかのタスクを実行します。
-
ゲームサーバーのコード呼び出しを
InitSdk()に変更します。サーバーパラメータを削除します。マネージドフリートの場合、Amazon GameLift Servers はこの情報を自動的に追跡します。 -
Amazon GameLift Servers ビルドリソースを作成します。Anywhere テストフリートでは、ゲームサーバーのビルドと依存関係を各フリートコンピューティングに手動でデプロイする必要があります。マネージドフリートでは、ゲームビルドパッケージを作成して Amazon GameLift Servers にアップロードします。これにより、すべてのフリートコンピューティングに自動的にデプロイされます。ゲームビルドファイルのパッケージ化と、Amazon S3 バケット内のファイルを使用したビルドリソース作成の詳細については、「Amazon GameLift Servers のゲームサーバービルドを作成する」を参照してください。Amazon GameLift Servers はマネージドフリートでこれらのタスクを自動的に処理するため、コンピューティングを登録して認証トークンを取得するスクリプトを含めないでください。
-
マネージドフリートを作成します。コンソールまたは AWS CLI を使用し、EC2 マネージドフリートを指定してフリートを作成します。このタイプのフリートには、ビルドリソースとインスタンスタイプの指定など、追加の設定が必要です。フリートコンピューティングごとにゲームサーバーライフサイクルを管理するには、すべてのユーザーがランタイム設定をセットアップする必要があります。マネージドフリートの作成の詳細については、「Amazon GameLift Servers マネージド EC2 フリートを作成する」を参照してください。
-
フリートエイリアスをリダイレクトします (オプション)。Anywhere フリートで使用するエイリアスを設定すると、マネージドフリートに同じエイリアスを再利用できます。エイリアスの作成または更新の詳細については、「Amazon GameLift Servers エイリアスの作成」を参照してください。