C# と Unity の Amazon GameLift サーバー SDK リファレンス: アクション - Amazon GameLift

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

C# と Unity の Amazon GameLift サーバー SDK リファレンス: アクション

この Amazon GameLift C# サーバー SDK リファレンスは、Amazon で使用するマルチプレイヤーゲームを準備するのに役立ちます GameLift。統合プロセスの詳細については、「Amazon GameLift をゲームサーバーに追加する」を参照してください。Unity 用 C# サーバー SDK プラグインの使用に関する情報については、「Unity プロジェクトに Amazon GameLift を統合する」を参照してください。

GetSdkVersion()

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

構文

AwsStringOutcome GetSdkVersion();

戻り値

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

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

InitSDK()

マネージド EC2 フリートの Amazon GameLift SDK を初期化します。Amazon に関連する他の初期化 GameLift が発生する前に、起動時にこのメソッドを呼び出します。このメソッドは、ホスト環境からサーバーパラメータを読み取り、サーバーと Amazon GameLift サービス間の通信を設定します。

構文

GenericOutcome InitSDK();

戻り値

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

//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();

InitSDK()

Anywhere フリートの Amazon GameLift SDK を初期化します。Amazon に関連する他の初期化 GameLift が発生する前に、起動時にこのメソッドを呼び出します。この方法では、サーバーと Amazon GameLift サービス間の通信をセットアップするための明示的なサーバーパラメータが必要です。

構文

GenericOutcome InitSDK(ServerParameters serverParameters);

パラメータ

ServerParameters

Amazon GameLift Anywhere フリートでゲームサーバーを初期化するには、次の情報を使用してServerParametersオブジェクトを作成します。

  • ゲームサーバーへの接続 WebSocket に使用される の URL。

  • ゲームサーバーのホストに使用されるプロセスの ID。

  • ゲームサーバープロセスをホスティングするコンピューティングの ID。

  • Amazon コンピューティングを含む Amazon GameLift Anywhere GameLift フリートの ID。

  • Amazon GameLift オペレーションによって生成された認証トークン。

戻り値

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

注記

Anywhere フリートにデプロイされたゲームビルドに対して InitSDK() への呼び出しが失敗する場合は、ビルドリソースの作成時に使用した ServerSdkVersion パラメータを確認してください。この値は、使用中のサーバー SDK バージョンに明示的に設定する必要があります。このパラメータのデフォルト値は 4.x で、互換性がありません。この問題を解決するには、新しいビルドを作成して新しいフリートにデプロイします。

//Define the server parameters string websocketUrl = "wss://us-west-1.api.amazongamelift.com"; string processId = "PID1234"; string fleetId = "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa"; string hostId = "HardwareAnywhere"; string authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; ServerParameters serverParameters = new ServerParameters(webSocketUrl, processId, hostId, fleetId, authToken); //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);

ProcessReady()

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

構文

GenericOutcome ProcessReady(ProcessParameters processParameters)

パラメータ

ProcessParameters

ProcessParameters オブジェクトにはサーバープロセスに関する情報が保持されます。

戻り値

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

この例では、メソッドと委任関数の実装の両方を示します。

// Set parameters and call ProcessReady ProcessParameters processParams = new ProcessParameters( this.OnStartGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnUpdateGameSession, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); GenericOutcome processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

ProcessEnding()

サーバープロセスが終了中 GameLift であることを Amazon に通知します。他のすべてのクリーンアップタスク (アクティブなゲームセッションのシャットダウンを含む) の後、およびプロセスを終了する前に、このメソッドを呼び出します。ProcessEnding() の結果に応じて、プロセスは成功 (0) またはエラー (-1) で終了し、フリートイベントを生成します。プロセスがエラーで終了した場合、生成されるフリートイベントは ですSERVER_PROCESS_TERMINATED_UNHEALTHY

構文

GenericOutcome ProcessEnding()

戻り値

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

この例では、サーバープロセスを終了する前に、成功またはエラーの終了コードで ProcessEnding()Destroy() を呼び出します。

GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }

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 GenericOutcome activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

UpdatePlayerSessionCreationPolicy()

現在のゲームセッションの機能を更新し、新しいプレイヤーセッションを承諾します。ゲームセッションは、新しいプレイヤーセッションをすべて受け入れるか拒否するかを設定できます。

構文

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

パラメータ

playerSessionPolicy

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

有効な値を次に示します。

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

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

戻り値

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

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

GenericOutcome updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);

GetGameSessionId()

アクティブなサーバープロセスにホストされたゲームセッションの ID を取得します。

ゲームセッションでアクティブ化されていないアイドル状態のプロセスの場合、呼び出しは GameLiftError を返します。

構文

AwsStringOutcome GetGameSessionId()

戻り値

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

AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetTerminationTime()

終了時刻が判る場合に、サーバープロセスがシャットダウンを予定している時刻を返します。サーバープロセスは、Amazon からonProcessTerminate()コールバックを受信した後にこのアクションを実行します GameLift。Amazon onProcessTerminate() は、次の理由で を GameLift 呼び出します。

  • サーバープロセスで状態不良が報告された場合、または Amazon に応答しなかった場合 GameLift。

  • スケールダウンイベント中にインスタンスを終了する場合。

  • スポットインスタンスの中断によりインスタンスが終了した場合。

構文

AwsDateTimeOutcome GetTerminationTime()

戻り値

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

AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

AcceptPlayerSession()

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

構文

GenericOutcome AcceptPlayerSession(String playerSessionId)

パラメータ

playerSessionId

新しいプレイヤーセッションの作成 GameLift 時に によって発行される一意の ID。

戻り値

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

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

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

RemovePlayerSession()

プレイヤーがサーバープロセスから切断された GameLift ことを Amazon に通知します。それに応じて、Amazon GameLift はプレイヤースロットを使用可能に変更します。

構文

GenericOutcome RemovePlayerSession(String playerSessionId)

パラメータ

playerSessionId

新しいプレイヤーセッションの作成 GameLift 時に Amazon が発行する一意の ID。

戻り値

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

GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);

DescribePlayerSessions()

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

構文

DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)

パラメータ

DescribePlayerSessionsRequest

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

戻り値

成功した場合は、リクエストのパラメータに適合したプレイヤーセッションオブジェクトのセットを含む DescribePlayerSessionsOutcome オブジェクトを返します。

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

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

StartMatchBackfill()

で作成されたゲームセッションで、開いているスロットの新しいプレイヤーを検索するリクエストを送信します FlexMatch。詳細については、 FlexMatch「バックフィル機能」を参照してください。

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

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

構文

StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);

パラメータ

StartMatchBackfillRequest

StartMatchBackfillRequest オブジェクトにはバックフィルリクエストに関する情報が保持されます。

戻り値

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

// Build a backfill request StartMatchBackfillRequest startBackfillRequest = new StartMatchBackfillRequest() { TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session 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 StartMatchBackfillOutcome 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()

アクティブなマッチバックフィルリクエストをキャンセルします。詳細については、FlexMatch 「バックフィル機能」を参照してください。

構文

GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);

パラメータ

StopMatchBackfillRequest

停止しているマッチメーキングチケットに関する詳細を提供する StopMatchBackfillRequest オブジェクト。

戻り値

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

// Set backfill stop request parameters StopMatchBackfillRequest stopBackfillRequest = new StopMatchBackfillRequest(){ TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; GenericOutcome stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);

GetComputeCertificate()

ゲームサーバーとゲームクライアント間のネットワーク接続を暗号化するために使用される TLS 証明書へのパスを取得します。コンピューティングデバイスを Amazon GameLift Anywhere フリートに登録するときに、証明書パスを使用できます。詳細については、「」を参照してくださいRegisterCompute

構文

GetComputeCertificateOutcome GetComputeCertificate();

戻り値

以下を含む GetComputeCertificateResponse オブジェクトを返します。

  • CertificatePath: コンピューティングリソースの TLS 証明書へのパス。Amazon GameLift マネージドフリートを使用する場合、このパスには以下が含まれます。

    • certificate.pem: エンドユーザー証明書。証明書チェーン全体は、この証明書に追加された certificateChain.pem を組み合わせたものです。

    • certificateChain.pem: ルート証明書と中間証明書を含む証明書チェーン。

    • rootCertificate.pem: ルート証明書。

    • privateKey.pem: エンドユーザー証明書のプライベートキー。

  • ComputeName: コンピューティングリソースの名前。

GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();

GetFleetRoleCredentials()

Amazon が他の とやり取り GameLift することを許可する IAM ロール認証情報を取得します AWS のサービス。詳細については、「フリートの他の AWS リソースと通信する」を参照してください。

構文

GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);

パラメータ

GetFleetRoleCredentialsRequest

AWS リソースへの制限付きアクセスをゲームサーバーに拡張するロール認証情報。

戻り値

GetFleetRoleCredentialsOutcome オブジェクトを返します。

// form the fleet credentials request GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){ RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" }; GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);

Destroy()

Amazon GameLift ゲームサーバー SDK をメモリから解放します。ベストプラクティスとして、ProcessEnding() の後、かつプロセスの終了前にこのメソッドを呼び出します。Anywhere フリートを使用していて、すべてのゲームセッションの後にサーバープロセスを終了しない場合は、 Destroy()を呼び出してInitSDK()再初期化してから、プロセスが でゲームセッションをホストする準備ができてい GameLift ることを Amazon に通知しますProcessReady()

構文

GenericOutcome Destroy()

戻り値

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

// Operations to end game sessions and the server process GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); // Shut down and destroy the instance of the GameLift Game Server SDK GenericOutcome destroyOutcome = GameLiftServerAPI.Destroy(); // Exit the process with success or failure if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }