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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • (オプション) マルチプレイヤーマッチを作成し、それらのゲームセッションを設定するFlexMatchマッチメーカー。

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

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

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

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

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

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

    • 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 ServersAnywhere フリートを設定することをお勧めしますAmazon GameLift ServersAnywhere でローカルテストを設定する。このステップでは、ゲームサーバービルドをテストデバイスに手動でインストールし、サーバープロセスを開始します。CLI AWS を使用して新しいゲームセッションをリクエストし、Amazon GameLift Serversサービスがサーバープロセスにゲームセッションの開始を正常に促すことを確認します。

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

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

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

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

新しいゲームセッションのリクエストを処理する方法をカスタマイズし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 フリートに追加する。

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

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

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

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

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

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

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

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

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

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

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

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

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

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