Amazon GameLift Servers Anywhere でホスティングするための開発ロードマップ - Amazon GameLift Servers

Amazon GameLift Servers Anywhere でホスティングするための開発ロードマップ

このロードマップでは、自前のリソース (オンプレミスのハードウェアまたは仮想マシン) を使用して、マルチプレイヤーゲーム用のホスティングソリューションを開発する方法について説明します。Amazon GameLift Servers は複数のゲームホスティングオプションを提供しています。これらのオプションの詳細については「Amazon GameLift Servers ゲームホスティングオプション」を参照してください。

Amazon GameLift Servers Anywhere ホスティングを使用すると、ゲームサーバーは、ユーザーが提供および管理するコンピューティングリソースでホスティングされます。Anywhere フリートは、必要な設定で作成し、プレイヤーの所在地に合わせて地理的に配置することができます。また、Amazon GameLift Servers は Anywhere フリート向けに次の機能を提供します。

  • 設定に基づいてゲームセッションの配置プロセスを処理します。この処理には、以下が含まれます。

    • Anywhere フリート全体のゲームサーバーの可用性を追跡します。

    • ゲームクライアントサービスからのゲームリクエストを処理し、ゲームリクエストを利用可能なサーバーとマッチングさせます。

    • Anywhere フリートのゲームサーバーにゲームセッションの開始を指示します。

    • 接続の詳細をゲームクライアントに返します。

  • セッション配置プロセスのパフォーマンスメトリクスとゲームセッションおよびプレイヤーの使用状況メトリクスを収集します。

  • FlexMatch マッチメーキング機能をすべてサポートしているため、マッチメーカーを構築し、ゲームセッション配置システムと統合できます。

  • Anywhere フリートでキーホスト管理タスクを処理する Amazon GameLift Servers エージェントを提供します。

  • Amazon GameLift Servers マネージドフリートとの組み合わせをサポートし、柔軟なハイブリッドソリューションを実現します。

Amazon GameLift Servers Anywhere ソリューションは、次のコンポーネントで構成されています。

  • サーバー SDK for Amazon GameLift Servers と統合された 1 つのゲームサーバービルド。すべてのフリートにデプロイします。

  • Amazon GameLift Servers サービスとやり取りし、ゲームセッションをリクエストするための、AWS SDK と統合されたゲームクライアントとバックエンドサービス。

  • すべてのフリートで利用可能なゲームサーバーに新しいゲームセッションを配置する Amazon GameLift Serversキュー。

  • (オプション) マルチプレイヤーマッチを作成し、マッチのゲームセッションを立ち上げる FlexMatch マッチメーカー。

  • オンプレミスまたはその他のホスティングリソースを持つ 1 つまたは複数の Amazon GameLift Servers Anywhere フリート。既存の設定管理およびデプロイツールで管理されます。(AWS Systems Manager を使用することもできます)。

このロードマップは、Amazon GameLift Servers Anywhere ホスティングを使用してマルチプレイヤーゲームを稼働させるための効率的な道筋を示しています。必要なコンポーネントが揃ったら、ゲーム開発を繰り返し、ホスティングソリューションをカスタマイズできます。ローンチが近づいたら、本番稼働レベルの使用に備えてホスティングソリューションを準備する方法について、「Amazon GameLift Servers ホスティングによる起動の準備」を参照してください。

Unreal Engine と Unity 用の Amazon GameLift Servers プラグインでジャンプスタートする

デプロイを高速化するには、Unreal Engine と Unity の Amazon GameLift Servers プラグインを試してください。最小限のセットアップでゲームサーバーをすばやくデプロイするためのガイド付き UI ワークフローを提供するため、ゲームコンポーネントを実際に試すことができます。その後、この基盤をもとに、ゲーム用のカスタムホスティングソリューションを作成できます。詳細については、「Amazon GameLift Servers プラグインを使用して Unreal または Unity ゲームを準備する」を参照してください。

ゲームサーバーに機能を追加して、ホスティング用にデプロイされたときに Amazon GameLift Servers サービスと通信できるようにします。

  • ゲームプロジェクト用に SDK for Amazon GameLift Servers (バージョン 5.x) を取得します。サーバー SDK は、C++、C#、Go で利用可能です。Amazon GameLift Servers サーバー SDK をダウンロードします

  • ゲームサーバーコードを変更して、サーバーの SDK 機能を追加します。ガイダンスについては、「Amazon GameLift Serversでホストするゲームを準備します」を参照してください。少なくとも、以下を実行します。

    • Amazon GameLift Servers SDK を初期化するコードを追加し、Amazon GameLift Servers サービスとの WebSocket 接続を確立します。サーバー SDK アクション InitSdk() を使用し、Anywhere フリートに必要なサーバーパラメータを含めます。

    • サーバープロセスがゲームセッションをホストする準備ができたことを Amazon GameLift Servers サービスに報告するコードを追加します。サーバー SDK アクション ProcessReady() を使用します。

    • 必要なコールバック関数 OnProcessTerminate()、および OnStartGameSession() を実装します。これらの関数を使用することで、ゲームサーバープロセスは Amazon GameLift Servers サービスとの接続を維持し、Amazon GameLift Servers からの指示によりゲームセッションを開始し、ゲームサーバープロセスを終了するプロンプトに応答できます。

    • サーバープロセスがゲームセッションを終了することを Amazon GameLift Servers サービスに報告するコードを追加します。サーバー SDK アクション ProcessEnding() を使用します。

  • ゲームサーバービルドをパッケージ化します。ビルドファイル、依存関係、サポートソフトウェアを含むインストールスクリプトを作成します。「ゲームビルドファイルをパッケージ化する」を参照してください。Amazon Simple Storage Service (Amazon S3) バケットを使用して、ゲームビルドのバージョンを保存することをお勧めします。

  • ゲームサーバーの統合をテストします。このタスクでは、「Amazon GameLift Servers Anywhereでローカルテストを設定する」で説明されているように、ローカルワークステーションで Amazon GameLift Servers Anywhere フリートをセットアップすることをお勧めします。このステップでは、ゲームサーバービルドをテストデバイスに手動でインストールし、サーバープロセスを開始します。AWS CLI を使用して新しいゲームセッションをリクエストし、Amazon GameLift Servers サービスがサーバープロセスにゲームセッションの開始を正常に指示することを確認します。

ゲームクライアントがゲームセッションへの参加をリクエストし、接続情報を取得して、ホストされているゲームセッションに直接接続する方法を作成します。最も一般的なアプローチは、ゲームクライアントと Amazon GameLift Servers サービス間の仲介役として機能するバックエンドサービス機能をセットアップすることです。このアプローチにより、ホスティングリソースを保護し、プレイヤーがゲームセッションにどのように配置されるかをより詳細に制御することができます。

  • ホスティング用のバックエンドサービス機能を構築します。バックエンドサービスは Amazon GameLift Servers サービスと通信し、ゲームクライアントに接続情報を送信します。この機能には、ゲームセッションの開始、ゲームへのプレイヤーの配置、ゲームセッション情報の取得が含まれます。ガイダンスについては、「Amazon GameLift Serversでホストするゲームを準備します」を参照してください。少なくとも、以下を実行します。

  • プレイヤーがホストされているゲームセッションに参加できるようにする機能をゲームクライアントに追加します。ゲームクライアントは、Amazon GameLift Servers に直接リクエストするのではなく、バックエンドサービスにリクエストを行います。バックエンドサービスがゲームセッション接続情報を提供すると、ゲームクライアントはゲームセッションに直接接続してゲームをプレイします。

  • ゲームクライアントの統合をテストします。テストでは、ローカルワークステーションで同じ Amazon GameLift Servers Anywhere フリートを使用できます。

Amazon GameLift Servers が新しいゲームセッションのリクエストをどのように処理し、ホスト可能なゲームサーバーをどのように特定するかをカスタマイズできます。Amazon GameLift Servers は、すべてのフリート内のゲームサーバーの可用性を自動的に追跡します。ゲームクライアントがゲームセッションへの参加リクエストを送信すると、Amazon GameLift Servers は最小レイテンシー、コスト、可用性などの定義された一連の優先順位に基づいて「可能な限り最良の」配置を探します。

  • 利用可能なゲームサーバーで新しいゲームセッションを配置するためのゲームセッションキューを作成します。キューは、ゲームセッション配置の主要なメカニズムです。ガイダンスについては、「ゲームセッションキューを作成する」を参照してください。

    • 少なくとも、Anywhere フリートをキュー内の送信先として追加します。その他のすべての設定はオプションです。

  • バックエンドサービスコードで、CreateGameSession() 呼び出しを StartGameSessionPlacement() に変換します。マルチフリートキューにゲームセッションを作成する」を参照してください。

  • ゲームセッションに参加できる状態になったら、ゲームクライアントに通知するメカニズムを作成します。開発中は、DescribeGameSessionPlacement を呼び出してゲームセッションのステータスをポーリングできます。ただし、大量の処理にキューを使用する前に、イベント通知を有効にする必要があります。「ゲームセッション配置のイベント通知を設定」を参照してください。

  • (オプション) FlexMatch マッチメーキングコンポーネントを追加します。ガイダンスについては、「Amazon GameLift ServersFlexMatch デベロッパーガイド」を参照してください。

ここまでは、Anywhere フリートのコンピューティングとして登録されたローカルデバイスを使用して、ゲームコンポーネントのテストと反復作業を行ってきました。次のステップでは、本番稼働システムに必要なフリートのタイプを設定します。これらのリソースでは、Amazon GameLift Servers エージェントを使用して、コンピューティング上で直接行われるいくつかの主要なホスト管理タスクを管理します。詳細については、「Amazon GameLift Servers エージェントの操作」を参照してください。

  • Amazon GameLift Servers エージェントを取得し、ゲームサーバーのインストールパッケージに追加します。Amazon GameLift Servers エージェント GitHub リポジトリにあるエージェントソースコードを取得してビルドします。ビルドした実行可能 JAR ファイルをゲームビルド実行可能ファイルと同じディレクトリに配置します。

  • 必要に応じて、エージェントのスタートアップスクリプトを変更します。コンピューティングの実行が開始されるとすぐに、エージェント実行可能ファイルが起動することを確認します。ホスティングコンピューティングにエージェントをインストールして実行する方法については、エージェントのリポジトリにある readme ファイルを参照してください。起動コマンドには、少なくとも、Anywhere フリート ID と AWS リージョン、カスタムロケーション、コンピューティング名を指定するオプションを含める必要があります。

    エージェントは、以下のタスクを自動的に処理するため、これらのタスクをスクリプトで処理している場合は、削除できます。

    • RegisterCompute() を呼び出して、コンピューティングを Anywhere フリートに追加する。

    • GetComputeAuthToken() を呼び出して、ゲームサーバーが Amazon GameLift Servers サービスに接続する際に認証を行う。エージェントは認証トークンの取得と更新を管理します。このトークンは、コンピューティングで実行されているすべてのゲームサーバープロセスで使用できます。

    • 一連のランタイム手順に基づいて、コンピューティングで新しいサーバープロセスを開始する。

  • Anywhere フリートでコンピューティングのランタイム設定を作成します。Amazon GameLift Servers コンソールまたは AWS CLI を使用して、フリートのランタイム手順を作成または変更できます。エージェントはこの手順を実行し、定期的に Amazon GameLift Servers サービスから更新をリクエストします。

  • 必要に応じて、ゲームセッションキューを設定または変更します。Amazon GameLift Servers エージェントでデプロイされた Anywhere フリートを使用するための新しいキューを作成します (または既存のキューを更新します)。

  • Anywhere フリートとのエージェント統合をテストします。エージェントがランタイム設定に基づいてサーバープロセスを適切に開始していることを確認します。

ゲームのローンチに備えて、マネージドホスティングリソースをファインチューニングする必要があります。考慮すべき決定事項には、次のようなものがあります。

  • ゲームサーバーソフトウェアのインストールと実行など、必要に応じて、コンピューティングを開始およびシャットダウンするプロセスを自動化します。コンピューティングのリサイクルは、コンピューティングを定期的に更新するために役立ちます。また、必要のないときはコンピューティングをシャットダウンすることで、コストを削減できます。

  • ゲームサーバーが他の AWS リソースと通信する必要がある場合は、IAM ロールを設定してアクセスを管理します。「Amazon GameLift Servers ホストされたゲームサーバーを他の AWS リソースに接続する」を参照してください。

  • ゲームサーバーを地理的にどこに配置するかを決定します。マネージドフリートにリモートロケーションを追加します。「ホスティングリソースのカスタマイズ」を参照してください。

  • コンピューティングリソース設定を選択してフリートのパフォーマンスを最適化し、コンピューティングごとに最適な数のサーバープロセスを実行するようにランタイム手順を設定します。

  • 優先順位付け設定のカスタマイズなど、マネージドフリートのゲームセッション配置オプションを試してみます。「ゲームセッションキューをカスタマイズする」を参照してください。

  • 予想されるプレイヤー需要に応えるために、手動または自動で容量をスケーリングするメカニズムを構築します。ゲームセッションをホストするために使えるコンピューティングの数を増減させる要因として、どのようなものが考えられるか検討してください。

  • 必要に応じて、他のリソースへのフェイルオーバーを設計して実装します。

  • 分析やログ記録など、ホスティングのオブザーバビリティツールをセットアップします。「Amazon GameLift Servers のモニタリング」を参照してください。