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

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

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

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

Amazon GameLift Servers マネージドホスティングでは、ゲームサーバーは、設定に基づいて がAmazon GameLift Servers所有および運用する AWS クラウドベース仮想コンピューティングリソースでホストされます。マルチプレイヤーゲームホスティング用にさらに最適化された Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのセキュリティ、信頼性、グローバル可用性が得られます。 は、自動サーバーデプロイ、ライフサイクル処理、容量の自動スケーリングなどのツールを使用してホスティング管理をAmazon GameLift Servers合理化します。

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

  • マルチプレイヤーゲームホスティング用に最適化された Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用する 1 つ以上のAmazon GameLift Serversマネージドフリート。

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

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

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

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

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

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

Amazon GameLift Servers プラグインを使用してゲームプロジェクトを統合し、ゲームエンジンの開発環境内からコンテナフリートを構築します。プラグインのガイド付きワークフローは、マネージド EC2 フリートを使用したクラウドベースのホスティングによる高速でシンプルなソリューションの作成に役立ちます。その後、この基盤に基づいてゲームのカスタムホスティングソリューションを作成できます。

ゲームサーバーに機能を追加して、ホスティング用にデプロイされたときに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() を使用します。

    • サーバープロセスがゲームセッションをホストする準備ができたら、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 Toolkit ソリューションは、 Amazon GameLift Serversマネージドフリートの動作を模倣しますが、ゲームサーバービルドを最小限のターンアラウンドタイムで更新できます。

新しいゲームセッションのリクエストを処理する方法をカスタマイズし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 ホスティング用のカスタムサーバービルドをデプロイする」を参照してください。コンソールまたは CLI Amazon GameLift Serversを使用して、ビルドを AWS にアップロードできます。

    ビルドをアップロードする前に、フリート AWS リージョン を作成するものを決定します。ビルドを同じリージョンにアップロードする必要があります。フリートのロケーションの選び方については、「フリートのロケーション」を参照してください。

  • マネージド EC2 フリートを作成します。フリートを作成すると、 はホスティング用にゲームサーバービルドのデプロイをAmazon GameLift Serversすぐに開始します。マネージドフリートの多くの側面を設定できます。ガイダンスについては、「Amazon GameLift Servers マネージド EC2 フリートを作成する」を参照してください。少なくとも、以下を実行します。

    • フリートに名前を付け、デプロイするアップロード済みのゲームビルドを指定します。

    • フリートのオンデマンドインスタンスを選択し、フリートのロケーションで利用可能なインスタンスタイプを選択します。スポットフリートは有用なオプションですが、追加の設計と設定が必要です。

    • フリートのランタイム設定を作成します。少なくとも、ゲームサーバー実行可能ファイルの起動パスを指定します。

    • インバウンドトラフィックがゲームサーバーにアクセスできるように、ポート設定を指定します。

  • マネージドフリートをキューに追加します。ゲームセッションキューで、Anywhere フリートをマネージドフリートで置き換えます

  • マネージドフリートでゲームホスティングをテストします。この時点で、ゲームクライアントがゲームセッションをリクエストしてから、接続情報を取得して、ゲームセッションに正常に接続するまでのホスティングサイクル全体をテストできるはずです。

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

  • コスト削減のためにスポットフリートの追加を検討します。「チュートリアル: スポットインスタンスを使用して Amazon GameLift Serversキューを作成する」を参照してください。

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

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

  • インスタンスのタイプとサイズを選択し、複数のサーバープロセスを実行するようにランタイムを設定することで、フリートのパフォーマンスを最適化します。「がゲームサーバーAmazon GameLift Serversを起動する方法を管理する」を参照してください。

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

  • 予想されるプレイヤー需要に応えるための自動容量スケーリングを設定します。「を使用したゲームホスティング容量のスケーリング Amazon GameLift Servers」を参照してください。

  • 他の にスタンバイフリートを設定し AWS リージョン 、必要に応じてフェイルオーバーを処理するようにキューと自動スケーリングを変更します。

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

  • Infrastructure as Code (IaC) を使用してデプロイを自動化します。「を使用したAmazon GameLift Serversホスティングリソースの管理 AWS CloudFormation」を参照してください。

    Amazon GameLift Servers では、デプロイ固有の設定に AWS CloudFormation テンプレートを使用できます。を使用して AWS Cloud Development Kit (AWS CDK) リソースを定義することもできますAmazon GameLift Servers。の詳細については AWS CDK、「 AWS Cloud Development Kit (AWS CDK) デベロッパーガイド」を参照してください。

    AWS CloudFormation スタックのデプロイを管理するには、継続的インテグレーションと継続的デリバリー (CI/CD) ツール、および などのサービスを使用することをお勧めします AWS CodePipeline。こうしたツールにより、ゲームサーバーバイナリが構築されるたびに、自動的に、または承認によりデプロイできます。CI/CD ツールまたはサービスを使用すると、新しいゲームサーバーバージョンのリソースのデプロイは次のようになります。

    • ゲームサーバーバイナリをビルドしてテストする。

    • バイナリを にアップロードしますAmazon GameLift Servers。

    • 新しいビルドを使用して新しいフリートをデプロイする。

    • ゲームセッションキューに新しいフリートを追加し、以前のビルドバージョンのフリートを削除する。

    • 以前のビルドのフリートがアクティブなゲームセッションをホストしなくなったら、それらのフリートの AWS CloudFormation スタックを削除します。