Amazon GameLift サーバー SDK 4.x for C#: アクション - Amazon GameLift

Amazon GameLift サーバー SDK 4.x for C#: アクション

Amazon GameLift C# サーバー SDK リファレンスを使用して、Amazon GameLift でホスティングするマルチプレイヤーゲームを統合します。統合プロセスのガイダンスについては、「Amazon GameLift をゲームサーバーに追加する」を参照してください。

注記

このリファレンスは、Amazon GameLift サーバー SDK の以前のバージョン用です。最新バージョンについては、「Amazon GameLift サーバー SDK 5.x for C# および Unity: アクション」を参照してください。

Amazon GameLift サーバー SDK 4.x for C#: データ型

AcceptPlayerSession()

指定されたプレイヤーセッション ID のプレイヤーがサーバープロセスに接続し、検証が必要であることを Amazon GameLift サービスに通知します。Amazon GameLift は、プレイヤーセッション ID が有効であること、つまり、そのプレイヤー ID でゲームセッションにプレイヤースロットが予約されていることを確認します。検証できたら、Amazon GameLift はプレーヤースロットの状態を RESERVED から ACTIVE に変更します。

構文

GenericOutcome AcceptPlayerSession(String playerSessionId)

パラメータ

playerSessionId

新しいプレイヤーセッションが作成されたときに Amazon GameLift によって発行される一意の ID。プレイヤーセッション ID は、PlayerSession オブジェクトです。これは、クライアントの GameLift API アクションの https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartGameSessionPlacement.htmlStartGameSessionPlacement、https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.htmlCreateGameSession、https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessionPlacement.htmlDescribeGameSessionPlacement、または https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.htmlDescribePlayerSessions の呼び出しに応答して返されます。

型: 文字列

必須: はい

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

この例では、無効なプレイヤーセッション ID の検証や拒否を含む、接続リクエストを処理するための関数を示します。

void ReceiveConnectingPlayerSessionID (Connection connection, String playerSessionId){ var acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }

ActivateGameSession()

サーバープロセスがゲームセッションをアクティブにし、プレイヤーの接続を受ける準備ができていることを Amazon GameLift サービスに通知します。このアクションは、すべてのゲームセッションの初期化が完了した後、onStartGameSession() コールバック関数の一部として呼び出されます。

構文

GenericOutcome ActivateGameSession()

パラメータ

このアクションにはパラメータがありません。

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

この例では、ActivateGameSession()onStartGameSession() 委任関数の一部として呼び出されていることを示しています。

void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

DescribePlayerSessions()

設定、セッションメタデータ、プレイヤーデータを含む、プレイヤーセッションデータを取得します。このアクションを使用して、単一のプレイヤーセッション、ゲームセッション内のすべてのプレイヤーセッション、または単一のプレイヤー ID に関連付けられたすべてのプレイヤーセッションに関する情報を取得します。

構文

DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)

パラメータ

describePlayerSessionsRequest

取得するプレイヤーセッションを記述する DescribePlayerSessionsRequest オブジェクト。

必須: はい

戻り値

成功した場合は、リクエストのパラメータに適合したプレイヤーセッションオブジェクトのセットを含む DescribePlayerSessionsOutcome オブジェクトを返します。プレイヤーセッションオブジェクトは、AWS SDK Amazon GameLift API PlayerSession データ型と同じ構造を持ちます。

この例は、指定したゲームセッションにアクティブに接続されているすべてのプレイヤーセッションのリクエストを示しています。NextToken を省略し、[制限] 値を 10 に設定すると、Amazon GameLift は、リクエストに一致するプレイヤーセッションレコードの最初の 10 個を返します。

// Set request parameters var describePlayerSessionsRequest = new Aws.GameLift.Server.Model.DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit = 10, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE) }; // Call DescribePlayerSessions Aws::GameLift::DescribePlayerSessionsOutcome playerSessionsOutcome = Aws::GameLift::Server::Model::DescribePlayerSessions(describePlayerSessionRequest);

GetGameSessionId()

サーバープロセスがアクティブな場合、サーバープロセスが現在ホストしているゲームセッションの ID を取得します。

ゲームセッションでまだアクティブ化されていないアイドルプロセスの場合、コールは、Success = True そして GameSessionId = "" (空の文字列) を返します。

構文

AwsStringOutcome GetGameSessionId()

パラメータ

このアクションにはパラメータがありません。

戻り値

成功した場合、ゲームセッション ID を AwsStringOutcome オブジェクトとして返します。成功しなかった場合、エラーメッセージを返します。

var getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetInstanceCertificate()

フリートとそのインスタンスに関連付けられている pem エンコードされた TLS 証明書のファイルの場所を取得します。AWS Certificate Manager は、証明書設定を GENERATED に設定して新しいフリートを作成するとこの証明書が生成されます。この証明書を使用して、ゲームクライアントとのセキュリティ保護ありの接続を確立し、クライアント/サーバー通信を暗号化します。

構文

GetInstanceCertificateOutcome GetInstanceCertificate();

パラメータ

このアクションにはパラメータがありません。

戻り値

成功すると、インスタンスに保存されているフリートの TLS 証明書ファイルの場所と証明書チェーンを含む GetInstanceCertificateOutcome オブジェクトを返します。証明書チェーンから抽出されたルート証明書ファイルもインスタンスに保存されます。成功しなかった場合、エラーメッセージを返します。

証明書と証明書チェーンデータの詳細については、「AWS Certificate Manager API リファレンス」の「GetCertificate レスポンス要素」を参照してください。

var getInstanceCertificateOutcome = GameLiftServerAPI.GetInstanceCertificate();

GetSdkVersion()

サーバープロセスに組み込まれた SDK の現在のバージョン番号を返します。

構文

AwsStringOutcome GetSdkVersion()

パラメータ

このアクションにはパラメータがありません。

戻り値

成功した場合、AwsStringOutcome オブジェクトとして現在の SDK バージョンを返します。返される文字列は、バージョン番号のみを含みます(例: 3.1.5)。成功しなかった場合、エラーメッセージを返します。

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

GetTerminationTime()

終了時刻が判る場合に、サーバープロセスがシャットダウンを予定している時刻を返します。サーバープロセスは、Amazon GameLift サービスから onProcessTerminate() コールバックを受信した後にこのアクションを実行します。Amazon GameLift が onProcessTerminate() を呼び出すには、以下の理由が考えられます。(1) サーバープロセスがポートヘルスを報告した場合、もしくは Amazon GameLift に応答しなかった場合、(2) スケールダウンイベント中にインスタンスを終了した場合、(3) スポットインスタンス のためインスタンスが終了した場合。

プロセスが onProcessTerminate() コールバックを受信した場合、戻り値は、予想終了時刻です。プロセスが onProcessTerminate() コールバックを受信していない場合、エラーメッセージが返されます。サーバープロセスのシャットダウンの詳細を確認してください。

構文

AwsDateTimeOutcome GetTerminationTime()

パラメータ

このアクションにはパラメータがありません。

戻り値

成功した場合、終了時刻を AwsDateTimeOutcome オブジェクトとして返します。値は終了時間で、0001 00:00:00 以降の経過ティックで表現されます。たとえば、日付時刻の値 2020-09-13 12:26:40 -000Z は、637355968000000000 ティックに等しくなります。終了時間がない場合は、エラーメッセージを返します。

var getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

InitSDK()

Amazon GameLift SDK を初期化する。このメソッドは起動時に他の Amazon GameLift 関連の初期化が実行される前に呼び出す必要があります。

構文

InitSDKOutcome InitSDK()

パラメータ

このアクションにはパラメータがありません。

戻り値

成功した場合は、サーバープロセスが ProcessReady() を呼び出す準備ができていることを示す InitSdkOutcome オブジェクトを返します。

var initSDKOutcome = GameLiftServerAPI.InitSDK();

ProcessEnding()

サーバープロセスがシャットダウンしていることを Amazon GameLift サービスに通知します。このメソッドは、すべてのアクティブゲームセッションのシャットダウンを含む他のすべてのクリーンアップタスクの後に呼び出されます。このメソッドは、終了コード 0 で終了します。0 以外の終了コードでは、処理が問題なく終了しなかったというイベントメッセージが発生します。

メソッドがコード 0 で終了すると、成功した終了コードでプロセスを終了できます。エラーコードでプロセスを終了することもできます。エラーコードで終了すると、フリートイベントはプロセスが異常終了したことを示します (SERVER_PROCESS_TERMINATED_UNHEALTHY)。

構文

GenericOutcome ProcessEnding()

パラメータ

このアクションにはパラメータがありません。

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);

ProcessReady()

サーバープロセスがゲームセッションをホストする準備ができたことを Amazon GameLift サービスに通知します。このメソッドは、InitSDK() の呼び出しが成功して必要な設定タスクが完了した後、サーバープロセスがゲームセッションをホストできるようになる前に呼び出す必要があります。このメソッドは、プロセスごとに 1 回だけ呼び出す必要があります。

構文

GenericOutcome ProcessReady(ProcessParameters processParameters)

パラメータ

processParameters

サーバープロセスに関する以下の情報を伝える ProcessParameters オブジェクト。

  • サーバープロセスと通信するために Amazon GameLift サービスが呼び出す、ゲームサーバーコードで実装されたコールバックメソッドの名前。

  • サーバープロセスがリッスンするポートの番号。

  • Amazon GameLift でキャプチャして保存するゲームセッション固有のファイルへのパス。

必須: はい

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

この例では、ProcessReady() 呼び出しと委任関数の実装の両方を示します。

// Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }

RemovePlayerSession()

指定されたプレイヤーセッション ID のプレイヤーがサーバープロセスから切断されたことを Amazon GameLift サービスに通知します。それに応じて、Amazon GameLift はプレイヤースロットを新しいプレイヤーに割り当てられるよう利用可能に変更します。

構文

GenericOutcome RemovePlayerSession(String playerSessionId)

パラメータ

playerSessionId

新しいプレイヤーセッションが作成されたときに Amazon GameLift によって発行される一意の ID。プレイヤーセッション ID は、PlayerSession オブジェクトです。これは、クライアントの GameLift API アクションの https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartGameSessionPlacement.htmlStartGameSessionPlacement、https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.htmlCreateGameSession、https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessionPlacement.htmlDescribeGameSessionPlacement、または https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.htmlDescribePlayerSessions の呼び出しに応答して返されます。

型: 文字列

必須: はい

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

Aws::GameLift::GenericOutcome disconnectOutcome = Aws::GameLift::Server::RemovePlayerSession(playerSessionId);

StartMatchBackfill()

FlexMatch で作成されたゲームセッションの空きスロット用に新規プレイヤーを検索するリクエストを送信します。AWS SDK アクション StartMatchBackfill() を参照してください。このアクションを使用すると、ゲームセッションをホストするゲームサーバーのプロセスによってマッチバックフィルリクエストを開始できます。FlexMatch バックフィルの特徴の詳細はこちら。

このアクションは非同期です。新規プレイヤーが正常にマッチングされると、Amazon GameLift サービスはコールバック関数 OnUpdateGameSession() を使用して更新済みマッチメーカーデータを送信します。

サーバープロセスではアクティブなマッチバックフィルリクエストは一度に 1 つだけです。新しいリクエストを送信するには、まず StopMatchBackfill() を呼び出して元のリクエストをキャンセルする必要があります。

構文

StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);

パラメータ

StartMatchBackfillRequest

次の情報を通信する StartMatchBackfillRequest オブジェクト。

  • バックフィルリクエストに割り当てるチケット ID。この情報はオプションです。ID が指定されていない場合は Amazon GameLift が ID を 1 つ自動生成します。

  • リクエストを送信するマッチメーカー。完全な設定 ARN が必要です。この値は、ゲームセッションのマッチメーカーデータから取得できます。

  • バックフィルされるゲームセッションの ID。

  • ゲームセッションの現在のプレイヤーに利用可能なマッチメーキングデータ。

必須: はい

戻り値

StartMatchBackfillOutcome オブジェクトを、マッチバックフィルチケット ID またはエラーメッセージを伴うエラーとともに返します。

// Build a backfill request var startBackfillRequest = new AWS.GameLift.Server.Model.StartMatchBackfillRequest() { TicketId = "a ticket ID", //optional MatchmakingConfigurationArn = "the matchmaker configuration ARN", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session //get player data for all currently connected players MatchmakerData matchmakerData = MatchmakerData.FromJson(gameSession.MatchmakerData); // gets matchmaker data for current players // get matchmakerData.Players // remove data for players who are no longer connected Players = ListOfPlayersRemainingInTheGame }; // Send backfill request var startBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void OnUpdateGameSession(GameSession myGameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

StartMatchBackfill() とともに作成されたアクティブなマッチバックフィルリクエストをキャンセルします。AWS SDK アクション StopMatchmaking() も参照してください。FlexMatch バックフィルの特徴の詳細はこちら。

構文

GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);

パラメータ

StopMatchBackfillRequest

キャンセルするマッチメーキングチケットを識別する StopMatchBackfillRequest オブジェクト:

  • キャンセルされるバックフィルリクエストに割り当てられたチケット ID

  • バックフィルリクエストが送信されるマッチメーカー

  • バックフィルリクエストに関連付けられたゲームセッション

必須: はい

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

// Set backfill stop request parameters var stopBackfillRequest = new AWS.GameLift.Server.Model.StopMatchBackfillRequest() { TicketId = "a ticket ID", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "the matchmaker configuration ARN", //from the game session matchmaker data GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; var stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);

TerminateGameSession()

このメソッドは、バージョン 4.0.1 で非推奨となりました。代わりに、サーバープロセスはゲームセッションが終了した後に ProcessEnding() を呼び出す必要があります。

サーバープロセスがゲームセッションをシャットダウンしたことを Amazon GameLift サービスに通知します。このアクションは、サーバープロセスがアクティブなままになり、新しいゲームセッションをホストするための準備ができたときに呼び出されます。これは、新しいゲームセッションをホストするためにサーバープロセスがすぐに利用可能であることを Amazon GameLift に通知するため、ゲームセッション終了手順が完了した後にのみ呼び出す必要があります。

ゲームセッションが停止した後にサーバープロセスがシャットダウンされる場合は、このアクションは呼び出されません。代わりに、ProcessEnding() を呼び出し、ゲームセッションとサーバープロセスの両方が終了していることを通知します。

構文

GenericOutcome TerminateGameSession()

パラメータ

このアクションにはパラメータがありません。

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

この例は、ゲームセッションの終了時のサーバープロセスを示しています。

// game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var terminateGameSessionOutcome = GameLiftServerAPI.TerminateGameSession(); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

UpdatePlayerSessionCreationPolicy()

現在のゲームセッションの機能を更新し、新しいプレイヤーセッションを承諾します。ゲームセッションは、新しいプレイヤーセッションをすべて受け入れるか拒否するかを設定できます。(「Amazon GameLift サービス API リファレンス」の「UpdateGameSession()」アクションも参照してください)。

構文

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

パラメータ

newPlayerSessionPolicy

ゲームセッションで新しいプレイヤーを承諾するかどうかを示す文字列値。

型: PlayerSessionCreationPolicy 列挙。有効な値を次に示します。

  • ACCEPT_ALL – すべての新しいプレイヤーセッションを承諾します。

  • DENY_ALL – すべての新しいプレイヤーセッションを拒否します。

必須: はい

戻り値

正常またはエラーメッセージを伴うエラーの、一般的な結果を返します。

この例は、現在のゲームセッションの参加ポリシーを、すべてのプレイヤーを受け入れるように設定します。

var updatePlayerSessionCreationPolicyOutcomex = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);