> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 管理組建別名並配置至該別名

> 使用 PlayFab 組建別名，將多人遊戲伺服器配置分散到加權的組建，以進行安全推出、回溯相容性和遊戲模式。

組建別名是位於組建之上的管理層，可讓 `RequestMultiplayerServer` 呼叫以受控方式分散到多個組建。這可以改善組建之間升級的簡易性和可靠性，以及下面列出的其他數種情境。別名透過指定組建識別碼清單以及每個組建的權數來達成此目的。組建的權數會決定該組建在每個配置要求中被優先嘗試的可能性。例如，如果組建 1 的權數為 8，組建 2 的權數為 2，則約 80% 的要求會優先嘗試組建 1，因此在組建 1 有 StandingBy 伺服器時，它會處理約 80% 的要求。如果組建 1 在某個區域中的 StandingBy 伺服器用盡，這些要求會改由組建 2 處理，因此組建 2 在該區域中可能會處理超過 20% 的要求。不過，每個要求中的區域優先，而權數只決定由哪個組建處理區域內的要求。如需詳細資訊，請參閱[回復到其他組建和區域](#fallback-to-other-builds-and-regions)。

### 回溯相容的安全部署

這是組建之間升級最常見的情境，您正在更新遊戲伺服器，而零售用戶端與兩個伺服器都相容。

用戶端將參考別名 1，其設定如下：

* 組建 1：權數 = 1

建立組建 2 之後，別名 1 將變更為：

* 組建 1：權數 = 8
* 組建 2：權數 = 2

您可以逐步變更權數，直到所有新的伺服器要求都由組建 2 處理為止。此時組建 1 的權數為 0，可以從別名中移除。

別名的典型使用案例是將其與用戶端相容性版本和遊戲模式建立關聯。例如「DeathMatch client 2.2 RETAIL」。別名可讓您管理此較高層級的抽象概念，同時持續更新支援此體驗的組建。別名也讓您在必要時更容易回復組建。

### 非回溯相容的部署

在此情況下，您希望在更新遊戲用戶端的同時更新遊戲伺服器，因為您目前的遊戲用戶端與舊的伺服器組建不相容。從一個組建轉換到另一個組建的方式如下：

舊用戶端將參考別名 1，其設定如下：

* 組建 1：權數 = 1

建立組建 2 之後，新用戶端將參考別名 2，其設定如下：

* 組建 2：權數 = 1

在此情境中，別名的使用方式與組建類似，不會使用其多工功能。

### 回溯相容的一次性部署

這與回溯相容的組建之間升級情境類似，但需求行為的切換更為突然。從一個組建轉換到另一個組建的方式如下：

用戶端將參考別名 1，其設定如下：

* 組建 1：權數 = 1

建立組建 2 之後，別名 1 將變更為：

* 組建 1：權數 = 0
* 組建 2：權數 = 1

### 測試回溯相容的部署

當您想要更新遊戲伺服器，且用戶端版本與兩個伺服器都相容，但您想在為所有玩家大規模部署之前先測試第二個版本時。測試以及從一個組建轉換到另一個組建的方式如下：

用戶端將參考別名 1，其設定如下：

* 組建 1：權數 = 1

建立組建 2 之後，測試用戶端將參考別名 2，其設定如下：

* 組建 2：權數 = 1

驗證組建 2 之後，別名 1 將變更為：

* 組建 1：權數 = 8
* 組建 2：權數 = 2

組建 2 的權數會逐步提高，最後吸收所有流量。

## 回復到其他組建和區域

別名可讓多個組建之間進行回復，使您的多人遊戲伺服器部署更具復原能力。當您從別名要求伺服器時，請在 `PreferredRegions` 中依偏好順序列出每個能為玩家提供可接受體驗的區域。PlayFab Multiplayer Servers (MPS) 處理每個要求的方式如下：

1. MPS 使用組建權數為該要求排定別名中各組建的順序。權數較高的組建較有可能排在前面。
2. MPS 依照您列出的順序逐一處理區域。在每個區域中，它會依該順序嘗試每個組建。它會略過未部署在該區域中的組建。
3. MPS 會從第一個有 StandingBy 伺服器的組建配置伺服器。如果該區域中沒有任何組建有 StandingBy 伺服器，MPS 會移至下一個區域。如果所有區域都沒有，要求會失敗並傳回 `MultiplayerServerTooManyRequests` 錯誤。

區域順序一律優先於組建權數。玩家會取得有容量的最偏好區域中的伺服器，而權數只決定在該區域中由哪個組建為他們提供服務。請使用權數來表達您在組建之間的成本和效能偏好，例如在不同虛擬機器 (VM) 大小之間。將涵蓋更多區域的組建新增至別名只會增加容量。

權數為 0 的組建永遠不會用於配置，即使作為回復也不會。若要保留某個組建作為回復，請改為給予它一個很小的非零權數，例如相對於主要組建的 999 給予 1。

如果別名中沒有任何組建部署在任何要求的區域中，要求會失敗並傳回 `MultiplayerServerNotFound` 錯誤。如需避免這兩種錯誤的方法，請參閱[最佳做法與推出檢查清單](/zh-TW/services/playfab/multiplayer/servers/best-practices)。

例如，假設以組建別名為目標的配置要求將 EastUS 列為第 1 個區域，將 West US 列為第 2 個區域。此組建別名為兩個組建 (組建 1 和組建 2) 提供相近的權數。

假設對於某個配置，組建 1 排在前面。

1. 嘗試在 East US 為組建 1 配置。
2. 如果 #1 失敗，則嘗試在 East US 為組建 2 配置。
3. 如果 #2 失敗，則嘗試在 WestUS 為組建 1 配置。
4. 如果 #3 失敗，則嘗試在 WestUs 為組建 2 配置。

尤其是在您從一個組建逐步升級到另一個組建時，此回復行為經過最佳化，即使其中一個組建發生問題，玩家也能取得延遲最低的伺服器。

## 使用 PlayFab REST API 管理組建別名

<Note>
  您現在可以在 Game Manager 中管理組建別名。若要開始使用，請參閱[組建概觀頁面](/zh-TW/services/playfab/multiplayer/servers/build-overview)
</Note>

1. 使用 API 建立組建別名。

   API：

   ```
   POST https://titleId.playfabapi.com/MultiplayerServer/CreateBuildAlias
   ```

   範例本文：

   ```
   {
       "AliasName":"TestingAlias",
       "BuildSelectionCriteria":
       [{
           "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"}
       }]
   }
   ```

   範例回應：

   ```
   {
       "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
       "AliasName":"TestingAlias",
       "BuildSelectionCriteria":
       [{
           "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1"}
       }]
   }
   ```

   **組建別名識別碼會在回應中提供。**

2. 更新組建別名的任何參數。

   API：

   ```
   POST https://titleId.playfabapi.com/MultiplayerServer/UpdateBuildAlias
   ```

   範例本文：

   ```
   {
       "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
       "AliasName":"TestingAliasRenamed",
       "BuildSelectionCriteria":
       [{
           "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
           "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
       }]
   }
   ```

   範例回應：

   ```
   {
       "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
       "AliasName":"TestingAliasRenamed",
       "BuildSelectionCriteria":
       [{
           "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
           "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
       }]
   }
   ```

3. 刪除組建別名。

   API：

   ```
   POST https://titleId.playfabapi.com/MultiplayerServer/DeleteBuildAlias
   ```

   範例本文：

   ```
   {
       "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6"
   }
   ```

4. 列出組建別名。

   API：

   ```
   GET https://titleId.playfabapi.com/MultiplayerServer/ListBuildAliases
   ```

   範例回應：

   ```
   [{
       "AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6",
       "AliasName":"TestingAliasRenamed",
       "BuildSelectionCriteria":
       [{
           "BuildWeightDistribution":{"9a8a4584-c81a-479c-9ef9-16d3743f7ca7":"1",
           "7ac7f347-3d61-9fe9-c974-a18c4854a8a9":"1"}
       }]
   }]
   ```

## 使用組建別名進行配置

若要使用組建別名進行配置，請在 `RequestMultiplayerServer` 呼叫中指定組建別名識別碼。

API：

```
POST https://titleId.playfabapi.com/MultiplayerServer/RequestMultiplayerServer
```

範例本文：

```
{
    "SessionId":"6a07440c-7bcc-4e23-8b81-4934543ff966",
    "PreferredRegions":["SouthCentralUs"],
    "BuildAliasParams":
        {"AliasId":"97d2b0a5-7c04-4593-8451-66bbb97f94b6"}
}
```


## Related topics

- [取得組建別名](/zh-TW/services/playfab/api-references/rest/multiplayer/multiplayer-server/get-build-alias.md)
- [刪除組建別名](/zh-TW/services/playfab/api-references/rest/multiplayer/multiplayer-server/delete-build-alias.md)
- [更新組建別名](/zh-TW/services/playfab/api-references/rest/multiplayer/multiplayer-server/update-build-alias.md)
- [建立組建別名](/zh-TW/services/playfab/api-references/rest/multiplayer/multiplayer-server/create-build-alias.md)
- [列出組建別名](/zh-TW/services/playfab/api-references/rest/multiplayer/multiplayer-server/list-build-aliases.md)
