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

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

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

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

C# サーバー SDK 5.x for Amazon GameLift Servers -- データ型

GetSdkVersion()

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

構文

AwsStringOutcome GetSdkVersion();

戻り値

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

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

InitMetrics()

サーバーパフォーマンスデータを収集およびレポートするためのメトリクスシステムを初期化します。最良の結果を得るには、InitSDK() の前にこのメソッドを呼び出して、SDK の初期化中にメトリクス収集を有効にします。

構文

MetricsManagerOutcome InitMetrics(); MetricsManagerOutcome InitMetrics(MetricsParameters metricsParameters);

パラメータ

MetricsParameters (オプション)

メトリクス収集の設定パラメータ。指定しない場合は、環境変数で上書きできる既定値を使用します。

戻り値

成功すると、MetricsManager インスタンスを含む MetricsManagerOutcome オブジェクトを返します。成功しなかった場合、エラーメッセージを返します。

// Initialize with default parameters (uses environment variables if available) var outcome = GameLiftServerAPI.InitMetrics(); if (outcome.Success) { var metricsManager = outcome.Result; } else { Console.WriteLine("Failed to initialize metrics: " + outcome.Error.ErrorMessage); } // Initialize with custom parameters var metricsParams = new MetricsParameters("localhost", 8125, "crash-host", 9999, 1000, 1024); var customOutcome = GameLiftServerAPI.InitMetrics(metricsParams); if (customOutcome.Success) { var metricsManager = customOutcome.Result; }

InitSDK()

マネージド EC2 フリート用の Amazon GameLift Servers SDK を初期化します。起動時に、他の Amazon GameLift Servers 関連の初期化が実行される前にこのメソッドを呼び出します。このメソッドは、ホスト環境からサーバーパラメータを読み取り、サーバーと Amazon GameLift Servers サービス間の通信をセットアップします。べき等性トークンを使用するため、失敗したときにこの呼び出しを安全に再試行できます。

構文

GenericOutcome InitSDK();

戻り値

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

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

InitSDK()

Anywhere フリートの Amazon GameLift Servers SDK を初期化します。起動時に、他の Amazon GameLift Servers 関連の初期化が実行される前にこのメソッドを呼び出します。この方法では、サーバーと Amazon GameLift Servers サービス間の通信をセットアップするための明示的なサーバーパラメータが必要です。べき等性トークンを使用するため、失敗したときにこの呼び出しを安全に再試行できます。

構文

GenericOutcome InitSDK(ServerParameters serverParameters);

パラメータ

ServerParameters

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

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

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

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

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

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

戻り値

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

注記

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()

サーバープロセスがゲームセッションをホストする準備ができたことを Amazon GameLift Servers に通知します。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()

サーバープロセスが終了していることを Amazon GameLift Servers に通知します。アクティブなゲームセッションのシャットダウンを含むその他すべてのクリーンアップタスクの後そして、プロセスを終了する前にこのメソッドを呼び出します。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 Servers に通知します。このアクションは、すべてのゲームセッションの初期化の後、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 GameLift Servers から onProcessTerminate() コールバックを受信した後にこのアクションを実行します。Amazon GameLift Servers は次の理由で onProcessTerminate() を呼び出します。

  • サーバープロセスが健全性異常を報告したり、Amazon GameLift Servers に応答しなかった場合。

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

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

構文

AwsDateTimeOutcome GetTerminationTime()

戻り値

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

AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

AcceptPlayerSession()

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

構文

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()

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

構文

GenericOutcome RemovePlayerSession(String playerSessionId)

パラメータ

playerSessionId

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

戻り値

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

GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);

DescribePlayerSessions()

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

構文

DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)

パラメータ

DescribePlayerSessionsRequest

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

戻り値

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

この例は、指定したゲームセッションにアクティブに接続されているすべてのプレイヤーセッションのリクエストを示しています。NextToken を省略し、Limit 値を 10 に設定すると、Amazon GameLift Servers は、リクエストに一致するプレイヤーセッションレコードの最初の 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 Servers はコールバック関数 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 Servers Anywhere フリートに登録するときに使用できます。詳細については、「RegisterCompute」を参照してください。

構文

GetComputeCertificateOutcome GetComputeCertificate();

戻り値

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

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

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

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

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

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

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

GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();

GetFleetRoleCredentials()

Amazon GameLift Servers が他のとやり取りすることを許可する IAM ロール認証情報を取得します。詳細については、「Amazon GameLift Servers ホストされたゲームサーバーを他の 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 Servers ゲームサーバー SDK をメモリから解放します。ベストプラクティスとして、ProcessEnding() の後、かつプロセスの終了前にこのメソッドを呼び出します。Anywhere フリートを使用していて、ゲームセッションのたびにサーバープロセスを終了しない場合は、Destroy()InitSDK() の順に呼び出して再初期化してから、ProcessReady() でゲームセッションをホストする準備ができたことを Amazon GameLift Servers に通知します。

構文

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); }