チュートリアル: Amazon GameLift Serversラッパーを使用したクイックオンボーディング - Amazon GameLift Servers

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

チュートリアル: Amazon GameLift Serversラッパーを使用したクイックオンボーディング

のオンボーディングチュートリアルへようこそAmazon GameLift Servers。このチュートリアルでは、クラウドベースのコンピューティングリソースのフリートでホストされるようにゲームサーバーを迅速にデプロイします。このチュートリアルを使用して、 サーバー SDK をゲームコードに統合する作業Amazon GameLift Serversをスキップし、代わりに最小限の機能でゲームをデプロイしてAmazon GameLift Serversサービスと通信し、ゲームセッションを実行します。基本的なホスティングソリューションを設定し、それを使用して、自動スケーリングやマッチメーキングなどの幅広い機能を体験します。また、ライブデモの一部としてゲームのプロトタイプをホストしたり、テストしたりするのにも最適です。

このオンボーディング方法の主な利点:

  • 高速ホスティングのためにゲームサーバーをすばやくデプロイします。

  • ゲームコードの変更はゼロで、変更は必要ありません。

  • ゲームエンジンに関係なく、このメソッドを任意のゲーム実行可能ファイルで使用します。

  • ゲームセッションアクティビティのモニタリングやホスティングの状態など、すべてのAmazon GameLift Servers管理ツールについて調べます。

注記

ラッパーは、評価および基本的な本番稼働用です。詳細なプレイヤーセッション管理などの高度な機能には、完全なサーバー SDK 統合が必要です。

前提条件

開始する前に、以下を確認してください。

  • 適切なアクセス許可 AWS アカウント を持つ

  • AWS CLI インストール済み

  • Go 1.18 以降

  • マルチプレイヤーゲームサーバー実行可能ファイル

  • Make (Linux/Mac)

  • アクティブなアカウントでインストールされた Git

概要

このチュートリアルでは、次のことを行います。

  1. ラッパーの取得と構築

  2. ゲームビルドを準備する

  3. ラッパーを設定する

  4. ゲームサーバービルドをアップロードする

  5. マネージド EC2 フリートを作成する

  6. ゲームセッションを作成して接続する

  7. ゲームサーバーのモニタリングと管理

  8. ゲームサーバーのスケーリング

ステップ 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 が含まれます。

以下のステップを使用します。

  1. マネージド EC2 フリート。ゲームサーバーのラッパー出力フォルダで、マネージド EC2 フリートにデプロイするためのビルドアーティファクトを見つけます。ビルドは、次に示すように アウトディレクトリに書き込まれます: out\linux\amd64\gamelift-servers-managed-ec2

  2. ゲームサーバーの実行可能ファイルと、 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 ファイルを編集して、ログ記録、ポート設定、サーバー初期化用のラッパーを設定します。

  1. ログ記録設定を構成します。ゲームサーバーラッパーは、ゲームサーバープロセスごとにログメッセージを生成します。デフォルトでは、ログレベルは最大の詳細度でデバッグするように設定されています。これはセットアップとトラブルシューティングに非常に役立ち、ログメッセージの詳細度を決定します。この場合、最も詳細です。オプションには、デバッグ、情報、警告、エラー (最も詳細でない) などがあります。

  2. ゲームサーバーのログディレクトリへのパスを指定します。ゲームサーバーログのデフォルトパスは です./game-server-logs。このディレクトリには、ゲームサーバーによって生成されたすべてのログが含まれ、各インスタンスにはログが含まれます。ログは、イベントタブからアクセスされる Amazon GameLift Servers に自動的にアップロードされます。詳細については、「トラブルシューティング」セクションを参照してください。

  3. ネットワークポート設定を定義します。ゲームポートを任意の に設定します。このチュートリアルでは、インスタンスごとに 1 つの同時ゲームサーバープロセスのみを実行するフリートを作成するため、1 つのポートのみを指定します。一度に複数のプロセスを実行する場合は、同時プロセスごとに十分なポートを設定する必要があります。デフォルト値は 設定ファイルに示すように 37016 ですが、一般的に Linux ビルドを使用するフリートではポート 22 と 1026-60000 を使用します。Windows ビルドを使用するフリートの場合は、ポート 1026-60000 を使用します。

  4. ゲームサーバー実行可能ファイルへのパスを設定します。ゲームサーバー実行可能ファイルへのパスを実際の名前と場所で./MyGame/my-server-executable.exeカスタマイズするには。これは、ゲームサーバーを起動するためのエントリポイントです。

  5. ゲームサーバーの引数を設定します。少なくとも、-port 引数を指定し、前に定義したのと同じゲームポート値を使用します。「pos」値 0 は、これが最初の引数であることを示します。必要に応じて他の引数を追加します。これらの引数は起動時にゲームサーバーに渡されるため、ランタイム動作を設定できます。

    1. 引数: "--port"

    2. 値: "{{.port number here}}"

    3. 位置: 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のためにゲームビルドを にアップロードする準備が整いました。ゲームビルドをアップロードする最も簡単な方法は、次の例upload-buildに示すように AWS CLI コマンドを使用することです。

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_2016 \ --server-sdk-version 5.3.0 \ --region us-west-2
注記

Mac および Linux ビルドの場合は、--operating-system AMAZON_LINUX_2023 を使用します。

ビルドを作成するときは、API レスポンスからビルド ID を記録して、フリートの作成に使用します。

ステップ 5: マネージド EC2 フリートを作成する

次のステップでは、最小限のフリート設定について説明します。これにより、できるだけ早く起動して実行できます。

フリートを作成するには:

  1. にログイン AWS Management Console し、 に移動しますAmazon GameLift Servers。

  2. コンソールウィンドウの上部にあるメニューバーで、ビルドがどのリージョンにあるかを確認します。フリートが同じリージョンに存在する必要があるため、メモしておきます。そうしないと、ビルドを検索または選択できなくなります。

  3. Managed EC2 セクションのナビゲーションペインで、ビルドを選択します。

  4. 以前にアップロードしたビルドを選択して、ビルドの詳細ページを表示します。

  5. フリートセクションでフリートの作成を選択すると、マネージド EC2 フリートの定義の詳細ページが表示され、フリートのステータスを追跡したり、イベントタブでフリート作成イベントを表示したりできます。

  6. 名前と説明を入力し、次へを選択します。

  7. インスタンスの詳細の定義ページには、ビルドのリージョンがデフォルトで表示されます。追加するリージョンを選択します。

  8. フリートタイプオンデマンドを選択します。

  9. インスタンスタイプc5.large を選択し、次へを選択します。

  10. ランタイム設定では、アップロードされたゲームビルドはラッパーを使用するため、代わりにラッパー実行可能ファイルを指す必要があります。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

  11. 確認と作成ページで、すべての設定を再確認し、送信を選択してフリートを作成します。フリートのステータスは、ゲームサーバーをホストするために容量をスピンアップすると変化し、すぐにアクティブのステータスが表示されます。アクティベーションが完了し、フリートがデプロイされると、サービスはゲームセッションリクエストを受信する準備ができているラッパーを起動します。

ステップ 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 ダッシュボードに移動するには:

  1. 検索バーにCloudWatch」と入力し、検索結果リストから選択して CloudWatch 概要を表示します。

  2. 下にスクロールして GameLift ダッシュボードの表示を選択すると、フリートとゲームセッションの主要なメトリクスに基づくグラフが表示されます。

ステップ 8: ゲームサーバーをスケールする

次のステップでは、自動スケーリングを設定します。自動スケーリングを使用すると、ゲームサーバーのアクティビティに応じてフリート容量を動的にスケーリングできます。プレイヤーがゲームセッションに到着して開始すると、自動スケーリングはより多くのインスタンスを追加し、プレイヤーの需要が減ると、自動スケーリングは未使用のインスタンスを解放します。これは、スムーズで高速なプレイヤーエクスペリエンスを提供しながら、ホスティングリソースとコストを最小限に抑える効果的な方法です。

ゲームの起動を準備するときは、フリートの自動スケーリングを設定する必要があります。自動スケーリングは、スムーズで高速なプレイヤーエクスペリエンスを提供しながら、ホスティングリソースとコストを最小限に抑える効果的な方法として推奨されます。

フリート容量を手動で設定するには

フリート容量を手動で設定するには

  1. フリートの詳細ページのスケーリングタブに移動します。

  2. 場所を選択し、編集を選択します。

  3. 希望するインスタンス値を変更し、現在の値を超えてスケールするように最小サイズと最大サイズ設定を変更します。

注記

最大インスタンス設定をストップギャップとして使用して、過剰なスケーリングとコストを防ぎます。

  1. [確認] を選択してください。

ターゲットベースの自動スケーリングを使用するには

ターゲットベースの自動スケーリングを使用するには

ターゲットベースの自動スケーリング (ターゲット追跡) は、フリートのスケーリングを利用可能なゲームセッションの割合にリンクします。プレイヤーがゲームをプレイするように急増し、利用可能なゲームセッションが減少すると、フリートに自動的にインスタンスを追加することで応答します。

  1. ターゲットベースの自動スケーリングポリシーで、ポリシーを追加を選択し、設定した利用可能なゲームセッションの割合のしきい値に達したときにフリートの容量が自動的に変更されるように設定します。バッファを大きくすると、急増をより適切に処理し、新しいプレイヤーがゲームにすばやく参加できますが、ホスティングコストが高くなる可能性もあります。

  2. 確認を選択して変更を受け入れます。

ルールベースの自動スケーリングを使用すると、スケーリングを他のフリートメトリクスにリンクし、カスタムしきい値とスケーリングレスポンスを設定する機能など、よりきめ細かい制御が可能になります。強力なオプションを提供しますが、カスタムルールの動作を理解するには、 CLI と重要なテストを使用する必要があります。このチュートリアルでは、最初にターゲットベースのアプローチを設定することに重点を置いています。

一般的な問題のトラブルシューティング

ゲームサーバーとゲームセッションの実行中に発生する可能性がある一般的な問題は次のとおりです。サーバーまたはゲームセッションのいずれかが正しく実行されていない場合、最初のステップは、本番環境での新しいデプロイまたはゲームについて以下に説明する問題の 1 つが明らかになる可能性があるログを確認することです。

ログには、次の情報が表示されることがよくあります。

  • ゲームサーバープロセスを起動できません。これはラッパー設定のエラーである可能性があります。 ファイルに正しい起動パスと正しい起動パラメータと引数があることを確認します。

  • ゲームサーバービルドを実行できません。これはゲームコードのエラーである可能性があります。

  • プレイヤーはゲームセッションに接続できません。これは、おそらくポート設定エラーです。

  • 接続の遅延または遅延。スケーリングポリシーとしきい値を確認します。

  • 接続がありません。フリートのポートルールと設定を確認します。

Amazon GameLift Servers フリートのイベントログを表示するには

Amazon GameLift Servers フリートのイベントログを表示するには

  1. Amazon GameLift Servers コンソールを開きます。

  2. フリートの詳細ページでイベントタブを選択し、ログをダウンロードします。メトリクスタブから、ゲームサーバーのヘルスとゲームセッションのアクティベーションのアクティビティとハードウェアメトリクスをモニタリングすることもできます。

ゲームセッションログを表示するには

ゲームセッションログを表示するには

  1. コンソールからフリートを開き、ゲームセッションタブを開きます。

  2. リストからゲームセッション ID を選択すると、概要ページが表示されます。

  3. ログファイルをローカルにダウンロードするには、ログのダウンロードを選択します。

CLI でゲームセッションログを表示するには、 GetGameSessionLogURL API を使用します。 はログを 14 日間Amazon GameLift Servers自動的に保存します。

フリートの Amazon CloudWatch logsを設定することもできます。これにより、追加のログ記録機能と他の AWS モニタリングサービスとの統合が提供されます。

CloudWatch を介したリアルタイムログアクセスまたは延長保持期間の場合:

  1. Amazon GameLift Servers コンソールダッシュボードの上部の検索バーにCloudWatch」と入力し、結果のドロップダウンから選択します。

  2. CloudWatch Log Groups に移動し、特定のセッションを検索します。最も簡単な方法は、すべて検索をクリックし、gameSessionId または clientId を使用してフィルタリングすることです。

次のステップ