Amazon GameLift Server SDK for Go: アクション - Amazon GameLift

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

Amazon GameLift Server SDK for Go: アクション

Amazon GameLift Go サーバー SDK 5.x リファレンスを使用して、ホスト用のマルチプレイヤーゲームを Amazon と統合します GameLift。統合プロセスに関するガイダンスについては、「」を参照してくださいAmazon GameLift をゲームサーバーに追加する

GameLiftServerAPI.go は Go サーバーSDKアクションを定義します。

Go SDK用 Amazon GameLift サーバー: データ型

GetSdkVersion()

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

構文

func GetSdkVersion() (string, error)

戻り値

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

version, err := server.GetSdkVersion()

初期化 SDK()

Amazon を初期化します GameLift SDK。Amazon に関連する他の初期化 GameLift が発生する前に、起動時にこのメソッドを呼び出します。このメソッドは、サーバーと Amazon GameLift サービス間の通信を設定します。

構文

func InitSDK(params ServerParameters) error

パラメータ

ServerParameters

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

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

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

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

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

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

Amazon GameLift マネージドEC2フリートでゲームサーバーを初期化するには、パラメータのないServerParametersオブジェクトを作成します。この呼び出しにより、Amazon GameLift エージェントはコンピューティング環境を設定し、Amazon GameLift サービスに自動的に接続します。

戻り値

成功した場合は、サーバープロセスが ProcessReady() を呼び出す準備ができていることを示す nil エラーを返します。

注記

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

Amazon GameLift Anywhere 例

//Define the server parameters serverParameters := ServerParameters { WebSocketURL: "wss://us-west-1.api.amazongamelift.com", ProcessID: "PID1234", HostID: "HardwareAnywhere", FleetID: "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa", AuthToken: "1111aaaa-22bb-33cc-44dd-5555eeee66ff" } //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

Amazon GameLift マネージドEC2の例

//Define the server parameters serverParameters := ServerParameters {} //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

ProcessReady()

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

構文

func ProcessReady(param ProcessParameters) error

パラメータ

ProcessParameters

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

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

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

  • Amazon が GameLift キャプチャして保存するゲームセッション固有のファイルへのパスを含むLogParametersデータ型。

戻り値

メソッドが失敗すると、エラーとエラーメッセージを返します。メソッドが成功した場合は、nil を返します。

この例では、ProcessReady() 呼び出しと委任関数の実装の両方を示します。

// Define the process parameters processParams := ProcessParameters { OnStartGameSession: gameProcess.OnStartGameSession, OnUpdateGameSession: gameProcess.OnGameSessionUpdate, OnProcessTerminate: gameProcess.OnProcessTerminate, OnHealthCheck: gameProcess.OnHealthCheck, Port: port, LogParameters: LogParameters { // logging and error example []string {"C:\\game\\logs", "C:\\game\\error"} } } err := server.ProcessReady(processParams)

ProcessEnding()

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

構文

func ProcessEnding() error

戻り値

0 のエラーコードまたは定義済みのエラーコードを返します。

// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }

ActivateGameSession()

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

構文

func ActivateGameSession() error

戻り値

メソッドが失敗すると、エラーとエラーメッセージを返します。

この例では、onStartGameSession() 委任関数の一部として呼び出された ActivateGameSession() を示しています。

func OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // Activate when ready to receive players err := server.ActivateGameSession(); }

UpdatePlayerSessionCreationPolicy()

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

構文

func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error

パラメータ

playerSessionCreationポリシー

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

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

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

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

戻り値

失敗が発生すると、エラーとエラーメッセージを返します。

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

err := server.UpdatePlayerSessionCreationPolicy(model.AcceptAll)

GetGameSessionId()

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

構文

func GetGameSessionID() (string, error)

パラメータ

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

戻り値

成功した場合、ゲームセッション ID を nil エラーを返します。ゲームセッションでアクティブ化されていないアイドルプロセスの場合、呼び出しは空の文字列と nil エラーを返します。

gameSessionID, err := server.GetGameSessionID()

GetTerminationTime()

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

  • サーバープロセスが正常性の低下を報告しているか、Amazon に応答していない場合 GameLift。

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

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

構文

func GetTerminationTime() (int64, error)

戻り値

成功すると、サーバープロセスのシャットダウンが予定されているタイムスタンプ (エポック秒単位) と nil エラー終了を返します。値は終了時間で、0001 00:00:00 からの経過ティックで表現されます。例えば、日付時刻の値 2020-09-13 12:26:40 -000Z は、637355968000000000 ティックに等しくなります。終了時間がない場合は、エラーメッセージを返します。

terminationTime, err := server.GetTerminationTime()

AcceptPlayerSession()

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

構文

func AcceptPlayerSession(playerSessionID string) error

パラメータ

playerSessionId

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

戻り値

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

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

func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) { err := server.AcceptPlayerSession(playerSessionID) if err != nil { connection.Accept() } else { connection.Reject(err.Error()) } }

RemovePlayerSession()

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

構文

func RemovePlayerSession(playerSessionID string) error

パラメータ

playerSessionId

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

戻り値

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

err := server.RemovePlayerSession(playerSessionID)

DescribePlayerSessions()

設定、セッションメタデータ、プレイヤーデータを含む、プレイヤーセッションデータを取得します。このメソッドを使用して、以下に関する情報を取得します。

  • シングルプレイヤーセッション

  • ゲームセッションのすべてのプレイヤーセッション

  • 1 つのプレイヤー ID に関連付けられているすべてのプレイヤーセッション

構文

func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) { return srv.describePlayerSessions(&req) }

パラメータ

DescribePlayerSessionsRequest

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

戻り値

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

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

// create request describePlayerSessionsRequest := request.NewDescribePlayerSessions() describePlayerSessionsRequest.GameSessionID, _ = server.GetGameSessionID() // get ID for the current game session describePlayerSessionsRequest.Limit = 10 // return the first 10 player sessions describePlayerSessionsRequest.PlayerSessionStatusFilter = "ACTIVE" // Get all player sessions actively connected to the game session describePlayerSessionsResult, err := server.DescribePlayerSessions(describePlayerSessionsRequest)

StartMatchBackfill()

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

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

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

構文

func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)

パラメータ

StartMatchBackfillRequest

StartMatchBackfillRequest オブジェクトは、次の情報を通信します。

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

  • リクエストを送信するマッチメーカー。完全な設定ARNが必要です。この値はゲームセッションのマッチメーカーデータに含まれています。

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

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

戻り値

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

// form the request startBackfillRequest := request.NewStartMatchBackfill() startBackfillRequest.RequestID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" // optional startBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" var matchMaker model.MatchmakerData if err := matchMaker.UnmarshalJSON([]byte(gameSession.MatchmakerData)); err != nil { return } startBackfillRequest.Players = matchMaker.Players res, err := server.StartMatchBackfill(startBackfillRequest) // Implement callback function for backfill func OnUpdateGameSession(myGameSession model.GameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

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

構文

func StopMatchBackfill(req request.StopMatchBackfillRequest) error

パラメータ

StopMatchBackfillRequest

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

  • バックフィルリクエストに割り当てるチケット ID。

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

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

戻り値

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

stopBackfillRequest := request.NewStopMatchBackfill() // Use this function to create request stopBackfillRequest.TicketID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" stopBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" //error err := server.StopMatchBackfill(stopBackfillRequest)

GetComputeCertificate()

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

構文

func GetComputeCertificate() (result.GetComputeCertificateResult, error)

戻り値

以下が含まれる GetComputeCertificateResult オブジェクトを返します。

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

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

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

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

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

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

tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

GetFleetRoleCredentials()

作成したサービスロール認証情報を取得して、アクセス許可を他の に Amazon AWS のサービス に拡張します GameLift。これらの認証情報により、ゲームサーバーは AWS リソースを使用できます。詳細については、「Amazon IAMのサービスロールを設定する GameLift」を参照してください。

構文

func GetFleetRoleCredentials( req request.GetFleetRoleCredentialsRequest, ) (result.GetFleetRoleCredentialsResult, error) { return srv.getFleetRoleCredentials(&req) }

パラメータ

GetFleetRoleCredentialsRequest

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

戻り値

以下が含まれる GetFleetRoleCredentialsResult オブジェクトを返します。

  • AssumedRoleUserArn - サービスロールが属するユーザーの Amazon リソースネーム (ARN)。

  • AssumedRoleId - サービスロールが属するユーザーの ID。

  • AccessKeyId - AWS リソースを認証し、アクセスを提供するアクセスキー ID。

  • SecretAccessKey - 認証用のシークレットアクセスキー ID。

  • SessionToken - AWS リソースとやり取りする現在のアクティブなセッションを識別するトークン。

  • Expiration - セッション認証情報の有効期限が切れるまでの時間。

// form the customer credentials request getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials() getFleetRoleCredentialsRequest.RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

Destroy()

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

構文

func Destroy() error { return srv.destroy() }

戻り値

メソッドが失敗すると、エラーとエラーメッセージを返します。

// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }