將 Amazon GameLift 新增至您的遊戲用戶端 - Amazon GameLift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Amazon GameLift 新增至您的遊戲用戶端

將 Amazon 整合 GameLift 到需要遊戲工作階段資訊的遊戲元件中,建立新的遊戲工作階段,並將玩家新增至遊戲。根據您的遊戲架構,此功能位於後端服務中,可處理玩家身分驗證、配對或遊戲工作階段置放等任務。

注意

如需如何為 Amazon GameLift 託管遊戲設定配對的詳細資訊,請參閱 Amazon GameLift FlexMatch 開發人員指南

在後端服務 GameLift 上設定 Amazon

新增程式碼以初始化 Amazon GameLift 用戶端和儲存金鑰設定。此程式碼必須在依賴 Amazon 的任何程式碼之前執行 GameLift。

  1. 設定用戶端組態。使用預設用戶端組態或建立自訂用戶端組態物件。如需詳細資訊,請參閱 AWS::Client::ClientConfiguration (C++) 或 AmazonGameLiftConfig(C#)。

    用戶端組態會指定聯絡 Amazon 時要使用的目標區域和端點 GameLift。區域會識別要使用的已部署資源集 (輪流、佇列和比對程式)。預設用戶端組態會將位置設定為美國東部 (維吉尼亞北部) 區域。若要使用任何其他區域,請建立自訂組態。

  2. 初始化 Amazon GameLift 用戶端。使用具有預設用戶端組態或自訂用戶端組態的 Aws:GameLift::GameLiftClient(AmazonGameLiftClient(C++) 或 () (C#)。

  3. 新增機制,為每個播放器產生唯一的識別符。如需詳細資訊,請參閱產生玩家 ID

  4. 收集並存放下列資訊:

    • 目標機群 – 許多 Amazon GameLift API 請求必須指定機群。若要這麼做,請使用機群 ID 或指向目標機群的別名 ID。作為最佳實務,請使用機群別名,以便您可以將玩家從一個機群切換到另一個機群,而無需更新您的後端服務。

    • 目標佇列 – 對於使用多機群佇列放置新遊戲工作階段的遊戲,請指定要使用的佇列名稱。

    • AWS 憑證 – 對 Amazon 的所有呼叫 GameLift 都必須為 AWS 帳戶 託管遊戲的 提供憑證。您可以透過建立播放器使用者來取得這些憑證,如 中所述設定遊戲的程式設計存取權。根據您管理播放器使用者的存取權的方式,執行下列動作:

      • 如果您使用角色來管理播放器使用者許可,請在呼叫 Amazon 之前新增程式碼以擔任角色 GameLift API。擔任 角色的請求會傳回一組臨時安全憑證。如需詳細資訊,請參閱 使用者指南 中的切換至IAM角色 (AWS API)IAM

      • 如果您有長期安全登入資料,請將程式碼設定為尋找並使用儲存的登入資料。請參閱 AWS SDKs和 工具參考指南 中的使用長期憑證進行驗證。如需儲存憑證的資訊,請參閱AWS API(C++)(.NET) 的參考。

      • 如果您有臨時安全憑證,請新增程式碼,以使用 AWS Security Token Service (AWS STS) 定期重新整理憑證,如 使用者指南 中的使用臨時安全憑證與 AWS SDKs 所述。 IAM 程式碼必須在舊憑證過期之前請求新的憑證。

取得遊戲工作階段

新增程式碼以探索可用的遊戲工作階段,並管理遊戲工作階段設定和中繼資料。

搜尋作用中遊戲工作階段

使用 SearchGameSessions取得特定遊戲工作階段、所有作用中工作階段或符合一組搜尋條件之工作階段的相關資訊。此呼叫會針對符合您搜尋請求的每個作用中遊戲工作階段傳回GameSession物件。

使用搜尋條件取得篩選過的列表,列出可供玩家加入的活動遊戲工作階段。例如,您可以篩選工作階段,如下所示:

  • 排除已滿的遊戲工作階段:CurrentPlayerSessionCount = MaximumPlayerSessionCount

  • 根據工作階段執行的時間長度選擇遊戲工作階段:評估 CreationTime

  • 尋找以自訂遊戲屬性為基礎的遊戲工作階段:gameSessionProperties.gameMode = "brawl"

管理遊戲工作階段

使用以下任意一項操作來擷取或更新遊戲工作階段資訊。

建立遊戲工作階段

加入用於在已部署的機群中啟動新遊戲工作階段並使其可供玩家加入的程式碼。有兩種建立遊戲工作階段的選項,取決於您要在多個 AWS 區域 或單一區域中部署遊戲。

在多位置佇列中建立遊戲工作階段

使用 在佇列中StartGameSessionPlacement提出新遊戲工作階段的請求。若要使用此操作,請建立佇列。這將決定 Amazon GameLift 放置新遊戲工作階段的位置。如需佇列及其使用方式的詳細資訊,請參閱 使用 Amazon GameLift 佇列管理遊戲工作階段置放

建立遊戲工作階段置放時,請指定要使用的佇列名稱、遊戲工作階段名稱、並行播放器數量上限,以及選用的一組遊戲屬性。您也可以選擇性地提供玩家清單,以自動加入遊戲工作階段。如果您包含相關區域的玩家延遲資料,則 Amazon GameLift 會使用此資訊將新的遊戲工作階段放置在為玩家提供理想遊戲體驗的機群上。

遊戲工作階段放置為非同步程序。提出請求後,您可以讓請求成功或逾時。您也可以隨時使用 取消請求StopGameSessionPlacement。若要檢查置放請求的狀態,請致電 DescribeGameSessionPlacement

在特定機群上建立遊戲工作階段

使用 CreateGameSession 在指定的機群上建立新的工作階段。這一個同步操作的成功與否取決於該機群是否擁有託管新遊戲工作階段所需的資源。Amazon GameLift 建立新的遊戲工作階段並傳回GameSession物件後,您就可以加入玩家。

使用此操作時,請提供機群 ID 或別名 ID、工作階段名稱,以及遊戲的並行玩家數量上限。您可以選擇包括一組遊戲屬性。遊戲屬性是在鍵值對陣列中定義。

如果您使用 Amazon GameLift 資源保護功能來限制一個玩家可以建立的遊戲工作階段數量,請提供遊戲工作階段建立者的玩家 ID。

將玩家加入遊戲工作階段

新增程式碼以保留作用中遊戲工作階段中的玩家位置,並將遊戲用戶端連接至遊戲工作階段。

  1. 在遊戲工作階段中保留播放器位置

    若要預留玩家位置,請在遊戲工作階段中新建一個玩家工作階段。如需播放器工作階段的詳細資訊,請參閱 玩家如何連接到遊戲

    有兩種方式可建立新的播放器工作階段:

    Amazon GameLift 首先會驗證遊戲工作階段是否接受新的玩家,以及是否有可用的玩家插槽。如果成功,Amazon 會 GameLift 保留播放器的插槽、建立新的播放器工作階段,並傳回PlayerSession物件。此物件包含遊戲用戶端連線到遊戲工作階段所需的DNS名稱、IP 地址和連接埠。

    玩家工作階段請求必須包括每個玩家的唯一 ID。如需詳細資訊,請參閱產生玩家 ID

    播放器工作階段可以包含一組自訂播放器資料。此資料會儲存在新建立的播放器工作階段物件中,您可以呼叫 DescribePlayerSessions() 來擷取。當播放器直接連線至遊戲工作階段時,Amazon GameLift 也會將此物件傳遞至遊戲伺服器。請求多個播放器工作階段時,請為請求中映射到播放器 ID 的每個播放器提供一串播放器資料。

  2. 連線至遊戲工作階段

    將程式碼加入到遊戲用戶端來擷取包含遊戲工作階段之連線資訊的 PlayerSession 物件。使用此資訊建立與伺服器的直接連線。

    • 您可以使用指定的連接埠,以及指派給伺服器程序DNS的名稱或 IP 地址來連線。

    • 如果您的機群已啟用TLS憑證產生,請使用DNS名稱和連接埠進行連線。

    • 如果您的遊戲伺服器驗證傳入的玩家連線,則參考玩家工作階段 ID。

    建立連線後,遊戲用戶端和伺服器程序會直接通訊,而不需涉及 Amazon GameLift。伺服器會維持與 Amazon GameLift 的通訊,以報告播放器連線狀態、運作狀態等。如果遊戲伺服器驗證傳入的玩家,則會驗證玩家工作階段 ID 是否符合遊戲工作階段中的預留位置,並接受或拒絕玩家連線。當播放器中斷連線時,伺服器程序會報告中斷的連線。

使用遊戲工作階段屬性

您的遊戲用戶端可以使用遊戲屬性將資料傳遞至遊戲工作階段。遊戲屬性是遊戲伺服器可以新增、讀取、列出和變更的鍵值組。您可以在建立新的遊戲工作階段時傳入遊戲屬性,或在遊戲工作階段作用中時稍後傳入。遊戲工作階段最多可包含 16 個遊戲屬性。您無法刪除遊戲屬性。

例如,您的遊戲提供以下難度等級:NoviceIntermediateEasyExpert。玩家選擇 Easy,然後開始遊戲。您的遊戲用戶端 GameLift 會使用 StartGameSessionPlacement或 向 Amazon 請求新的遊戲工作階段CreateGameSession,如前面各節所述。在請求中,用戶端會傳遞此 :{"Key": "Difficulty", "Value":"Easy"}

為了回應請求,Amazon GameLift 會建立包含指定遊戲屬性的GameSession物件。 GameLift 然後,Amazon 會指示可用的遊戲伺服器啟動新的遊戲工作階段並傳遞GameSession物件。遊戲伺服器使用 Difficulty的 啟動遊戲工作階段Easy

進一步了解