Amazon とのゲームクライアント/サーバーインタラクション GameLift - Amazon GameLift

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

Amazon とのゲームクライアント/サーバーインタラクション GameLift

Amazon GameLift ホスティングソリューションのコンポーネントは、プレイヤーの需要に応じてゲームセッションを実行する特定の方法で相互にやり取りします。このトピックでは、ゲームサーバーが Amazon GameLift マネージドEC2フリート、セルフマネージド Amazon GameLift Anywhere フリート、またはハイブリッドソリューションでホストされているときに、コンポーネントが相互に通信する方法について説明します。

ホスティングソリューションコンポーネントには、ゲームサーバー、Amazon GameLift サービス、クライアント側のバックエンドサービス、ゲームクライアントが含まれます。ゲームサーバーは Amazon GameLift サーバーSDKを使用して Amazon GameLift サービスとやり取りします。バックエンドサービスは、Amazon GameLift サービス API ( の一部 AWS SDK) を使用して、ゲームクライアントに代わって サービスとやり取りします。ゲームセッションに参加すると、ゲームクライアントはゲームセッションの一意の IP アドレスとポート番号を使用してゲームセッションに直接接続します。

インタラクション図

次の図は、Amazon GameLift サービスがプレイヤーの需要に応じてゲームサーバーの可用性のステータスを追跡し、ゲームセッションを開始できるように、ゲームホスティングコンポーネントがどのように相互作用するかを示しています。

このトピックで説明されているように、キーインタラクションのゲームクライアント/サーバーの動作。

インタラクション動作

以下のセクションでは、各キーインタラクションのイベントのシーケンスについて説明します。

ゲームサーバープロセスの初期化

起動時に、ゲームサーバープロセスは Amazon GameLift サービスとの通信を確立し、そのステータスをゲームセッションをホストする準備ができているものとしてレポートします。

  1. ゲームサーバー実行可能ファイルの新しいプロセスがホスティングリソースで実行を開始します。

  2. ゲームサーバープロセスは、次のサーバーSDKオペレーションを順番に呼び出します。

    1. InitSDK() サーバーを初期化しSDK、サーバープロセスを認証し、Amazon GameLift サービスとの通信を確立します。

    2. ProcessReady() ゲームセッションをホストする準備状況を伝えます。この呼び出しでは、プロセスの接続情報、ゲームクライアントがゲームセッションへの接続に使用するゲームクライアント、およびその他の情報もレポートされます。

    その後、サーバープロセスは Amazon GameLift サービスからのプロンプトを待機します。

  3. Amazon はサーバープロセスのステータスを に GameLift 更新ACTIVEし、新しいゲームセッションをホストできます。

  4. Amazon GameLift は、サーバープロセスからヘルスステータスをリクエストするためにonHealthCheckコールバックを定期的に呼び出し始めます。これらの呼び出しは、サーバープロセスがアクティブなステータスのままである間も続行されます。サーバープロセスは、1 分以内に正常または正常でない応答をする必要があります。サーバープロセスが正常に応答しない場合や応答しない場合、Amazon GameLift サービスはサーバープロセスのアクティブステータスを変更し、ゲームセッションを開始するためのリクエストの送信を停止します。

ゲームセッションの作成

Amazon GameLift サービスは、プレイヤーからのゲームプレイリクエストに応じて新しいゲームセッションを開始します。

  1. ゲームクライアントを使用しているプレイヤーがゲームセッションへの参加をリクエストします。ゲームがプレイヤー参加プロセスを処理する方法に応じて、ゲームクライアントはバックエンドサービスにリクエストを送信します。

  2. プレイヤー参加プロセスで新しいゲームセッションを開始する必要がある場合、バックエンドサービスは新しいゲームセッションのリクエストを Amazon GameLift サービスに送信します。このリクエストは、サービスAPIオペレーション を呼び出しますStartGameSessionPlacement()。(代わりに、バックエンドサービスが StartMatchmaking()または を呼び出す場合があります)CreateGameSession()

  3. Amazon GameLift サービスは、ステータス の新しいGameSessionPlacementチケットを作成して応答しますPENDING。チケット情報をバックエンドサービスに返すため、プレースメントチケットのステータスを追跡し、ゲームセッションがいつプレイヤーの準備ができたかを判断できます。詳細については、「ゲームセッション配置のイベン通知を設定」を参照してください。

  4. Amazon GameLift サービスは、ゲームセッションのプレイスメントプロセスを開始します。ゲームセッションをホストしていないアクティブなサーバープロセスについて、どのフリートを参照するかを特定し、それらのフリートを検索します。使用可能なサーバープロセスを検索すると、Amazon GameLift サービスは以下を実行します。

    1. ゲームセッション設定とプレイスメントリクエストからのプレイヤーデータを含むGameSessionオブジェクトを作成し、ステータスを に設定しますACTIVATING

    2. ゲームセッションを開始するようにサーバープロセスにプロンプトします。サービスはサーバープロセスのonStartGameSessionコールバックを呼び出し、GameSessionオブジェクトを渡します。

    3. サーバープロセスのゲームセッション数を 1 に変更します。

  5. サーバープロセスはonStartGameSessionコールバック関数を実行します。サーバープロセスがプレイヤー接続を受け入れる準備ができたら、サーバーSDKオペレーションを呼び出しActivateGameSession()、プレイヤー接続を待機します。

  6. Amazon GameLift サービスは、サーバープロセス ( への呼び出しで報告ProcessReady()) の接続情報でGameSessionオブジェクトを更新し、ゲームセッションのステータスを に設定しますACTIVE。また、GameSessionPlacementチケットのステータスを に更新しますFULFILLED

  7. バックエンドサービスは DescribeGameSessionPlacement()を呼び出してチケットのステータスを確認し、ゲームセッション情報を取得します。ゲームセッションがアクティブな場合、バックエンドサービスはゲームクライアントに通知し、ゲームセッションの接続情報を渡します。

  8. ゲームクライアントは、接続情報を使用してゲームサーバープロセスに直接接続し、ゲームセッションに参加します。

ゲームへのプレイヤーの追加

ゲームは、オプションでプレイヤーセッションを使用して、ゲームセッションへのプレイヤー接続を追跡できます。プレイヤーセッションは、個別に作成することも、ゲームセッションプレイスメントリクエストの一部として作成することもできます。

  1. バックエンドサービスは、ゲームセッション ID CreatePlayerSession()を使用してサービスAPIオペレーションを呼び出します。

  2. Amazon GameLift サービスは、ゲームセッションのステータス ( である必要がありますACTIVE) をチェックし、ゲームセッションで開いているプレイヤースロットを探します。スロットが使用可能な場合、サービスは以下を実行します。

    1. 新しい PlayerSession オブジェクトを作成し、ステータスを RESERVED に設定します。

    2. プレイヤーセッション情報を使用してバックエンドサービスリクエストに応答します。

  3. バックエンドサービスは、プレイヤーセッション情報をゲームセッション接続情報とともにゲームクライアントに渡します。

  4. ゲームクライアントは、接続情報とプレイヤーセッション ID を使用してゲームサーバープロセスに直接接続し、ゲームセッションへの参加をリクエストします。

  5. ゲームクライアント結合の試行に応答して、ゲームサーバープロセスはサービスAPIオペレーションを呼び出しAcceptPlayerSession()てプレイヤーセッション ID を検証します。サーバープロセスは接続を受け入れるか、または拒否します。

  6. Amazon GameLift サービスは、次のいずれかを実行します。

    1. 接続が受け入れられると、Amazon は PlayerSessionステータスを GameLift に設定ACTIVEし、 をゲームサーバープロセスPlayerSessionに渡します。

    2. ゲームサーバープロセスが元のCreatePlayerSession()リクエストから一定期間内にプレイヤーセッション ID AcceptPlayerSession()を呼び出さない場合、Amazon GameLift サービスはPlayerSessionステータスを に変更TIMEDOUTし、ゲームセッションのプレイヤースロットを再度開きます。

プレイヤーの削除

プレイヤーセッションを使用するゲームの場合、ゲームサーバープロセスはプレイヤーが切断したときに Amazon GameLift サービスに通知します。サービスはこの情報を使用してゲームセッションのプレイヤースロットのステータスを追跡し、新しいプレイヤーにオープンスロットの使用を許可できます。

  1. プレイヤーがゲームセッションから切断します。

  2. ゲームサーバープロセスは、失われた接続を検出し、サーバーSDKオペレーション を呼び出しますRemovePlayerSession()

  3. Amazon GameLift サービスはプレイヤーセッションのステータスを に変更COMPLETEDし、ゲームセッションのプレイヤースロットを再度開きます。

ゲームセッションのシャットダウン

ゲームセッションの終了時、またはゲームセッションをシャットダウンすると、サーバープロセスはゲームセッションのステータスを Amazon GameLift サービスに通知します。

  1. ゲームサーバープロセスはゲームセッションを終了し、サーバーSDKオペレーション を呼び出してプロセスのシャットダウンを開始しますProcessEnding()

  2. Amazon GameLift サービスは以下を実行します。

    1. Amazon Simple Storage Service (Amazon S3) にゲーム セッションログをアップロードします。

    2. ゲームセッションのステータスを に変更しますTERMINATED

    3. サーバープロセスのステータスを TERMINATED に変更します。

    4. ホスティングソリューションの設計方法に応じて、新しく利用可能なホスティングリソースが割り当てられ、新しいゲームサーバープロセスが実行されます。