Amazon GameLift をゲームクライアントに追加する - Amazon GameLift

Amazon GameLift をゲームクライアントに追加する

Amazon GameLift を、ゲームセッション情報を必要とするゲームコンポーネントに統合し、新しいゲームセッションを作成し、、プレイヤーをゲームに追加します。ゲームのアーキテクチャに応じて、この機能は、プレイヤーの認証、マッチメーキング、ゲームセッションプレイスメントなどのタスクを処理するバックエンドサービスに配置されています。

注記

Amazon GameLift がホストするゲームのマッチメーキングの設定方法の詳細については、「Amazon GameLift FlexMatch デベロッパーガイド」を参照してください。

バックエンドサービスで Amazon GameLift をセットアップする

Amazon GameLift クライアントを初期化し、キー設定を保存するコードを追加します。このコードは、Amazon GameLift に依存するコードの前に実行する必要があります。

  1. クライアントをセットアップします。既定のクライアント設定を使用するか、カスタムクライアント設定オブジェクトを作成します。詳細については、AWS::Client::ClientConfiguration (C++) または Amazon GameLiftConfig (C#) を参照してください。

    クライアント設定は、Amazon GameLift に連絡するときに使用するターゲットリージョンとエンドポイントを指定します。リージョンは、使用するデプロイ済みのリソース (フリート、キュー、マッチメーカー) のセットを識別します。デフォルトのクライアント設定では、米国東部 (バージニア北部) リージョンが指定されます。その他のリージョンを使用するには、カスタム設定を作成します。

  2. Amazon GameLift クライアントを初期化します。Aws::GameLift::GameLiftClient() (C++) または AmazonGameLiftClient() (C#) をデフォルトのクライアント設定またはカスタム設定のいずれかで使用します。

  3. 各プレイヤーに一意の識別子を生成するメカニズムを追加します。詳細については、「プレイヤー ID を生成する」を参照してください。

  4. 以下の情報を収集して保存します。

    • ターゲットフリート – Amazon GameLift API リクエストの多くでは、フリートを指定する必要があります。このためには、ターゲットフリートを指し示すフリート ID またはエイリアス ID のいずれかを使用します。ベストプラクティスとして、バックエンドサービスを更新しなくてもプレイヤーをあるフリートから別のフリートに切り替えられるようにフリートエイリアスを使用してください。

    • [ターゲットキュー] – ゲームでマルチフリートキューを使用して新しいゲームセッションを配置する場合は、使用するキューを指定します。

    • AWS 認証情報 – Amazon GameLift サービスへのすべての呼び出しは、ゲームをホストする AWS アカウント の認証情報を提供する必要があります。これらの認証情報は、「ゲームへのプログラムによるアクセスをセットアップする」で説明されているようにプレイヤーユーザーを作成して取得します。プレイヤーユーザーのアクセスを管理する方法に応じて、次の操作を行います。

      • ロールを使用してプレイヤーのユーザーアクセス許可を管理する場合は、Amazon GameLift API を呼び出す前にロールを引き受けるコードを追加します。ロールを引き受けるリクエストは、一時的なセキュリティ認証情報のセットが返します。詳細については、「IAM ユーザーガイド」の「IAM ロール への切り替え (AWS API)」を参照してください。

      • 長期的なセキュリティ認証情報がある場合は、保存されている認証情報を検索して使用するようにコードを設定します。「AWS SDK およびツールリファレンスガイド」の「長期認証情報を使用して認証する」を参照してください。認証情報の保存については、(C++) および (.NET) の AWS API リファレンスを参照してください。

      • 一時的なセキュリティ認証情報がある場合は、「IAM ユーザーガイド」の「AWS SDK での一時的なセキュリティ認証情報の使用」で説明されているように、AWS Security Token Service (AWS STS) を使用して認証情報を定期的に更新するコードを追加します。古い認証情報の有効期限が切れる前に、コードから新しい認証情報をリクエストする必要があります。

ゲームセッションを取得する

使用可能なゲームセッションを検出し、ゲームセッション設定とメタデータを管理するコードを追加します。

アクティブなゲームセッションを検索する

SearchGameSessions を使用して、特定のゲームセッション、すべてのアクティブなセッション、または検索条件セットを満たすセッションに関する情報を取得します。この呼び出しは、検索リクエストに一致するアクティブなゲームセッションごとに GameSession オブジェクトを返します。

プレイヤーが参加できるアクティブなゲームセッションのフィルタリングされたリストを取得するには、検索条件を使用します。たとえば、次のようにセッションをフィルタリングできます。

  • 空きがないゲームセッションを除外する: CurrentPlayerSessionCount = MaximumPlayerSessionCount

  • セッションが実行されている時間の長さに基づいてゲームセッションを選択する: CreationTime を評価する。

  • カスタムゲームプロパティに基づいてゲームセッションを検索する: gameSessionProperties.gameMode = "brawl"

ゲームセッションを管理する

ゲームのセッション情報を取得または更新するには、次のいずれかのオペレーションを使用します。

  • [DescribeGameSessionDetails] – ゲームセッション情報に加えて、ゲームセッションの保護ステータスを取得します。

  • [UpdateGameSession] (ゲームセッションのアップデート)– ゲームセッションのメタデータと設定を必要に応じて変更します。

  • [GetGameSessionLogUrl] (ゲームセッションURLの取得)– 保存済みゲームセッションログにアクセスします。

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

デプロイ済みフリートで新しいゲームセッションを起動し、それらのセッションをプレイヤーが使用できるようにするコードを追加します。ゲームを複数の AWS リージョン でデプロイするか、1 つのリージョンでデプロイするかに応じて、ゲームセッションを作成するオプションは 2 つあります。

マルチフリートキューにゲームセッションを作成する

StartGameSessionPlacement を使用して、新しいゲームセッションのリクエストをキューに配置します。この操作を使用するには、キューを作成します。これにより、Amazon GameLift が新しいゲームセッションを配置する場所が決まります。キューの詳細とそれらの使用方法については、「Amazon GameLift キューを使用してゲームセッション配置を管理する」を参照してください。

ゲームセッションプレイスメントを作成するときは、使用するキューの名前、ゲームセッション名、同時実行プレイヤーの最大数、オプションのゲームプロパティのセットを指定します。また、オプションで、ゲームセッションに自動的に参加するプレイヤーのリストを指定することもできます。関連するリージョンのプレイヤーレイテンシーデータを含めた場合、Amazon GameLift はこの情報を使用して、できる限り最適なゲームプレイエクスペリエンスをプレイヤーに提供するフリートに、新しいゲームセッションを配置します。

ゲームセッション配置は非同期プロセスです。リクエスト送信後は、それが成功するかタイムアウトするかです。また、StopGameSessionPlacement を使用してリクエストをいつでもキャンセルすることができます。プレイスメントリクエストのステータスを確認するには、DescribeGameSessionPlacement を呼び出します。

特定のフリートにゲームセッションを作成する

CreateGameSession を使用して、指定したフリートに新しいセッションを作成します。この同期オペレーションは、フリートに新しいゲームセッションをホストするための使用可能なリソースがあるかどうかによって、成功か失敗かが決まります。Amazon GameLift が新しいゲームセッションを作成して GameSession オブジェクトを返したら、そのゲームセッションへプレイヤーの参加させることができます。

このオペレーションを使用するときは、フリート ID またはエイリアス ID、セッション名、そのゲームの同時実行プレイヤーの最大数を指定します。オプションで、一連のゲームプロパティを含めることができます。ゲームプロパティは、キーと値のペアの配列で定義されます。

Amazon GameLift リソース保護機能を使って、1 人のプレイヤーが作成できるゲームセッションの数を制限する場合は、ゲームセッション作成者のプレイヤー ID を指定ます。

ゲームセッションにプレイヤーを参加させる

アクティブなゲームセッションにプレイヤースロットを予約し、ゲームクライアントをゲームセッションに接続するコードを追加します。

  1. ゲームセッションにプレイヤースロットを予約する

    プレイヤースロットを予約するには、ゲームセッションに新しいプレイヤーセッションを作成します。プレイヤーセッションの詳細については、「プレイヤーがゲームに接続する方法」を参照してください。

    新しいプレイヤーセッションを作成するには、2 つの方法があります。

    • StartGameSessionPlacement を使用して新しいゲームセッションの 1 人以上のプレイヤー用のスロットを予約します。

    • CreatePlayerSession または CreatePlayerSessions を使用し、ゲームセッション ID を指定して 1 人以上のプレイヤー用のプレイヤースロットを予約します。

    Amazon GameLift は、まずゲームセッションが新しいプレイヤーを受け入れ、使用可能なプレイヤースロットがあることを確認します。成功すると、Amazon GameLift はプレイヤー用にスロットを予約し、新しいプレイヤーセッションを作成して PlayerSession オブジェクトを返します。このオブジェクトには、ゲームクライアントがゲームセッションに接続するために必要な DNS 名、IP アドレス、ポートが含まれます。

    プレイヤーセッションリクエストには、各プレイヤーの一意の ID が含まれている必要があります。詳細については、「プレイヤー ID を生成する」を参照してください。

    プレイヤーセッションには、一連のカスタムプレイヤーデータを含めることができます。このデータは新しく作成されたプレイヤーセッションオブジェクトに保存され、DescribePlayerSessions() を呼び出すことにより取得できます。また、プレイヤーがゲームセッションに直接接続したときに Amazon GameLift はこのオブジェクトをゲームサーバーに渡します。複数のプレイヤーセッションをリクエストするときは、プレイヤー ID にマッピングされたプレイヤーデータ文字列をプレイヤーごとにリクエストで指定します。

  2. ゲームセッションに接続する

    ゲームクライアントにコードを追加し、ゲームセッションの接続情報を含む PlayerSession オブジェクトを取得します。この情報を使用して、サーバーへの直接接続を確立します。

    • 指定したポートと、サーバープロセスに割り当てられた DNS 名または IP アドレスを使用して接続できます。

    • フリートに対して TLS 証明書の生成が有効になっている場合、DNS 名とポートを使用して接続します。

    • ゲームサーバーが新規プレイヤーの接続を検証する場合は、プレイヤーセッション ID を参照します。

    接続すると、ゲームクライアントとサーバープロセスは Amazon GameLift を関与させずに直接相互に通信します。サーバーは、Amazon GameLift との通信を維持して、プレイヤーの接続ステータス、ヘルスステータスなどを報告します。ゲームサーバーが新規プレイヤーを検証する場合、プレイヤーセッション ID がゲームセッション内の予約済みスロットと一致することを検証し、プレイヤーの接続を受け入れるか拒否します。プレイヤーが切断されると、サーバープロセスが接続中断を報告します。

ゲームセッションプロパティを使用する

ゲームクライアントは、ゲームプロパティを使用してデータをゲームセッションに渡すことができます。ゲームプロパティは、ゲームサーバーが追加、読み取り、一覧表示、変更できるキーと値のペアです。新しいゲームセッションを作成するときにゲームプロパティを渡すか、ゲームセッションがアクティブになっているときに後で渡すことができます。ゲームセッションには、最大 16 のゲームプロパティを含めることができます。ゲームプロパティは削除できません。

例えば、ゲームに、NoviceEasyIntermediate および Expert の難易度があるとします。プレイヤーは、Easy を選択してゲームを開始しました。前のセクションで説明したとおり、ゲームクライアントは、StartGameSessionPlacement または CreateGameSession を使用して、Amazon GameLift から新しいゲームセッションを要求します。クライアントはそのリクエストで {"Key": "Difficulty", "Value":"Easy"} を渡します。

要求に応じて、Amazon GameLift は指定されたゲームプロパティを含む GameSession オブジェクトを作成します。次に、Amazon GameLift は、利用可能なゲームサーバーに新しいゲームセッションを開始し、GameSession オブジェクトを渡すように指示します。ゲームサーバーはEasyDifficulty でゲームセッションを開始します。

詳細はこちら