翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon GameLift Anywhere でホストするための開発ロードマップ
このロードマップでは、マルチプレイヤーゲームが独自のリソース (オンプレミスのハードウェアまたは仮想マシン) で使用するホスティングソリューションを開発する方法について説明します。Amazon GameLift にはいくつかのゲームホスティングオプションがあります。これらのオプションの詳細については、「」を参照してくださいAmazon GameLift ソリューション。
Amazon GameLift Anywhere ホスティングを使用すると、ゲームサーバーは、提供および管理しているコンピューティングリソースでホストされます。Anywhere フリートは、必要な設定で作成でき、プレイヤーがどこにいても地理的に配置されます。Amazon GameLift は Anywhere フリートに次の機能を提供します。
-
設定に基づいてゲームセッションの配置プロセスを処理します。これには、以下が含まれます。
-
Anywhere フリート全体のゲームサーバーの可用性を追跡します。
-
ゲームクライアントサービスからのゲームリクエストの処理と、利用可能なサーバーとのゲームリクエストのマッチング。
-
Anywhere フリートのゲームサーバーにゲームセッションを開始するプロンプトを表示します。
-
接続の詳細をゲームクライアントに通信します。
-
-
ゲームセッションとプレイヤーのセッションプレイスメントプロセスのパフォーマンスメトリクスと使用状況メトリクスを収集します。
-
完全な FlexMatch マッチメーキング機能セットをサポートしているため、マッチメーカーを構築し、ゲームセッションプレイスメントシステムと統合できます。
-
Anywhere フリートでキーホスト管理タスクを処理する Amazon GameLift エージェントを提供します。
-
Amazon GameLift マネージドフリートとの組み合わせをサポートし、柔軟なハイブリッドソリューションを実現します。
Amazon GameLift Anywhere ソリューションは、次のコンポーネントで構成されます。
-
オンプレミスまたは他のホスティングリソースを持つ 1 つ以上の Amazon GameLift Anywhere フリートは、既存の設定管理およびデプロイツールで管理されます。(オプションで を使用できます) AWS Systems Manager。
-
Amazon サーバー と統合されたゲーム GameLift サーバービルドはSDK、すべてのフリートにデプロイします。
-
と統合されたゲームクライアントとバックエンドサービスは、Amazon GameLift サービスとやり取りし AWS SDK、ゲームセッションをリクエストします。
-
すべてのフリートで利用可能なゲームサーバーで新しいゲームセッションを配置する Amazon GameLift キュー。
-
(オプション) マルチプレイヤー FlexMatch マッチを作成し、そのためにゲームセッションを設定するマッチメーカー。
このロードマップは、Amazon GameLift Anywhere ホスティングでマルチプレイヤーゲームを正常に起動して実行するための合理化された道筋を示しています。必要なコンポーネントが整ったら、ゲーム開発を繰り返してホスティングソリューションをカスタマイズできます。起動が近づいたら、本番稼働レベルの使用に備えてホスティングソリューションを準備するAmazon GameLift ホスティングでゲームを起動するための準備方法については、以下を参照してください。
Amazon GameLift プラグインでジャンプスタートする
Unreal Engine または Unity でプロジェクトを開発している場合は、Amazon GameLift プラグインでホストするためのゲームのセットアップを開始します。プラグインを使用すると、Amazon GameLift SDKs をゲームプロジェクトに追加し、ガイド付きワークフローを使用して Amazon GameLift Anywhere でホスティングソリューションのシンプルな作業バージョンを構築できます。その後、これらの基本を使用して、必要に応じて を構築およびカスタマイズできます。
ゲームサーバーに機能を追加して、ホスト用にデプロイされたときに Amazon GameLift サービスと通信できるようにします。
-
ゲームプロジェクトの Amazon GameLift サーバー SDK (バージョン 5.x) を取得します。サーバーSDKは C++、C#、Go で利用できます。 Amazon GameLift サーバー をダウンロードしますSDK
。 -
ゲームサーバーコードを変更して、サーバーSDK機能を追加します。ガイダンスについては、「カスタムゲームサーバーとゲームを統合する」を参照してください。少なくとも、以下を実行します。
-
Amazon を初期化し、Amazon GameLift SDK GameLift サービスとの接続を確立する WebSocketコードを追加します。サーバーSDKアクションを使用して、Anywhere フリートに必要なサーバーパラメータ
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 サービスと通信し、接続情報をゲームクライアントに配信します。この機能には、ゲームセッションの開始、ゲームへのプレイヤーの配置、ゲームセッション情報の取得が含まれます。ガイダンスについては、「カスタムゲームサーバーとゲームを統合する」を参照してください。少なくとも、以下を実行します。
-
for Amazon を取得し AWS SDK GameLift 、バックエンドサービスプロジェクトに追加します。クライアントサービスについては、「Amazon GameLift SDK リソース」を参照してください。
-
Amazon GameLift クライアントを初期化し、キー設定を保存するコードを追加します。「バックエンドサービス GameLift で Amazon を設定する」を参照してください。
-
アクションを AWS SDK呼び出し
CreateGameSession()
、ゲームクライアントにゲームセッション接続情報を提供する機能を追加します。「特定のフリートでゲームセッションを作成する」を参照してください。呼び出し
CreateGameSession()
は、新しいゲームセッションをリクエストするための便利な出発点です。ゲームセッションプレイスメントシステムが整ったら (ステップ 3 を参照)、このコードを への呼び出しに置き換えますStartGameSessionPlacement()
(またはStartMatchmaking()
を使用している場合) FlexMatch。バックエンドサービスの設計に関するガイダンスについては、「」を参照してくださいゲームクライアントサービスを設計する。
-
-
プレイヤーがホストされたゲームセッションに参加できるようにする機能をゲームクライアントに追加します。ゲームクライアントは、Amazon に直接ではなく、バックエンドサービスにリクエストを行います GameLift。バックエンドサービスがゲームセッション接続情報を提供すると、ゲームクライアントはゲームセッションに直接接続してゲームをプレイします。
-
ゲームクライアントの統合をテストします。同じ Amazon を使用できる GameLift Anywhere テスト用のローカルワークステーションを備えたフリート。
Amazon が新しいゲームセッションのリクエスト GameLift を処理する方法をカスタマイズし、それらをホストするために利用可能なゲームサーバーを見つけます。Amazon は、すべてのフリートのすべてのゲームサーバーの可用性 GameLift を自動的に追跡します。ゲームクライアントがゲームセッションに参加するリクエストを送信すると、Amazon GameLift は最小レイテンシー、コスト、可用性など、定義された一連の優先順位に基づいて「可能な限り最良の」配置を探します。
-
利用可能なゲームサーバーで新しいゲームセッションを配置するためのゲームセッションキューを作成します。キューは、ゲームセッション配置の主要なメカニズムです。ガイダンスについては、「ゲームセッションキューを作成する」を参照してください。
-
少なくとも、Anywhere フリートをキュー内の送信先として追加します。その他のすべての設定はオプションです。
-
-
バックエンドサービスコードで、
CreateGameSession()
呼び出しを に変換しますStartGameSessionPlacement()
。「マルチロケーションキューでゲームセッションを作成する」を参照してください。 -
ゲームセッションに参加する準備ができたら、ゲームクライアントに通知するメカニズムを作成します。開発中は、 を呼び出すことで、ゲームセッションのステータスをポーリングできます DescribeGameSessionPlacement。ただし、キューを使用して大量の を処理する前に、イベント通知を有効にする必要があります。「ゲームセッション配置のイベン通知を設定」を参照してください。
-
(オプション) FlexMatch マッチメーキングコンポーネントを追加します。ガイダンスについては、「Amazon GameLift FlexMatch デベロッパーガイド」を参照してください。
これまで、ローカルデバイス ( として登録されています。Anywhere フリートコンピューティング) を使用して、ゲームコンポーネントをテストおよび反復します。次のステップでは、本番稼働システムに必要なフリートのタイプを設定します。これらのリソースでは、Amazon GameLift Agent を使用して、コンピューティング上のホスト管理タスクの一部を管理します。詳細については、「Amazon GameLift エージェントの操作」を参照してください。
-
Amazon GameLift エージェントを取得し、ゲームサーバーのインストールパッケージに追加します。Amazon Agent Github リポジトリ で利用可能な GameLift エージェント
ソースコードを取得して構築します。結果のJARファイル実行可能ファイルをゲームビルド実行可能ファイルと同じディレクトリに配置します。 -
必要に応じて、エージェントの起動スクリプトを変更します。コンピューティングの実行が開始されるとすぐに、エージェント実行可能ファイルが起動することを確認します。ホスティングコンピューティングに エージェントをインストールして実行する方法については、 エージェントリポジトリの readme ファイルを参照してください。起動コマンドには、少なくとも Anywhere フリート ID と 、カスタムロケーション AWS リージョン、コンピューティング名を指定するオプションを含める必要があります。
エージェントは、次のタスクを自動的に処理するため、これらのタスクをスクリプトで処理している場合は、削除できます。
-
Anywhere フリート
RegisterCompute()
にコンピューティングを追加する呼び出し。 -
Amazon GameLift サービスに接続するときに、ゲームサーバーを
GetComputeAuthToken()
認証するための を呼び出します。エージェントは認証トークンの取得と更新を管理します。これは、コンピューティングで実行されているすべてのゲームサーバープロセスで使用できます。 -
一連のランタイム手順に基づいて、コンピューティングで新しいサーバープロセスを開始します。
-
-
Anywhere フリートでコンピューティングのランタイム設定を作成します。 Amazon GameLift コンソールまたは AWS CLIを使用して、フリートのランタイム手順を作成または変更できます。エージェントはこれらの手順を実行し、定期的に Amazon GameLift サービスから更新をリクエストします。
-
必要に応じて、ゲームセッションキューを設定または変更します。Amazon GameLift Agent でデプロイされている Anywhere フリートを使用するには、新しいキューを作成します (または既存のキューを更新します)。
-
Anywhere フリートとの エージェント統合をテストします。 エージェントがランタイム設定に基づいてサーバープロセスを適切に開始していることを確認します。
ゲームの起動を準備する際には、マネージドホスティングリソースを微調整する必要があります。考慮すべき決定には、次のようなものがあります。
-
ゲームサーバーソフトウェアのインストールと実行など、必要に応じてコンピューティングを開始およびシャットダウンするプロセスを自動化します。コンピューティングのリサイクルは、コンピューティングを定期的に更新するために役立ち、コンピューティングをシャットダウンすると、不要なときにコストを削減できます。
-
ゲームサーバーが他の AWS リソースと通信する必要がある場合は、アクセスを管理するIAMロールを設定します。「フリートの他の AWS リソースと通信する」を参照してください。
-
ゲームサーバーを地理的に配置する場所を決定します。マネージドフリートにリモートロケーションを追加します。「マネージドフリートの設計ガイド」を参照してください。
-
コンピューティングリソース設定を選択してフリートのパフォーマンスを最適化し、コンピューティングごとに最適な数のサーバープロセスを実行するようにランタイム手順を設定します。
-
優先順位付け設定のカスタマイズなど、マネージドフリートのゲームセッション配置オプションを試してください。「ゲームセッションキューの設計」を参照してください。
-
手動または自動のキャパシティスケーリングを処理して、プレイヤーの予想需要を満たすメカニズムを作成します。ゲームセッションをホストするために利用可能なコンピューティングの数を増減するようにシステムに促す要因を検討します。
-
必要に応じて、他のリソースへのフェイルオーバーを設計して実装します。
-
分析やログ記録などのホスティングオブザーバビリティツールを設定します。「Amazon のモニタリング GameLift」を参照してください。