翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon GameLift とゲームサーバークライアントのやり取り
このトピックでは、ゲームクライアント、バックエンドサービス、ゲームサーバー、および Amazon GameLift の間のやり取りについて説明します。
次の図は、ゲームクライアント、バックエンドサービス、Amazon GameLift SDK、マネージド EC2 ゲームサーバー、Amazon GameLift サーバー SDK、および Amazon GameLift 間の相互のやり取りを示しています。表示されているやり取りの詳細については、このページの後続のセクションを参照してください。
ゲームサーバーを初期化する
以下の手順では、ゲームサーバーでゲームセッションをホストする準備をするときに発生するやり取りについて説明します。
-
Amazon GameLift は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで新しいサーバー実行ファイルを起動します。
-
ゲームサーバーは以下を呼び出します。
-
InitSDK()
はサーバー SDK を初期化します。 -
ProcessReady()
はゲームセッションの準備状態、接続情報、およびゲームセッションログファイルのロケーションを通知します。
次に、サーバープロセスは、Amazon GameLift からのコールバックを待機します。
-
-
Amazon GameLift はサーバープロセスのステータスを
ACTIVE
に更新して、ゲームセッションプレイスメントを有効にします。 -
Amazon GameLift が
onHealthCheck
コールバックの呼び出しを開始し、サーバープロセスがアクティブである間に定期的に呼び出しを継続します。サーバープロセスは、正常か正常でないかを 1 分以内に報告することができます。
ゲームセッションを作成する
ゲームサーバーを初期化した後、プレイヤーをホストするゲームセッションを作成すると、次のやり取りが発生します。
-
バックエンドサービスが SDK オペレーション
StartGameSessionPlacement()
を呼び出します。 -
Amazon GameLift はステータスが
PENDING
の新しいGameSessionPlacement
チケットを作成し、バックエンドサービスに返します。 -
バックエンドサービスがキューからプレイスメントチケットのステータスを取得します。詳細については、「ゲームセッション配置のイベン通知を設定」を参照してください。
-
Amazon GameLift は、適切なフリートを選択して
0
のゲームセッションでフリート内のアクティブなサーバープロセスを検索することで、ゲームセッションプレイスメントを開始します。Amazon GameLift がサーバープロセスを見つけると、Amazon GameLift は次の操作を行います。-
ゲームセッション設定と、プレイスメントリクエストからのプレイヤーデータのある
GameSession
オブジェクトをACTIVATING
ステータスで作成します。 -
サーバープロセスで
onStartGameSession
コールバックを呼び出します。Amazon GameLift は、サーバープロセスがゲームセッションをセットアップする可能性があることを示すGameSession
オブジェクトを渡します。 -
サーバープロセスのゲームセッション数を
1
に変更します。
-
-
サーバープロセスは、
onStartGameSession
コールバック関数を実行します。サーバープロセスはプレーヤーの接続の準備ができたらActivateGameSession()
を呼び出し、プレーヤーの接続を待機します。 -
Amazon GameLift は、サーバープロセスの接続情報について
GameSession
オブジェクトを更新します。(この情報には、ProcessReady()
で報告されたポート設定が含まれます)。Amazon GameLift もステータスをACTIVE
に変更します。 -
バックエンドサービスが
DescribeGameSessionPlacement()
を呼び出して、更新されたチケットステータスを検出します。次に、バックエンドサービスは接続情報を使用してゲームクライアントをサーバープロセスに接続し、ゲームセッションに参加します。
ゲームにプレイヤーを追加する
このシーケンスでは、既存のゲームセッションにプレーヤーを追加するプロセスを説明します。プレイヤーセッションは、ゲームセッション配置リクエストのパートとしてリクエストすることもできます。
-
バックエンドサービスはゲームセッション ID を使用してクライアント API
CreatePlayerSession()
オペレーションを呼び出します。 -
Amazon GameLift は、ゲームセッションのステータスを確認し (
ACTIVE
である必要あります)、ゲームセッションで開いているプレイヤースロットを探します。スロットを利用できる場合、Amazon GameLift は以下を実行します。-
新しい
PlayerSession
オブジェクトを作成し、ステータスをRESERVED
に設定します。 -
バックエンドサービスのリクエストに
PlayerSession
オブジェクトで応答します。
-
-
バックエンドサービスは、プレイヤーセッション ID を使用してゲームクライアントをサーバープロセスに直接接続します。
-
サーバーは、サーバー API オペレーション
AcceptPlayerSession()
を呼び出してプレイヤーセッション ID を検証します。検証された場合、Amazon GameLift はPlayerSession
オブジェクトをサーバープロセスに渡します。サーバープロセスは接続を受け入れるか、または拒否します。 -
Amazon GameLift は次のいずれかを実行します。
-
接続が受け入れられると、Amazon GameLift は
PlayerSession
ステータスをACTIVE
に設定します。 -
バックエンドサービスの元の
CreatePlayerSession()
呼び出しに 60 秒以内に応答がない場合、Amazon GameLift は、PlayerSession
のステータスをTIMEDOUT
に変更し、ゲームセッションのプレーヤースロットを再び開きます。
-
プレイヤーを削除する
新しいプレイヤーが参加できるスペースを作るためにプレイヤーをゲームセッションから削除するとき、次のようなやり取りが発生します。
-
プレイヤーがゲームから接続解除します。
-
サーバーは失われた接続を検出し、サーバー API オペレーション
RemovePlayerSession()
を呼び出します。 -
Amazon GameLiftは、
PlayerSession
のステータスをCOMPLETED
に変更し、ゲームセッションのプレーヤースロットを再び開きます。
ゲームセッションをシャットダウンする
この一連のやり取りは、サーバープロセスが現在のゲームセッションをシャットダウンしたときに発生します。
-
サーバーがゲームセッションとサーバーをシャットダウンします。
-
サーバーが
ProcessEnding()
を Amazon GameLift に対して呼び出します。 -
Amazon GameLift は以下を行います。
-
Amazon Simple Storage Service (Amazon S3) にゲーム セッションログをアップロードします。
-
GameSession
ステータスがTERMINATED
に変わります。 -
サーバープロセスのステータスを
TERMINATED
に変更します。 -
インスタンスリソースをリサイクルします。
-