Amazon GameLift とゲームサーバークライアントのやり取り - Amazon GameLift

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

Amazon GameLift とゲームサーバークライアントのやり取り

このトピックでは、ゲームクライアント、バックエンドサービス、ゲームサーバー、および Amazon GameLift の間のやり取りについて説明します。

次の図は、ゲームクライアント、バックエンドサービス、Amazon GameLift SDK、マネージド EC2 ゲームサーバー、Amazon GameLift サーバー SDK、および Amazon GameLift 間の相互のやり取りを示しています。表示されているやり取りの詳細については、このページの後続のセクションを参照してください。

後続のセクションに記載するユースケースにおけるゲームクライアント/サーバー間のやり取り。

ゲームサーバーを初期化する

以下の手順では、ゲームサーバーでゲームセッションをホストする準備をするときに発生するやり取りについて説明します。

  1. Amazon GameLift は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで新しいサーバー実行ファイルを起動します。

  2. ゲームサーバーは以下を呼び出します。

    1. InitSDK() はサーバー SDK を初期化します。

    2. ProcessReady() はゲームセッションの準備状態、接続情報、およびゲームセッションログファイルのロケーションを通知します。

    次に、サーバープロセスは、Amazon GameLift からのコールバックを待機します。

  3. Amazon GameLift はサーバープロセスのステータスを ACTIVE に更新して、ゲームセッションプレイスメントを有効にします。

  4. Amazon GameLift が onHealthCheck コールバックの呼び出しを開始し、サーバープロセスがアクティブである間に定期的に呼び出しを継続します。サーバープロセスは、正常か正常でないかを 1 分以内に報告することができます。

ゲームセッションを作成する

ゲームサーバーを初期化した後、プレイヤーをホストするゲームセッションを作成すると、次のやり取りが発生します。

  1. バックエンドサービスが SDK オペレーション StartGameSessionPlacement() を呼び出します。

  2. Amazon GameLift はステータスが PENDING の新しい GameSessionPlacement チケットを作成し、バックエンドサービスに返します。

  3. バックエンドサービスがキューからプレイスメントチケットのステータスを取得します。詳細については、「ゲームセッション配置のイベン通知を設定」を参照してください。

  4. Amazon GameLift は、適切なフリートを選択して 0 のゲームセッションでフリート内のアクティブなサーバープロセスを検索することで、ゲームセッションプレイスメントを開始します。Amazon GameLift がサーバープロセスを見つけると、Amazon GameLift は次の操作を行います。

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

    2. サーバープロセスで onStartGameSession コールバックを呼び出します。Amazon GameLift は、サーバープロセスがゲームセッションをセットアップする可能性があることを示す GameSession オブジェクトを渡します。

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

  5. サーバープロセスは、onStartGameSession コールバック関数を実行します。サーバープロセスはプレーヤーの接続の準備ができたら ActivateGameSession() を呼び出し、プレーヤーの接続を待機します。

  6. Amazon GameLift は、サーバープロセスの接続情報について GameSession オブジェクトを更新します。(この情報には、ProcessReady() で報告されたポート設定が含まれます)。Amazon GameLift もステータスを ACTIVE に変更します。

  7. バックエンドサービスが DescribeGameSessionPlacement() を呼び出して、更新されたチケットステータスを検出します。次に、バックエンドサービスは接続情報を使用してゲームクライアントをサーバープロセスに接続し、ゲームセッションに参加します。

ゲームにプレイヤーを追加する

このシーケンスでは、既存のゲームセッションにプレーヤーを追加するプロセスを説明します。プレイヤーセッションは、ゲームセッション配置リクエストのパートとしてリクエストすることもできます。

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

  2. Amazon GameLift は、ゲームセッションのステータスを確認し (ACTIVE である必要あります)、ゲームセッションで開いているプレイヤースロットを探します。スロットを利用できる場合、Amazon GameLift は以下を実行します。

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

    2. バックエンドサービスのリクエストに PlayerSession オブジェクトで応答します。

  3. バックエンドサービスは、プレイヤーセッション ID を使用してゲームクライアントをサーバープロセスに直接接続します。

  4. サーバーは、サーバー API オペレーション AcceptPlayerSession() を呼び出してプレイヤーセッション ID を検証します。検証された場合、Amazon GameLift は PlayerSession オブジェクトをサーバープロセスに渡します。サーバープロセスは接続を受け入れるか、または拒否します。

  5. Amazon GameLift は次のいずれかを実行します。

    1. 接続が受け入れられると、Amazon GameLift は PlayerSession ステータスを ACTIVE に設定します。

    2. バックエンドサービスの元の CreatePlayerSession() 呼び出しに 60 秒以内に応答がない場合、Amazon GameLift は、PlayerSession のステータスを TIMEDOUT に変更し、ゲームセッションのプレーヤースロットを再び開きます。

プレイヤーを削除する

新しいプレイヤーが参加できるスペースを作るためにプレイヤーをゲームセッションから削除するとき、次のようなやり取りが発生します。

  1. プレイヤーがゲームから接続解除します。

  2. サーバーは失われた接続を検出し、サーバー API オペレーション RemovePlayerSession() を呼び出します。

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

ゲームセッションをシャットダウンする

この一連のやり取りは、サーバープロセスが現在のゲームセッションをシャットダウンしたときに発生します。

  1. サーバーがゲームセッションとサーバーをシャットダウンします。

  2. サーバーが ProcessEnding() を Amazon GameLift に対して呼び出します。

  3. Amazon GameLift は以下を行います。

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

    2. GameSession ステータスが TERMINATED に変わります。

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

    4. インスタンスリソースをリサイクルします。