チュートリアル: Amazon GameLift Servers ラッパーを使用したクイックオンボーディング
Amazon GameLift Servers のオンボーディングチュートリアルへようこそ。このチュートリアルでは、クラウドベースのコンピューティングリソースのフリートでホストされるようにゲームサーバーを迅速にデプロイします。このチュートリアルを使用すると、Amazon GameLift Servers 用サーバー SDK をゲームコードに統合する作業をスキップし、代わりに最小限の機能でゲームをデプロイして Amazon GameLift Servers サービスと通信し、ゲームセッションを実行できます。基本的なホスティングソリューションを設定し、それを使用して、自動スケーリングやマッチメーキングなどの幅広い機能を体験します。また、ライブデモの一部としてゲームのプロトタイプをホストしたり、テストしたりするのにも最適です。
このオンボーディング方法の主な利点:
-
高速ホスティングのためにゲームサーバーをすばやくデプロイします。
-
ゲームコードの変更はゼロで、変更は必要ありません。
-
ゲームエンジンに関係なく、このメソッドを任意のゲーム実行可能ファイルで使用します。
-
ゲームセッションアクティビティのモニタリングやホスティングの状態など、すべての Amazon GameLift Servers 管理ツールについて説明します。
注記
ラッパーは、評価と基本的な本番環境での使用を目的としています。詳細なプレイヤーセッション管理などの高度な機能には、完全なサーバー SDK 統合が必要です。
前提条件
開始する前に、以下を確認してください。
-
適切なアクセス許可がある AWS アカウント
-
AWS CLI のインストール
-
Go 1.18+
-
マルチプレイヤーゲームサーバー実行可能ファイル
-
Make (Linux/Mac)
-
アクティブなアカウントでインストールされた Git
概要
このチュートリアルでは、次の作業を行います。
-
ラッパーの取得と構築
-
ゲームビルドを準備する
-
ラッパーを設定する
-
サンプルゲームサーバービルドをアップロードします。
-
マネージド EC2 フリートを作成する
-
ゲームセッションを作成して接続する
-
ゲームサーバーのモニタリングと管理
-
ゲームサーバーのスケーリング
ステップ 1: ゲームサーバーラッパーを取得して構築する
次のコマンドを使用して、ゲームサーバーのラッパーソースを取得し、ラッパーを構築します。これらのコマンドは SSH を使用しますが、Github リポジトリに直接移動することもできます。
Windows
> git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git > cd amazon-gamelift-servers-game-server-wrapper > powershell -file .\build.ps1
Mac と Linux
$ git clone git@github.com:amazon-gamelift/amazon-gamelift-servers-game-server-wrapper.git $ cd amazon-gamelift-servers-game-server-wrapper $ make
ビルドが成功すると、「out」ディレクトリが amazon-gamelift-servers-game-server-wrapper に追加されます。このディレクトリには、サポートされているホスティングフリートオプションごとに 1 つずつ、ビルドアーティファクトのセットを含む 3 つのフォルダがあります。このチュートリアルでは、マネージド EC2 フリートにデプロイするため、gamelift-servers-managed-ec2 フォルダを使用します。
ステップ 2: ゲームサーバービルドを準備する
このステップでは、Amazon GameLift Servers にアップロードするゲームサーバービルドファイルを準備します。
ディレクトリを作成します。
次に、ローカルマシンにゲームディレクトリを準備します。このディレクトリには、Amazon GameLift Servers でゲームサーバーを実行するために必要なすべてのファイルが含まれている必要があります。これには、ゲームサーバーラッパー、ゲームサーバービルド、およびラッパーをゲームサーバーと連携させる config.yaml が含まれます。
以下のステップを使用します。
-
マネージド EC2 フリート。ゲームサーバーのラッパー出力フォルダで、マネージド EC2 フリートにデプロイするためのビルドアーティファクトを見つけます。ビルドは、
out\linux\amd64\gamelift-servers-managed-ec2に示すように アウトディレクトリに書き込まれます。 -
ゲームサーバーの実行可能ファイルと、
gamelift-servers-managed-ec2フォルダの実行に必要なすべての関連ファイルをコピーします。必要に応じて、ネストされたディレクトリを持つことができます。
ディレクトリ構造の例は次のようになります。
gamelift-servers-managed-ec2 │-- config.yaml │-- amazon-gamelift-servers-game-server-wrapper │-- MyGame │ │-- server-executable.exe │ │-- my-game-settings │ │ ......
ステップ 3: フリートのラッパーを設定する
Amazon GameLift Servers はフリートのコンピューティングインスタンスのライフサイクルを管理し、サーバービルドがインストールされた新しいインスタンスをスピンアップし、必要に応じてインスタンスをリサイクルします。サービスは、各インスタンス上で実行されるゲームサーバープロセスのライフサイクルを管理します。マネージド EC2 フリートは、複数の場所にインスタンスを配置して、どこにいてもプレイヤーをサポートできます。
config.yaml ファイルを編集して、ログ記録、ポート設定、サーバー初期化用のラッパーを設定します。
-
ログ記録設定を構成します。ゲームサーバーラッパーは、ゲームサーバープロセスごとにログメッセージを生成します。デフォルトでは、ログレベルは最大の詳細度でデバッグするように設定されています。これはセットアップとトラブルシューティングに非常に役立ち、ログメッセージの詳細度を決定します。この場合、最も詳細です。オプションには、デバッグ、情報、警告、エラー (最も詳細でない) などがあります。
-
ゲームサーバーログディレクトリへのパスを指定します。ゲームサーバーログのデフォルトパスは
./game-server-logsです。このディレクトリには、ゲームサーバーによって生成されたすべてのログが含まれ、各インスタンスにこのディレクトリが存在します。ログは、[イベント] タブからアクセスされる Amazon GameLift Servers に自動的にアップロードされます。詳細については、「トラブルシューティング」セクションを参照してください。 -
ネットワークポート設定を定義します。ゲームポートを任意の値に設定します。このチュートリアルでは、1 つのポートのみを指定します。これは、インスタンスごとに 1 つの同時ゲームサーバープロセスのみを実行するフリートを作成するためです。一度に複数のプロセスを実行する場合は、同時プロセスごとに十分なポートを設定する必要があります。デフォルト値は 設定ファイルに示すように 37016 ですが、一般的に Linux ビルドを使用するフリートではポート 22 と 1026-60000 を使用します。Windows ビルドを使用するフリートの場合は、ポート 1026-60000 を使用します。
-
ゲームサーバー実行可能ファイルへのパスを設定します。
./MyGame/my-server-executable.exeでは、実際の名前と場所を使用して、ゲームサーバー実行ファイルへのパスをカスタマイズします。これは、ゲームサーバーを起動するためのエントリポイントです。 -
ゲームサーバーの引数を設定します。少なくとも、-port 引数を指定し、前に定義したのと同じゲームポート値を使用します。「pos」値 0 は、これが最初の引数であることを示します。必要に応じて他の引数を追加します。これらの引数は起動時にゲームサーバーに渡されるため、ランタイム動作を設定できます。
-
引数:
"--port" -
値:
"{{.port number here}}" -
位置:
0(リストの最初の引数)
-
設定例:
log-config: wrapper-log-level: debug game-server-logs-dir: ./game-server-logs ports: gamePort: 37016 game-server-details: executable-file-path: ./MyGame/my-server-executable game-server-args: - arg: "--port" val: "{{.gameport}}" pos: 0
ステップ 4: ゲームサーバービルドをアップロードする
これで、ゲームサーバービルドに必要なすべての要素 (ゲームサーバーラッパー、config.yaml、ゲームサーバーファイル) が完了し、ホスティングのためにゲームビルドを Amazon GameLift Servers にアップロードする準備が整いました。ゲームビルドをアップロードする最も簡単な方法は、次の例に示すように AWS CLI コマンド upload-build を使用することです。
Windows でのゲームビルドのアップロード:
aws gamelift upload-build \ --name gamelift-test-2025-03-11-1 \ --build-version gamelift-test-2025-03-11-1 \ --build-root out/windows/amd64/gamelift-servers-managed-ec2 \ --operating-system WINDOWS_2022 \ --server-sdk-version 5.3.0 \ --region us-west-2
注記
Mac および Linux ビルドの場合は、--operating-system AMAZON_LINUX_2023 を使用します。
ビルドを作成するときは、API レスポンスからビルド ID を記録して、フリートの作成に使用します。
ステップ 5: マネージド EC2 フリートを作成する
次のステップでは、最小限のフリート設定について説明します。これにより、できるだけ早く起動して実行できます。
フリートを作成するには:
-
AWS マネジメントコンソール にログインし、Amazon GameLift Servers に移動します。
-
コンソールウィンドウの上部にあるメニューバーで、ビルドがどのリージョンにあるかを確認します。フリートが同じリージョンに存在する必要があるため、メモしておきます。そうしないと、ビルドを検索または選択できなくなります。
-
マネージド EC2 セクションのナビゲーションペインで、[ビルド] を選択します。
-
以前にアップロードしたビルドを選択して、ビルドの詳細ページを表示します。
-
フリートセクションで [フリートを作成] を選択すると、マネージド EC2 フリートの定義の詳細ページが表示され、フリートのステータスを追跡したり、[イベント] タブでフリート作成イベントを表示したりできます。
-
名前と説明を入力し、[次へ] を選択します。
-
インスタンスの詳細の定義ページには、ビルドのリージョンがデフォルトで表示されます。追加するリージョンを選択します。
-
[フリートタイプ] で [オンデマンド] を選択します。
-
[インスタンスタイプ] で [c5.large] を選択し、[次へ] を選択します。
-
[ランタイム設定] では、アップロードされたゲームビルドはラッパーを使用するため、代わりにラッパー実行可能ファイルを指す必要があります。Windows サーバーの場合、これは「
C:\game\amazon-gamelift-servers-game-server-wrapper.exe」になります。Linux ゲームサーバーの場合、これは「/local/game/amazon-gamelift-servers-game-server-wrapper」です。例:
LaunchPath": "/local/game/amazon-gamelift-servers-game-server-wrapper", "ConcurrentExecutions": 1, "Parameters": "—port 37016また、
config.yamlで設定されたポートとランタイム設定起動パラメータを許可する範囲でゲームポート値を設定します。config.yamlのポートは、フリートのランタイム設定で指定されたポートと一致する必要はありませんが、設定で別のポートが指定されている場合、その値はconfig.yamlの値よりも優先されます。ランタイム設定に入力された起動パラメータは、config.yamlの内容も上書きします。 [確認と作成]ページで、すべての設定を再確認し、[送信] を選択してフリートを作成します。フリートのステータスは、ゲームサーバーをホストするために容量をスピンアップすると変化し、すぐにアクティブのステータスが表示されます。アクティベーションが完了し、フリートがデプロイされると、サービスはゲームセッションリクエストを受け取る準備ができているラッパーを起動します。
ステップ 6: ゲームセッションを作成して接続する
フリートのステータスがアクティブの場合、ゲームサーバーの準備が整い、ゲームセッションのホストを待っていることを意味します。ゲームセッションを開始するには、Amazon GameLift Servers サービスにゲームセッションリクエストを行います。ここでは、AWS CLI を使用してこのリクエストを行います。
注記
AWS CLI を使用してゲームセッションを作成することは、プロセスをテストして理解するのに役立ちます。ある時点で、ゲームのマッチメーキングまたはゲームセッションプレイスメントシステムの一部として、AWS へのプログラムによる SDK 呼び出しをゲームバックエンドサービスに追加します。
以下を使用してゲームセッションを作成します。
aws gamelift create-game-session \ --fleet-id <FLEET_ID> \ --game-properties '[{"Key": "exampleProperty", "Value": "exampleValue"}]' \ --maximum-player-session-count 3 \ --region us-west-2
カスタマイズされたゲームプロパティをサーバー実行可能ファイルに渡すこともできます。詳細については、README のゲームサーバー引数を参照してください。create-game-session 呼び出しを受信すると、Amazon GameLift Servers はラッパーに通知してゲームサーバー実行可能ファイルを起動し、ゲームセッションを開始します。config.yaml の内容はゲームサーバーの設定に影響し、コンソールで設定される起動パラメータによってゲームセッション自体の設定が決まります。
ゲームプロパティを追加するための形式例:
defaultArgs: - arg: "--port" val: "{{.GamePort}}" pos: 0 - arg: "--ipAddress" val: "{{.IpAddress}}" pos: 1 - arg: "--gameSessionId" val: "{{.GameSessionId}}" pos: 2
ステップ 7: フリートを管理およびモニタリングする
ゲームサーバーフリートが設定され、ゲームセッションが開始されたので、Amazon GameLift Servers コンソールから管理およびモニタリングできます。これを実現する最善の方法は、フリートの詳細ページから、フリートの詳細を編集したり、[スケーリング] タブでフリートのスケーリングと容量を変更したりできます。ゲームサーバーのスケーリングについては、次のセクションを参照してください。
[メトリクス] タブを選択すると、アクティビティメトリクスとハードウェアメトリクスのモニタリングを示すグラフが表示されます。メトリクスグラフの詳細については、フリートの ID の横にある [情報] リンクを選択します。さらに、[メトリクス] タブからゲームサーバーを注意深くモニタリングできますが、CloudWatch ダッシュボードでこれらのメトリクスにアラームを追加することもできます。
コンソールから CloudWatch ダッシュボードに移動するには:
-
検索バーに「CloudWatch」と入力し、検索結果リストから選択して CloudWatch 概要を表示します。
-
下にスクロールして [GameLift ダッシュボードを表示] を選択すると、フリートとゲームセッションの主要なメトリクスに基づくグラフが表示されます。
ステップ 8: ゲームサーバーをスケールする
次のステップでは、自動スケーリングを設定します。自動スケーリングでは、ゲームサーバーのアクティビティに応じてフリートキャパシティを動的に調整します。自動スケーリングでは、ゲームセッションを開始するプレイヤーが増えるとインスタンスを追加し、プレイヤーが減ると未使用のインスタンスを解放できます。自動スケーリングは、スムーズで高速なプレイヤー体験を提供しながら、ホスティングリソースとコストを最小限に抑える効果的な方法です。
ゲームの起動を準備するときは、フリートの自動スケーリングを設定する必要があります。自動スケーリングは、スムーズで高速なプレイヤー体験を提供しながら、ホスティングリソースとコストを最小限に抑える効果的な方法です。
フリートの容量を手動で設定するには
フリートの容量を手動で設定するには
-
フリートの詳細ページの [スケーリング] タブに移動します。
-
場所を選択し、[編集] を選択します。
-
[目的のインスタンス] 値を変更し、現在の値を超えてスケールするように [最小] サイズと [最大] サイズ設定を変更して、[確定] を選択します。
注記
最大インスタンス設定をストップギャップとして使用し、過剰なスケーリングとコストを防ぎます。
ターゲットベースの自動スケーリングを使用するには
ターゲットベースの自動スケーリングを使用するには
ターゲットベースの自動スケーリング (ターゲット追跡) は、フリートスケーリングを利用可能なゲームセッションの割合にリンクします。プレイヤーがゲームプレイを急増し、利用可能なゲームセッションが減少すると、フリートに自動的にインスタンスを追加することで応答します。
-
[ターゲットベースの自動スケーリングポリシー] で、[ポリシーを追加] を選択し、設定した利用可能なゲームセッションの割合のしきい値に達したときにフリートの容量が自動的に変更されるように設定します。バッファを大きくすると、急増をより適切に処理し、新しいプレイヤーがゲームにすばやく参加できますが、ホスティングコストが高くなる可能性もあります。
-
[確定] を選択して変更を受け入れます。
ルールベースの自動スケーリングにより、スケーリングを他のフリートメトリクスにリンクし、カスタムしきい値とスケーリングレスポンスを設定する機能など、よりきめ細かい制御が可能になります。強力なオプションを提供しますが、カスタムルールの動作を理解するには、CLI の使用と十分なテストが必要です。このチュートリアルでは、最初にターゲットベースのアプローチを設定することに重点を置いています。
一般的な問題のトラブルシューティング
ゲームサーバーとゲームセッションの実行中に発生する可能性がある一般的な問題は次のとおりです。サーバーまたはゲームセッションのいずれかが正しく動作していない場合、最初のステップはログを確認することです。ログには、新規デプロイや本番環境でのゲームで、以下に示す問題のいずれかが明らかになることがあります。
ログには多くの場合、次の内容が表示されます。
-
ゲームサーバープロセスは起動できません。これは wrapper 設定のエラーである可能性があります。ファイルに正しい起動パス、起動パラメータ、および引数が設定されていることを確認します。
-
ゲームサーバービルドを実行できません。これはゲームコードのエラーである可能性があります。
-
プレイヤーはゲームセッションに接続できません。これは、おそらくポート設定エラーです。
-
遅延または接続の低速化。スケーリングポリシーとしきい値を確認します。
-
接続がありません。フリートのポートルールと設定を確認します。
Amazon GameLift Servers フリートのイベントログを表示するには
Amazon GameLift Servers フリートのイベントログを表示するには
-
Amazon GameLift Servers コンソールを開きます。
-
フリートの詳細ページで [イベント] タブを選択し、ログをダウンロードします。[メトリクス] タブから、ゲームサーバーのヘルス、ゲームセッションのアクティベーション、アクティビティ、およびハードウェアメトリクスをモニタリングすることもできます。
ゲームセッションログを表示するには
ゲームセッションログを表示するには
-
コンソールからフリートを開き、[ゲームセッション] タブを開きます。
-
リストからゲームセッション ID を選択すると、概要ページが表示されます。
-
[ログをダウンロード] を選択して、ログファイルをローカルにダウンロードします。
CLI でゲームセッションログを表示するには、GetGameSessionLogURL API を使用します。Amazon GameLift Servers はログを14 日間自動的に保存します。
フリートの Amazon CloudWatch logsを設定することもできます。これにより、追加のログ記録機能と他の AWS モニタリングサービスとの統合が提供されます。
CloudWatch を介したリアルタイムログアクセスまたは延長保持期間の場合:
-
Amazon GameLift Servers コンソールダッシュボードの上部の検索バーに「CloudWatch」と入力し、結果のドロップダウンから選択します。
-
CloudWatch ロググループに移動し、特定のセッションを検索します。最も簡単な方法は、[すべて検索] をクリックし、gameSessionId または clientId を使用してフィルタリングすることです。