Amazon GameLift サーバー SDK (C++) リファレンス: アクション - Amazon GameLift

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

Amazon GameLift サーバー SDK (C++) リファレンス: アクション

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

AcceptPlayerSession()

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

構文

GenericOutcome AcceptPlayerSession(const std::string& playerSessionId);

パラメータ

playerSessionId

AWS SDK Amazon GameLift API アクションのCreatePlayerSessionへの呼び出しに応答して Amazon GameLift サービスによって発行された一意の ID。ゲームクライアントは、サーバープロセスに接続するときにこの ID をリファレンスします。

Type: std::string

必須: はい

戻り値

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

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

void ReceiveConnectingPlayerSessionID (Connection& connection, const std::string& playerSessionId){ Aws::GameLift::GenericOutcome connectOutcome = Aws::GameLift::Server::AcceptPlayerSession(playerSessionId); if(connectOutcome.IsSuccess()) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(connectOutcome.GetError().GetMessage(); } }

ActivateGameSession()

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

構文

GenericOutcome ActivateGameSession();

パラメータ

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

戻り値

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

この例では、ActivateGameSession()onStartGameSession() コールバック関数の一部として呼び出されていることを示しています。

void onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession(); }

DescribePlayerSessions()

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

構文

DescribePlayerSessionsOutcome DescribePlayerSessions ( const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest);

パラメータ

describePlayerSessionsRequest

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

必須: はい

戻り値

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

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

// Set request parameters Aws::GameLift::Server::Model::DescribePlayerSessionsRequest request; request.SetPlayerSessionStatusFilter(Aws::GameLift::Server::Model::PlayerSessionStatusMapper::GetNameForPlayerSessionStatus(Aws::GameLift::Server::Model::PlayerSessionStatus::Active)); request.SetLimit(10); request.SetGameSessionId("the game session ID"); // can use GetGameSessionId() // Call DescribePlayerSessions Aws::GameLift::DescribePlayerSessionsOutcome playerSessionsOutcome = Aws::GameLift::Server::DescribePlayerSessions(request);

GetGameSessionId()

サーバープロセスがアクティブな場合、サーバープロセスが現在ホストしているゲームセッションの一意の識別子を取得します。識別子は ARN 形式で返されます: arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID string>

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

構文

AwsStringOutcome GetGameSessionId();

パラメータ

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

戻り値

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

Aws::GameLift::AwsStringOutcome sessionIdOutcome = Aws::GameLift::Server::GetGameSessionId();

GetInstanceCertificate()

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

構文

GetInstanceCertificateOutcome GetInstanceCertificate();

パラメータ

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

戻り値

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

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

Aws::GameLift::GetInstanceCertificateOutcome certificateOutcome = Aws::GameLift::Server::GetInstanceCertificate();

GetSdkVersion()

使用中の SDK の現在のバージョン番号を返します。

構文

AwsStringOutcome GetSdkVersion();

パラメータ

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

戻り値

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

Aws::GameLift::AwsStringOutcome SdkVersionOutcome = Aws::GameLift::Server::GetSdkVersion();

GetTerminationTime()

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

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

構文

AwsLongOutcome GetTerminationTime();

パラメータ

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

戻り値

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

Aws::GameLift::AwsLongOutcome TermTimeOutcome = Aws::GameLift::Server::GetTerminationTime();

InitSDK()

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

構文

InitSDKOutcome InitSDK();

パラメータ

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

戻り値

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

Aws::GameLift::Server::InitSDKOutcome initOutcome = Aws::GameLift::Server::InitSDK();

ProcessEnding()

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

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

構文

GenericOutcome ProcessEnding();

パラメータ

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

戻り値

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

Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); if (outcome.Success) exit(0); // exit with success // otherwise, exit with error code exit(errorCode);

ProcessReady()

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

この呼び出しは同期です。非同期呼び出しを実行するには、ProcessReadyAsync() を使用します。詳細については、「サーバープロセスを初期化する」を参照してください。

構文

GenericOutcome ProcessReady( const Aws::GameLift::Server::ProcessParameters &processParameters);

パラメータ

processParameters

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

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

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

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

必須: はい

戻り値

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

この例では、ProcessReady() 呼び出しとコールバック関数の実装の両方を示します。

// Set parameters and call ProcessReady std::string serverLog("serverOut.log"); // Example of a log file written by the game server std::vector<std::string> logPaths; logPaths.push_back(serverLog); int listenPort = 9339; Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters( std::bind(&Server::onStartGameSession, this, std::placeholders::_1), std::bind(&Server::onProcessTerminate, this), std::bind(&Server::OnHealthCheck, this), std::bind(&Server::OnUpdateGameSession, this), listenPort, Aws::GameLift::Server::LogParameters(logPaths)); Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::ProcessReady(processReadyParameter); // Implement callback functions void Server::onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession (maxPlayers); } void Server::onProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); } bool Server::onHealthCheck() { bool health; // complete health evaluation within 60 seconds and set health return health; }

ProcessReadyAsync()

サーバープロセスがゲームセッションをホストする準備ができたことを Amazon GameLift サービスに通知します。サーバープロセスがゲームセッションをホストする準備ができたら、このメソッドを呼び出します。パラメータは、特定の状況で呼び出す Amazon GameLift のコールバック関数名を指定します。ゲームサーバーコードは、これらの関数を実装する必要があります。

この呼び出しは非同期です。同期呼び出しを実行するには、ProcessReady() を使用します。詳細については、「サーバープロセスを初期化する」を参照してください。

構文

GenericOutcomeCallable ProcessReadyAsync( const Aws::GameLift::Server::ProcessParameters &processParameters);

パラメータ

processParameters

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

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

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

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

必須: はい

戻り値

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

// Set parameters and call ProcessReady std::string serverLog("serverOut.log"); // This is an example of a log file written by the game server std::vector<std::string> logPaths; logPaths.push_back(serverLog); int listenPort = 9339; Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters( std::bind(&Server::onStartGameSession, this, std::placeholders::_1), std::bind(&Server::onProcessTerminate, this), std::bind(&Server::OnHealthCheck, this), std::bind(&Server::OnUpdateGameSession, this), listenPort, Aws::GameLift::Server::LogParameters(logPaths)); Aws::GameLift::GenericOutcomeCallable outcome = Aws::GameLift::Server::ProcessReadyAsync(processReadyParameter); // Implement callback functions void onStartGameSession(Aws::GameLift::Model::GameSession myGameSession) { // game-specific tasks when starting a new game session, such as loading map GenericOutcome outcome = Aws::GameLift::Server::ActivateGameSession (maxPlayers); } void onProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup GenericOutcome outcome = Aws::GameLift::Server::ProcessEnding(); } bool onHealthCheck() { // perform health evaluation and complete within 60 seconds return health; }

RemovePlayerSession()

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

構文

GenericOutcome RemovePlayerSession( const std::string& playerSessionId);

パラメータ

playerSessionId

AWS SDK Amazon GameLift API アクションのCreatePlayerSessionへの呼び出しに応答して Amazon GameLift サービスによって発行された一意の ID。ゲームクライアントは、サーバープロセスに接続するときにこの ID をリファレンスします。

Type: std::string

必須: はい

戻り値

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

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

StartMatchBackfill()

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

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

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

構文

StartMatchBackfillOutcome StartMatchBackfill ( const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startBackfillRequest);

パラメータ

StartMatchBackfillRequest

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

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

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

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

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

必須: はい

戻り値

StartMatchBackfillOutcome オブジェクトを、マッチバックフィルチケットまたはエラーメッセージを伴うエラーとともに返します。チケットのステータスは、AWS SDK アクション DescribeMatchmaking() を使用して追跡できます。

// Build a backfill request std::vector<Player> players; Aws::GameLift::Server::Model::StartMatchBackfillRequest startBackfillRequest; startBackfillRequest.SetTicketId("a ticket ID"); //optional, autogenerated if not provided startBackfillRequest.SetMatchmakingConfigurationArn("the matchmaker configuration ARN"); //from the game session matchmaker data startBackfillRequest.SetGameSessionArn("the game session ARN"); // can use GetGameSessionId() startBackfillRequest.SetPlayers(players); //from the game session matchmaker data // Send backfill request Aws::GameLift::StartMatchBackfillOutcome backfillOutcome = Aws::GameLift::Server::StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void Server::OnUpdateGameSession(Aws::GameLift::Server::Model::GameSession gameSession, Aws::GameLift::Server::Model::UpdateReason updateReason, std::string backfillTicketId) { // handle status messages // perform game-specific tasks to prep for newly matched players }

StopMatchBackfill()

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

構文

GenericOutcome StopMatchBackfill ( const Aws::GameLift::Server::Model::StopMatchBackfillRequest &stopBackfillRequest);

パラメータ

StopMatchBackfillRequest

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

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

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

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

必須: はい

戻り値

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

// Set backfill stop request parameters Aws::GameLift::Server::Model::StopMatchBackfillRequest stopBackfillRequest; stopBackfillRequest.SetTicketId("the ticket ID"); stopBackfillRequest.SetGameSessionArn("the game session ARN"); // can use GetGameSessionId() stopBackfillRequest.SetMatchmakingConfigurationArn("the matchmaker configuration ARN"); // from the game session matchmaker data Aws::GameLift::GenericOutcome stopBackfillOutcome = Aws::GameLift::Server::StopMatchBackfillRequest(stopBackfillRequest);

TerminateGameSession()

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

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

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

構文

GenericOutcome TerminateGameSession();

パラメータ

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

戻り値

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

UpdatePlayerSessionCreationPolicy()

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

構文

GenericOutcome UpdatePlayerSessionCreationPolicy( Aws::GameLift::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy);

パラメータ

newPlayerSessionPolicy

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

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

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

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

必須: はい

戻り値

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

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

Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::PlayerSessionCreationPolicy::ACCEPT_ALL);

Destroy()

ゲームサーバーの初期化中に initSDK () によって割り当てられたメモリをクリーンアップします。このメソッドは、ゲームサーバープロセスを終了した後に使用すると、サーバーメモリの浪費を防ぐことができます。

構文

GenericOutcome Aws::GameLift::Server::Destroy();

パラメータ

パラメータはありません。

戻り値

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

この例では、ゲームサーバープロセスの終了後に InitSDK によって割り当てられたメモリをクリーンアップします。

if (Aws::GameLift::Server::ProcessEnding().IsSuccess()) { Aws::GameLift::Server::Destroy(); exit(0); }