Amazon GameLift マネージドホスティングの開発ロードマップ - Amazon GameLift

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

Amazon GameLift マネージドホスティングの開発ロードマップ

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

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

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

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

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

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

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

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

このロードマップは、Amazon GameLift マネージドホスティングでマルチプレイヤーゲームを正常に起動して実行するための合理化された道筋を示しています。必要なコンポーネントが整ったら、ゲーム開発を反復してホスティングソリューションをカスタマイズできます。起動が近づいたら、本番稼働レベルの使用に備えてホスティングソリューションを準備するAmazon GameLift ホスティングでゲームを起動するための準備方法については、以下を参照してください。

Amazon GameLift プラグインでジャンプスタートする

Unreal Engine または Unity でプロジェクトを開発している場合は、Amazon GameLift プラグインでホストするためのゲームのセットアップを開始します。プラグインを使用すると、Amazon GameLift SDKs をゲームプロジェクトに追加し、ガイド付きワークフローを使用して Amazon GameLift マネージドホスティングソリューションのシンプルな作業バージョンを構築できます。その後、これらの基本を使用して、必要に応じて を構築およびカスタマイズできます。

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

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

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

    • Amazon を初期化し、Amazon GameLift SDK GameLift サービスとの接続を確立する WebSocketコードを追加します。サーバーSDKアクション を使用しますInitSdk()

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

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

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

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

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

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

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

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

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

    迅速な反復開発やマルチパーソンチームとの連携には、クラウドベースのテスト環境 を設定することをお勧めします。この Amazon GameLift Toolkit ソリューションは、Amazon GameLift マネージドフリートの動作を模倣しますが、ゲームサーバーの構築を最小限のターンアラウンドタイムで更新できます。

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

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

    • 少なくとも、Anywhere フリートをキューの宛先として追加します。その他の設定はすべてオプションでカスタマイズされます。

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

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

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

ここまでは、セルフマネージド型の Anywhere ゲームコンポーネントでテストおよび反復するフリート。ゲームセッションの配置を微調整しました。ソリューションの最後の部分は、本番稼働システムに必要なホスティングリソースのタイプを設定することです。本番稼働用の計画と設定を開始するには、Amazon GameLift マネージドフリートの使用に移行します。

  • ゲームサーバーのビルドをパッケージ化し、Amazon にアップロードします GameLift。ビルドファイル、依存関係、サポートソフトウェアを使用してインストールスクリプトを作成します。「Amazon GameLift ホスティング用のカスタムサーバービルドをデプロイする」を参照してください。コンソールまたは GameLift を使用してビルドを Amazon にアップロードできます AWS CLI。

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

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

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

    • フリートのオンデマンドインスタンスを選択し、フリートの場所で使用できるインスタンスタイプを選択します。スポットフリートは貴重なオプションですが、追加の設計と設定が必要です。

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

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

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

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

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

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

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

  • ゲームサーバーを地理的に配置する場所を決定します。マネージドフリートにリモートロケーションを追加します。「マネージドフリートの設計ガイド」を参照してください。

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

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

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

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

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

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

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

    AWS CloudFormation スタックのデプロイを管理するには、継続的統合と継続的配信 (CI/CD) ツールと などのサービスを使用することをお勧めします AWS CodePipeline。これらのツールは、ゲームサーバーバイナリを構築するたびに、自動的に、または承認を受けてデプロイするのに役立ちます。CI/CD ツールまたはサービスを使用すると、新しいゲームサーバーバージョンのリソースデプロイは次のようになります。

    • ゲームサーバーのバイナリを構築してテストします。

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

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

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

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