Amazon を Unity ゲームクライアントプロジェクト GameLift と統合する - Amazon GameLift

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

Amazon を Unity ゲームクライアントプロジェクト GameLift と統合する

注記

このトピックでは、Unity 用 Amazon GameLift プラグインの以前のバージョンについて説明します。バージョン 1.0.0 (2021 年にリリース) では、Amazon GameLift サーバー 4.x SDK 以前を使用しています。サーバー 5.x を使用し、Amazon SDK をサポートする プラグインの最新バージョンに関するドキュメントについては GameLift Anywhere、「」を参照してくださいサーバー SDK 5.x 用 Unity 用 Amazon GameLift プラグインガイド

このトピックは、バックエンドサービスを介して Amazon が GameLift ホストするゲームセッションに接続するためのゲームクライアントを設定するのに役立ちます。Amazon GameLift APIs を使用して、マッチメーキングの開始、ゲームセッションの配置のリクエストなどを行います。

バックエンドサービスプロジェクトにコードを追加して、Amazon GameLift サービスとの通信を許可します。バックエンドサービスは、 GameLift サービスとのすべてのゲームクライアント通信を処理します。バックエンドサービスの詳細については、「」を参照してください。

バックエンドサーバーは次のゲームクライアントタスクを処理します。

  • プレイヤーの認証をカスタマイズする。

  • Amazon GameLift サービスからアクティブなゲームセッションに関する情報をリクエストします。

  • 新しいゲームセッションを作成する。

  • 既存のゲームセッションにプレーヤーを追加する。

  • 既存のゲームセッションからプレイヤーを削除する。

前提条件

Amazon GameLift クライアントとのゲームサーバー通信を設定する前に、次のタスクを完了します。

ゲームクライアントを初期化する

注記

このトピックでは、サーバー 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon SDK GameLift プラグインについて説明します。

ゲームクライアントを初期化するコードを追加する。このコードは起動時に実行します。他の Amazon GameLift 関数に必要です。

  1. AmazonGameLiftClient を初期化する。デフォルトのクライアント設定またはカスタム設定のいずれかで AmazonGameLiftClient を呼び出す。クライアントの設定方法に関する詳細については、「バックエンドサービス GameLift で Amazon をセットアップする」を参照してください。

  2. ゲームセッションに接続するための一意のプレイヤー ID を生成する。詳細については、「プレイヤー ID を生成する」を参照してください。

    次の例は、Amazon GameLift クライアントを設定する方法を示しています。

    public class GameLiftClient { private GameLift gl; //A sample way to generate random player IDs. bool includeBrackets = false; bool includeDashes = true; string playerId = AZ::Uuid::CreateRandom().ToString<string>(includeBrackets, includeDashes); private Amazon.GameLift.Model.PlayerSession psession = null; public AmazonGameLiftClient aglc = null; public void CreateGameLiftClient() { //Access Amazon GameLift service by setting up a configuration. //The default configuration specifies a location. var config = new AmazonGameLiftConfig(); config.RegionEndpoint = Amazon.RegionEndpoint.USEast1; CredentialProfile profile = null; var nscf = new SharedCredentialsFile(); nscf.TryGetProfile(profileName, out profile); AWSCredentials credentials = profile.GetAWSCredentials(null); //Initialize GameLift Client with default client configuration. aglc = new AmazonGameLiftClient(credentials, config); } }

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

注記

このトピックでは、サーバー 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon SDK GameLift プラグインについて説明します。

デプロイ済みフリートで新しいゲームセッションを起動し、それらのセッションをプレイヤーが使用できるようにするコードを追加します。Amazon GameLift が新しいゲームセッションを作成し、 を返したらGameSession、そのセッションにプレイヤーを追加できます。

  • 新しいゲームセッションをリクエストします。

    • ゲームでフリートを使用する場合は、フリートまたはエイリアス ID、セッション名、およびゲームの最大同時プレイヤー数を指定して CreateGameSession() を呼び出します。

    • ゲームがキューを使用している場合は、StartGameSessionPlacement() を呼び出します。

次の例は、ゲームセッションを作成する方法を示しています。

public Amazon.GameLift.Model.GameSession() { var cgsreq = new Amazon.GameLift.Model.CreateGameSessionRequest(); //A unique identifier for the alias with the fleet to create a game session in. cgsreq.AliasId = aliasId; //A unique identifier for a player or entity creating the game session cgsreq.CreatorId = playerId; //The maximum number of players that can be connected simultaneously to the game session. cgsreq.MaximumPlayerSessionCount = 4; //Prompt an available server process to start a game session and retrieves connection information for the new game session Amazon.GameLift.Model.CreateGameSessionResponse cgsres = aglc.CreateGameSession(cgsreq); string gsid = cgsres.GameSession != null ? cgsres.GameSession.GameSessionId : "N/A"; Debug.Log((int)cgsres.HttpStatusCode + " GAME SESSION CREATED: " + gsid); return cgsres.GameSession; }

プレイヤーをゲームセッションに追加する

注記

このトピックでは、サーバー 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon SDK GameLift プラグインについて説明します。

Amazon GameLift が新しいゲームセッションを作成し、GameSessionオブジェクトを返したら、そのセッションにプレイヤーを追加できます。

  1. 新しいプレイヤーセッションを作成して、ゲームセッションにプレイヤースロットを予約します。ゲームセッション ID と各プレイヤーの固有の ID を指定して、CreatePlayerSession または CreatePlayerSessions を使用します。

  2. ゲーム セッションに接続します。PlayerSession オブジェクトを取得してゲームセッションの接続情報を取得します。この情報を使用して、サーバープロセスへの直接接続を確立できます。

    1. 指定されたポートと、サーバープロセスDNSの名前または IP アドレスを使用します。

    2. フリートDNSの名前とポートを使用します。フリートでTLS証明書の生成が有効になっている場合は、DNS名前とポートが必要です。

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

以下の例は、ゲームセッションでプレイヤースポットを予約する方法を示しています。

public Amazon.GameLift.Model.PlayerSession CreatePlayerSession(Amazon.GameLift.Model.GameSession gsession) { var cpsreq = new Amazon.GameLift.Model.CreatePlayerSessionRequest(); cpsreq.GameSessionId = gsession.GameSessionId; //Specify game session ID. cpsreq.PlayerId = playerId; //Specify player ID. Amazon.GameLift.Model.CreatePlayerSessionResponse cpsres = aglc.CreatePlayerSession(cpsreq); string psid = cpsres.PlayerSession != null ? cpsres.PlayerSession.PlayerSessionId : "N/A"; return cpsres.PlayerSession; }

次のコードは、プレイヤーをゲームセッションに接続する方法を示しています。

public bool ConnectPlayer(int playerIdx, string playerSessionId) { //Call ConnectPlayer with player ID and player session ID. return server.ConnectPlayer(playerIdx, playerSessionId); }

ゲームセッションからプレイヤーを削除する

注記

このトピックでは、サーバー 4.x 以前を使用する Unity バージョン 1.0.0 用の Amazon SDK GameLift プラグインについて説明します。

プレイヤーがゲームを離れると、そのプレイヤーをゲームセッションから削除できます。

  1. プレイヤーがサーバープロセスから切断されたことを Amazon GameLift サービスに通知します。プレイヤーのセッション ID で RemovePlayerSession を呼び出します。

  2. RemovePlayerSessionSuccess を返すことを確認します。次に、Amazon はプレイヤースロット GameLift を使用可能に変更します。このスロットは、Amazon が新しいプレイヤーに割り当てる GameLift ことができます。

以下の例は、プレイヤーセッションを削除する方法を示しています。

public void DisconnectPlayer(int playerIdx) { //Receive the player session ID. string playerSessionId = playerSessions[playerIdx]; var outcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId); if (outcome.Success) { Debug.Log (":) PLAYER SESSION REMOVED"); } else { Debug.Log(":(PLAYER SESSION REMOVE FAILED. RemovePlayerSession() returned " + outcome.Error.ToString()); } }