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# and Unity: Actions を参照してください。

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

AcceptPlayerSession()

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

構文

GenericOutcome AcceptPlayerSession(String playerSessionId)

パラメータ

playerSessionId

新しいプレイヤーセッションの作成 GameLift 時に Amazon によって発行された一意の ID。プレイヤーセッション ID は PlayerSession オブジェクトで指定され、GameLift APIアクション StartGameSessionPlacement、、、 CreateGameSession DescribeGameSessionPlacementまたは DescribePlayerSessionsへのクライアント呼び出しに応答して返されます。

型: 文字列

必須: はい

戻り値

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

この例では、無効なプレイヤーセッション の検証と拒否など、接続リクエストを処理する関数を示していますIDs。

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)

パラメータ

describePlayerSessionsリクエスト

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

必須:はい

戻り値

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

この例は、指定したゲームセッションにアクティブに接続されているすべてのプレイヤーセッションのリクエストを示しています。制限値を省略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オブジェクトを返します。このオブジェクトはインスタンスに保存されます。証明書チェーンから抽出されたルート証明書ファイルもインスタンスに保存されます。成功しなかった場合、エラーメッセージを返します。

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

var getInstanceCertificateOutcome = GameLiftServerAPI.GetInstanceCertificate();

GetSdkVersion()

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

構文

AwsStringOutcome GetSdkVersion()

パラメータ

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

戻り値

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

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

GetTerminationTime()

終了時刻が判る場合に、サーバープロセスがシャットダウンを予定している時刻を返します。サーバープロセスは、Amazon GameLift サービスからonProcessTerminate()コールバックを受け取った後にこのアクションを実行します。Amazon はonProcessTerminate()、(1) 状態が悪い (サーバープロセスがポートの状態を報告しているか Amazon に応答していない GameLift)、(2) スケールダウンイベント中にインスタンスを終了する場合、または (3) スポットインスタンスの中断 によってインスタンスが終了する場合、 を呼び出す GameLift ことがあります。

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

構文

AwsDateTimeOutcome GetTerminationTime()

パラメータ

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

戻り値

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

var getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

初期化 SDK()

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

構文

InitSDKOutcome InitSDK()

パラメータ

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

戻り値

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

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 サービスに通知します。このメソッドは、初期化 SDK() の呼び出しが成功して必要な設定タスクが完了した後、サーバープロセスがゲームセッションをホストできるようになる前に呼び出す必要があります。このメソッドは、プロセスごとに 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

新しいプレイヤーセッションの作成 GameLift 時に Amazon によって発行された一意の ID。プレイヤーセッション ID は PlayerSession オブジェクトで指定され、GameLift APIアクション StartGameSessionPlacement、、、 CreateGameSession DescribeGameSessionPlacementまたは DescribePlayerSessionsへのクライアント呼び出しに応答して返されます。

型: 文字列

必須: はい

戻り値

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

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

StartMatchBackfill()

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

このアクションは非同期です。新しいプレイヤーが正常に一致した場合、Amazon GameLift サービスはコールバック関数 を使用して更新されたマッチメーカーデータを提供しますOnUpdateGameSession()

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

構文

StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);

パラメータ

StartMatchBackfillRequest

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

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

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

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

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

必須:はい

戻り値

マッチバックフィルチケット ID を持つ StartMatchBackfillOutcome オブジェクト、またはエラーメッセージを持つ失敗を返します。

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

ゲームセッションが停止した後にサーバープロセスがシャットダウンされる場合は、このアクションは呼び出されません。代わりに、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 Service API ReferenceUpdateGameSession() アクションも参照してください)。

構文

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

パラメータ

newPlayerSessionポリシー

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

タイプ: PlayerSessionCreationPolicy enum。有効な値を次に示します。

  • ACCEPT_ALL – すべての新しいプレイヤーセッションを受け入れます。

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

必須:はい

戻り値

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

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

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