

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

# 從遊戲伺服器產生手動回填請求
<a name="match-backfill-server"></a>

您可以從託管遊戲工作階段的遊戲伺服器程序手動啟動配對回填請求。伺服器程序具有連接至遊戲之玩家up-to-date，以及空玩家位置的狀態。

本主題假設您已成功建置必要的 FlexMatch 元件並成功將配對建構程序新增至遊戲伺服器和用戶端遊戲服務。如需設定 FlexMatch 的詳細資訊，請參閱 [路線圖：將配對新增至Amazon GameLift Servers託管解決方案](match-tasks.md)。

若要為遊戲啟用配對回填，新增以下功能：
+ 請將配對建構回填請求傳送到配對建構器來追蹤請求的狀態。
+ 更新遊戲工作階段的配對資訊。請參閱 [更新遊戲伺服器上的配對資料](match-backfill-server-data.md)。

如同其他伺服器功能，遊戲伺服器會使用 Amazon GameLift Servers 伺服器開發套件。您可以 C\+\+ 及 C \# 使用此開發套件。

為了從遊戲伺服器進行配對回填，請完成以下任務。

1. **觸發配對回填請求。**一般而言，當配對的遊戲有一或多個玩家空位時，建議您初始化回填請求。建議您將回填請求連繫至特定的情況 (例如填入關鍵字元角色或平衡團隊)。您可能還想要根據遊戲工作階段的存留期動限制回填活動。

1. **建立回填請求。**您能夠新增程式碼以建立配對回填請求，並將其傳送至 FlexMatch 配對建構器。使用這些伺服器 API 處理回填請求：
   + [ StartMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-startmatchbackfill)
   + [ StopMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill)

   若要建立回填請求，請以下列資訊呼叫 `StartMatchBackfill`。若要取消回填請求，請使用回填請求票證 ID 來呼叫 `StopMatchBackfill`。
   + **票證 ID** — 提供配對票證 ID （或選擇讓它們自動產生）。您可以使用相同的機制，將票證 ID 指派到配對建構和回填請求。會以相同的方式處理配對建構和回填的票證。
   + **配對建構**器 — 識別要用於回填請求的配對建構器。一般而言，您將想要使用用於建立原始配對的相同配對建構器。此請求需要配對建構組態 ARN。這項資訊會存放在遊戲工作階段物件 ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)) 中，啟用遊戲工作階段時，Amazon GameLift Servers 即會將該物件提供給伺服器程序。配對建構組態 ARN 包含在 `MatchmakerData` 屬性中。
   + **遊戲工作階段 ARN** — 識別要回填的遊戲工作階段。您可以呼叫伺服器 API [ GetGameSessionId()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-getgamesessionid) 來取得遊戲工作階段 ARN。在配對建構程序期間，新請求的票證不會有遊戲工作階段 ID，而回填請求的票證會有。在遊戲工作階段 ID 的存在可讓您了解新配對的票證和回填票證的差異。
   + **玩家資料** — 在您回填的遊戲工作階段中包含所有目前玩家的玩家資訊 ([Player](https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html))。此資訊可讓配對建構器為目前在遊戲工作階段中的玩家找到最可能的玩家配對。您必須包含每個玩家的團隊成員資格。如果您未使用回填，請勿指定團隊。如果您的遊戲伺服器已準確報告玩家連線狀態，您應該要能取得此資料，如下所示：

     1. 代管遊戲工作階段的伺服器程序應擁有哪些玩家正連接到遊戲工作階段的最新資訊。

     1. 若要取得玩家 IDs、屬性和團隊指派，請從遊戲工作階段物件 ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html))、`MatchmakerData`屬性 （請參閱 ) 提取玩家資料[關於配對建構器資料](match-server.md#match-server-data)。配對建構器資料包含配對至遊戲工作階段的所有玩家，您只需要為目前連線的玩家提取玩家資料。

     1. 對於玩家延遲，如果配對建構器呼叫延遲資料，從所有目前玩家收集新延遲值，並將其包含在每個 `Player` 物件。如果將延遲資料省略和配對建構器有延遲規則，則請求無法成功相配。回填請求只需要遊戲工作階段目前所在之區域的延遲資料。您可以從 `GameSession` 物件的 `GameSessionId` 屬性取得遊戲工作階段區域，此值是包含在該區域的 ARN。

1. **追蹤回填請求的狀態。 **會使用伺服器開發套件回呼函數Amazon GameLift Servers，更新您的遊戲伺服器關於回填請求的狀態 `onUpdateGameSession`（請參閱[初始化伺服器程序](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize))。在 新增程式碼以處理狀態訊息，以及由於成功回填請求而更新的遊戲工作階段物件[更新遊戲伺服器上的配對資料](match-backfill-server-data.md)。

   配對建構器可隨時處理來自遊戲工作階段的配對回填請求。如果您需要取消請求，請呼叫 [ StopMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill)。如果您需要變更請求，請呼叫 `StopMatchBackfill` 接著提交更新請求。