翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 関数に必要です。
-
AmazonGameLiftClient
を初期化する。デフォルトのクライアント設定またはカスタム設定のいずれかでAmazonGameLiftClient
を呼び出す。クライアントの設定方法に関する詳細については、「バックエンドサービス GameLift で Amazon をセットアップする」を参照してください。 -
ゲームセッションに接続するための一意のプレイヤー 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
オブジェクトを返したら、そのセッションにプレイヤーを追加できます。
-
新しいプレイヤーセッションを作成して、ゲームセッションにプレイヤースロットを予約します。ゲームセッション ID と各プレイヤーの固有の ID を指定して、
CreatePlayerSession
またはCreatePlayerSessions
を使用します。 -
ゲーム セッションに接続します。
PlayerSession
オブジェクトを取得してゲームセッションの接続情報を取得します。この情報を使用して、サーバープロセスへの直接接続を確立できます。-
指定されたポートと、サーバープロセスDNSの名前または IP アドレスを使用します。
-
フリートDNSの名前とポートを使用します。フリートでTLS証明書の生成が有効になっている場合は、DNS名前とポートが必要です。
-
プレイヤーセッション 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 プラグインについて説明します。
プレイヤーがゲームを離れると、そのプレイヤーをゲームセッションから削除できます。
-
プレイヤーがサーバープロセスから切断されたことを Amazon GameLift サービスに通知します。プレイヤーのセッション ID で
RemovePlayerSession
を呼び出します。 -
RemovePlayerSession
がSuccess
を返すことを確認します。次に、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()); } }