Amazon GameLift をゲームサーバーに追加する - Amazon GameLift

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

Amazon GameLift をゲームサーバーに追加する

各ゲームサーバープロセスは Amazon が GameLift 開始するイベントに応答できる必要があるため GameLift、カスタムゲームサーバーは Amazon と通信する必要があります。ゲームサーバーは、サーバープロセスのステータスとプレイヤー接続についても Amazon GameLift に知らせておく必要があります。ゲームサーバー、バックエンドサービス、ゲームクライアント、Amazon が GameLift 連携してゲームホスティングを管理する方法の詳細については、「」を参照してくださいAmazon とのゲームクライアント/サーバーインタラクション GameLift

Amazon とやり取りするゲームサーバーを準備するには GameLift、Amazon GameLift Server SDK をゲームサーバープロジェクトに追加し、このトピックで説明されている機能を構築します。サーバーSDKは複数の言語で利用できます。Amazon GameLift Server の詳細についてはSDK、「」を参照してくださいAmazon GameLift 開発ツールを取得する

サーバーSDKAPIリファレンス:

サーバープロセスを初期化する

Amazon との通信を確立 GameLift し、サーバープロセスがゲームセッションをホストする準備ができていることを報告するコードを追加します。このコードは、Amazon GameLift コードの前に実行する必要があります。

  1. を呼び出して Amazon GameLift API クライアントを初期化しますInitSdk()。Amazon GameLift マネージドEC2インスタンスで実行されているゲームサーバープロセスを初期化するには、パラメータなしでデフォルト InitSDK() (C++) (C#) (Unreal ) (Go ) を使用します。Amazon GameLift は自動的に Amazon GameLift に接続します。Amazon で実行されているゲームサーバープロセスを初期化するには GameLift Anywhere コンピューティングリソース、次の InitSdk()を使用して を呼び出しますServerParameters

    • ゲームサーバーへの接続に使用されるウェブソケットURLの 。

    • ゲームサーバーのホストに使用されるプロセスの ID。

    • ゲームサーバープロセスをホスティングするコンピューティングの ID。

    • Amazon を含む GameLift フリートの ID GameLift Anywhere コンピューティング。

    • Amazon GameLift オペレーション によって生成された認証トークンGetComputeAuthToken

  2. サーバープロセスがゲームセッションをホストする準備ができてい GameLift ることを Amazon に通知します。ProcessReady() (C++) (C#) (Unreal ) (Go ) を以下の情報とともに呼び出します。(ProcessReady() は、サーバープロセスごとに 1 回だけ呼び出す必要があることに注意してください)。

    • サーバープロセスが使用するポート番号。バックエンドサービスはゲームクライアントにポート番号と IP アドレスを提供し、サーバープロセスに接続してゲームセッションに参加します。

    • Amazon GameLift が保持するゲームセッションログなどのファイルの場所。サーバープロセスはゲームセッション中にこれらのファイルを生成します。これらは、サーバープロセスが実行されているインスタンスに一時的に保存され、インスタンスがシャットダウンすると失われます。一覧表示したファイルは Amazon にアップロードされます GameLift。これらのファイルには、Amazon GameLift コンソールまたは Amazon GameLift API オペレーション GetGameSessionLogUrl() を呼び出してアクセスできます。

    • Amazon がサーバープロセスに呼び GameLift 出すことができるコールバック関数の名前。ゲームサーバーは、これらの関数を実装する必要があります。詳細については、 (C++) (C#) (Unreal ) (Go ) を参照してください。

      • (オプション) onHealthCheck – Amazon は定期的にこの関数を GameLift 呼び出して、サーバーからヘルスステータスレポートをリクエストします。

      • onStartGameSession – Amazon は、クライアントリクエスト CreateGameSession() に応答してこの関数を GameLift 呼び出します。

      • onProcessTerminate — Amazon はサーバープロセスを GameLift 強制的に停止させ、正常にシャットダウンさせます。

      • (オプション) onUpdateGameSession – Amazon GameLift は更新されたゲームセッションオブジェクトをゲームサーバーに配信するか、マッチバックフィルリクエストのステータス更新を提供します。FlexMatch バックフィル機能には、このコールバックが必要です。

    ゲームサーバーを設定して、所有または管理する AWS リソースに安全にアクセスすることもできます。詳細については、「フリートの他の AWS リソースと通信する」を参照してください。

(オプション) サーバープロセスの健全性を報告する

コールバック関数 onHealthCheck() を実装するコードをゲームサーバーに追加します。Amazon GameLift は、ヘルスメトリクスを収集するために、このコールバックメソッドを定期的に呼び出します。このコールバック関数を実装する場合は、以下を実行します:

  • サーバープロセスのヘルスステータスを確認します。例えば、外部の依存関係でエラーが発生した場合にサーバープロセスを異常と報告できます。

  • 状態評価を完了し、60 秒以内にコールバックに応答します。Amazon GameLift がその間にレスポンスを受信しない場合、サーバープロセスが異常であると自動的に判断されます。

  • ブール値を返します (正常の場合は true、異常の場合は false)。

ヘルスチェックコールバックを実装しない場合、Amazon はサーバーが応答しない限り、サーバープロセスを正常 GameLift と見なします。

Amazon GameLift はサーバープロセスのヘルスを使用して、異常なプロセスを終了し、リソースを消去します。サーバープロセスが引き続き異常と報告したり、3 回連続してヘルスチェックに応答しない場合、Amazon はプロセスをシャットダウンして新しいヘルスチェックを開始する GameLift ことがあります。Amazon は、フリートのサーバープロセスのヘルスに関するメトリクスを GameLift 収集します。

(オプション) TLS証明書を取得する

サーバープロセスがTLS証明書生成が有効になっているフリートで実行されている場合、TLS証明書を取得してゲームクライアントとの安全な接続を確立し、クライアントサーバー通信を暗号化できます。証明書のコピーがインスタンスに保存されます。ファイルの場所を取得するには、 GetComputeCertificate() (C++) (C#) (Unreal ) (Go ) を呼び出します。

ゲームセッションをスタートする

コールバック関数 onStartGameSession を実装するコードを追加します。Amazon GameLift はこのコールバックを呼び出して、サーバーでゲームセッションを開始します。

onStartGameSession 関数は、GameSessionオブジェクトを入力パラメータとして受け取ります。このオブジェクトには、最大プレイヤー数などの主なゲームセッション情報が含まれます。また、ゲームデータとプレイヤーデータを含めることもできます。この関数の実装は、以下のタスクを実行する必要があります。

  • GameSessionプロパティに基づいて、新しいゲームセッションを作成するためのアクションを開始します。少なくとも、ゲームサーバーは、サーバープロセスに接続するときにゲームクライアントがリファレンスするゲームセッション ID を関連付ける必要があります。

  • 必要に応じて、ゲームデータとプレイヤーデータを処理します。このデータは、GameSession オブジェクトにあります。

  • 新しいゲームセッションでプレイヤーを受け入れる準備ができ GameLift たら、Amazon に通知します。サーバーAPIオペレーション ActivateGameSession() (C++) (C#) (Unreal ) (Go ) を呼び出します。呼び出しが成功すると、Amazon はゲームセッションのステータスを GameLift に変更しますACTIVE

(オプション) 新しいプレイヤーを検証する

プレイヤーセッションのステータスを追跡する場合は、新しいプレイヤーがゲームサーバーに接続するときに、プレイヤーを検証するコードを追加します。Amazon は、現在のプレイヤーと利用可能なゲームセッションスロット GameLift を追跡します。

検証のために、ゲームセッションへのアクセス許可を要求しているゲームクライアントには、プレイヤーセッション ID を含める必要があります。Amazon は、プレイヤーが StartGameSessionPlacement() または StartMatchmaking() を使用してゲームへの参加をリクエストすると、この ID GameLift を自動的に生成します。プレイヤーセッションでは、ゲームセッションにオープンスロットを予約します。

ゲームサーバープロセスがゲームクライアント接続リクエストを受信すると、プレイヤーセッション ID を使用して AcceptPlayerSession() (C++) (C#) (Unreal ) (Go ) を呼び出します。これに応じて、Amazon はプレイヤーセッション ID がゲームセッションで予約されているオープンスロットに対応する GameLift ことを確認します。Amazon がプレイヤーセッション ID GameLift を検証すると、サーバープロセスは接続を受け入れます。これで、プレイヤーはゲームセッションに参加できます。Amazon GameLift がプレイヤーセッション ID を検証しない場合、サーバープロセスは接続を拒否します。

(オプション) プレイヤーセッションの終了を報告する

プレイヤーセッションのステータスを追跡する場合は、プレイヤーがゲームセッションを退出 GameLift したときに Amazon に通知するコードを追加します。このコードは、サーバープロセスが接続中断を検出するたびに実行する必要があります。Amazon GameLift はこの通知を使用して、ゲームセッションで現在のプレイヤーと利用可能なスロットを追跡します。

切断された接続を処理するには、コードで、対応するプレイヤーセッション ID を持つサーバーAPIオペレーション RemovePlayerSession() (C++) (C#) (Unreal ) (Go ) に呼び出しを追加します。

ゲームセッションを終了する

ゲームセッションが終了した GameLift ときに Amazon に通知するコードをサーバープロセスシャットダウンシーケンスに追加します。ホスティングリソースをリサイクルして更新するには、ゲームセッションが完了した後に Amazon がサーバープロセスを GameLift シャットダウンします。

サーバープロセスのシャットダウンコードの先頭で、サーバーAPIオペレーション ProcessEnding() (C++) (C#) (Unreal ) (Go ) g を呼び出します。この呼び出しは、サーバープロセスがシャットダウンしていること GameLift を Amazon に通知します。Amazon は、ゲームセッションのステータスとサーバープロセスのステータスを GameLift に変更しますTERMINATEDProcessEnding() を呼び出した後は、プロセスが安全にシャットダウンされます。

サーバープロセスのシャットダウン通知に応答する

Amazon からの通知に応答してサーバープロセスをシャットダウンするコードを追加します GameLift。Amazon は、サーバープロセスが異常を一貫して報告した場合、またはサーバープロセスが実行されているインスタンスが終了している場合、この通知 GameLift を送信します。Amazon は、キャパシティスケールダウンイベントの一部として、またはスポットインスタンスの中断に応じて、インスタンスを停止 GameLift できます。

シャットダウン通知を処理するには、ゲームサーバーコードに次の変更を加えます。

  • コールバック関数 onProcessTerminate() を実装します。この関数は、サーバープロセスをシャットダウンするコードを呼び出します。Amazon GameLift がこのオペレーションを呼び出すと、スポットインスタンスの中断から 2 分後に通知されます。この通知は、サーバープロセスにプレイヤーを適切に切断してゲーム状態データを保存し、他のクリーンアップタスクを実行する時間を提供します。

  • ゲームサーバーのシャットダウンコードからサーバーAPIオペレーション GetTerminationTime() (C++) (C#) (Unreal ) (Go ) を呼び出します。Amazon GameLift がサーバープロセスを停止するための呼び出しを発行した場合、 は推定終了時間GetTerminationTime()を返します。

  • ゲームサーバーのシャットダウンコードの最初に、サーバーAPIオペレーション ProcessEnding() (C++) (C#) (Unreal ) (Go ProcessEnding() を呼び出します。この呼び出しは、サーバープロセスがシャットダウンしていること GameLift を Amazon に通知し、Amazon GameLiftはサーバープロセスのステータスを に変更しますTERMINATEDProcessEnding() を呼び出した後は、プロセスが安全にシャットダウンされます。