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++: アクション を参照してください。

Amazon GameLift Server SDK 4.x for C++: データ型

AcceptPlayerSession()

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

構文

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

パラメータ

playerSessionId

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

Type: std::string

必須:はい

戻り値

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

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

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

パラメータ

describePlayerSessionsリクエスト

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

必須:はい

戻り値

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

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

// 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オブジェクトを返します。このオブジェクトはインスタンスに保存されます。証明書チェーンから抽出されたルート証明書ファイルもインスタンスに保存されます。成功しなかった場合、エラーメッセージを返します。

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

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

GetSdkVersion()

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

構文

AwsStringOutcome GetSdkVersion();

パラメータ

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

戻り値

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

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

GetTerminationTime()

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

プロセスが 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();

初期化 SDK()

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

構文

InitSDKOutcome InitSDK();

パラメータ

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

戻り値

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

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

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

Type: std::string

必須:はい

戻り値

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

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

StartMatchBackfill()

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

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

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

構文

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

パラメータ

StartMatchBackfillRequest

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

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

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

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

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

必須:はい

戻り値

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

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

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

構文

GenericOutcome TerminateGameSession();

パラメータ

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

戻り値

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

UpdatePlayerSessionCreationPolicy()

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

構文

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

パラメータ

newPlayerSessionポリシー

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

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

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

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

必須:はい

戻り値

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

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

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

Destroy()

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

構文

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

パラメータ

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

戻り値

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

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

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