

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

# 排定遊戲工作階段放置的優先順序
<a name="queues-design-priority"></a>

Amazon GameLift Servers 使用 演算法來判斷佇列目的地的優先順序，並判斷放置新遊戲工作階段的位置。演算法是以一組有序的條件為基礎。您可以使用預設的優先順序，也可以自訂順序。您可以隨時編輯佇列的優先順序。

**預設優先順序**

1. **延遲** – 如果遊戲工作階段置放請求包含玩家的位置特定延遲資料， 會Amazon GameLift Servers計算每個位置的平均玩家延遲，並嘗試將遊戲工作階段放置在平均最低的機群位置。

1. **成本** – 如果請求不包含延遲資料，或多個機群具有相同的延遲，則 會Amazon GameLift Servers評估每個機群的託管成本。機群的託管成本會根據機群類型 (Spot 或隨需）、執行個體類型和位置而有所不同。

1. **目的地** – 如果多個機群具有相同的延遲和成本，則 會根據佇列組態中列出的目的地順序來排定機群的Amazon GameLift Servers優先順序。

1. **位置** – 對於具有多位置機群的佇列，如果所有其他條件相等，則 會根據字母順序排定機群位置的Amazon GameLift Servers優先順序。

## 自訂佇列如何排定遊戲工作階段置放的優先順序
<a name="queues-design-priority-custom"></a>

您可以選擇自訂佇列如何排定置放條件的優先順序。佇列會將自訂優先順序套用至其收到的所有遊戲工作階段置放請求。

**注意**  
如果您建立自訂優先順序組態，但不包含所有四個條件， Amazon GameLift Servers會自動以預設順序附加任何缺少的條件。

**自訂佇列的優先順序組態**

使用 [Amazon GameLift Servers主控台](https://console.aws.amazon.com/gamelift/)或 AWS Command Line Interface (AWS CLI) 建立自訂優先順序組態。

------
#### [ Console ]

在 [Amazon GameLift Servers主控台](https://console.aws.amazon.com/gamelift/)中，您可以在建立新佇列或更新現有佇列時自訂佇列的優先順序。選取要使用的 AWS 區域。

開啟主控台的左側導覽列，然後選擇**佇列**。在佇列頁面上，選取現有的佇列，然後選擇**編輯**。

1. 前往**遊戲工作階段置放優先順序**一節。拖放每個優先順序條件以建立您想要的順序。

1. 前往**位置順序**一節。新增任何您想要排定優先順序的位置。當佇列具有具有多個位置的機群時，此清單很有用。您至少必須指定一個位置。您在此處指定的位置會先排定優先順序，接著是佇列目的地中的所有其他位置。

1. 選擇**儲存變更**。

------
#### [ AWS CLI ]

使用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/update-game-session-queue.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/gamelift/update-game-session-queue.html)命令搭配 `--priority-configuration`選項來自訂佇列的優先順序。 會Amazon GameLift Servers更新目前預設區域中的佇列 AWS ，或者您可以新增`--region`標籤來指定不同的 AWS 區域。

下列範例請求新增或更新指定佇列的優先順序組態

```
aws gamelift update-game-session-queue \ 
    --name "example-queue-with-priority"
    --priority-configuration PriorityOrder="COST','LOCATION","DESTINATION",LocationOrder="us-east-1","us-east-2","ca-central-1","us-west-2" \
```

------

## 依玩家延遲排定置放的優先順序
<a name="queues-design-priority-custom-latency"></a>

如果您想要為玩家提供最佳的玩家體驗，並確保最低延遲，請在設定遊戲工作階段放置系統時採取下列步驟：
+ 將佇列設定為在選擇遊戲工作階段放置位置時優先考慮延遲。根據預設，延遲位於優先順序清單的頂端。您也可以自訂佇列的優先順序組態，並選擇將延遲置於優先順序的位置。
+ 為您的佇列設定玩家延遲政策。延遲政策可讓您針對遊戲工作階段置放中允許的延遲量設定硬性限制。如果 Amazon GameLift Servers 無法在未超過限制的情況下放置遊戲工作階段，放置請求將會逾時並失敗。您可以設定單一延遲政策，也可以建立一系列政策，隨著時間逐漸放寬延遲限制。透過一系列政策，您可以指定極低的初始延遲限制，並且在短暫延遲後仍可容納延遲較高的玩家。如需建立延遲政策的詳細資訊，請參閱 [建立玩家延遲政策](queues-design-latency.md)。
+ 提出遊戲工作階段置放請求時 （請參閱 [StartGameSessionPlacement](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_StartGameSessionPlacement.html))，請包含每個玩家的延遲資料。玩家延遲資料包含可能放置遊戲工作階段的每個可能位置的值。例如，對於將遊戲工作階段放置在 AWS 區域 us-east-2 和 ca-central-1 中的佇列，延遲資料可能如下所示：

  ```
  "PlayerLatencies": [ 
      { "LatencyInMilliseconds": 100, "PlayerId": "player1", "RegionIdentifier": "us-east-2" },
      { "LatencyInMilliseconds": 100, "PlayerId": "player1", "RegionIdentifier": "ca-central-1" },
      { "LatencyInMilliseconds": 150, "PlayerId": "player2", "RegionIdentifier": "us-east-2" },
      { "LatencyInMilliseconds": 150, "PlayerId": "player2", "RegionIdentifier": "ca-central-1" }
    ]
  ```

  若要取得準確的延遲測量，請使用 Amazon GameLift Servers的 UDP ping 信標。這些端點可讓您測量玩家裝置與每個潛在託管位置之間的實際 UDP 網路延遲，從而做出比使用 ICMP ping 更準確的置放決策。如需使用 UDP ping 信標測量延遲的詳細資訊，請參閱 [UDP Ping 指標](reference-udp-ping-beacons.md)。

## 依位置排定置放的優先順序
<a name="queues-design-priority-custom-location"></a>

您可以設定佇列，根據地理位置的優先順序清單進行遊戲工作階段置放。Location 是決定佇列如何選擇放置新遊戲工作階段位置的條件之一。根據預設，位置在延遲、成本和目的地之後會排在第四位。

對於遊戲工作階段放置，目的地和位置的含義略有不同：
+ *目的地*是指特定的機群，並包含所有機群的託管資源，無論部署到何處。依目的地排定優先順序時， Amazon GameLift Servers可能會在機群中的任何位置進行置放。多位置受管機群和 Anywhere 機群可以有部署到一或多個位置的託管資源。
+ *位置*是指部署機群託管資源的特定地理位置。機群可以有多個位置，其中可能包括 AWS 區域 Local Zones 或自訂位置 （適用於 Anywhere 機群）。單一位置受管機群有一個位置，且一律為 AWS 區域。多位置受管機群具有主要區域，並且可以有遠端位置。Anywhere 機群有一或多個自訂位置。

依位置排定置放的優先順序時， Amazon GameLift Servers會尋找任何包含優先順序位置的佇列目的地，並搜尋可用的託管資源。如果有多個具有優先順序位置的目的地， Amazon GameLift Servers會移至下一個優先順序條件 （成本、延遲、目的地）。

有多種方式可以影響佇列位置的優先順序 
+ 設定佇列如何處理所有遊戲工作階段置放請求：
  + **將優先順序組態新增至佇列。**佇列的優先順序組態包含位置的排序清單。您可以指定一或多個要排定優先順序的位置。此清單不會排除任何位置，只會告訴 先尋找可用託管資源Amazon GameLift Servers的位置。排序位置清單的常見用途是當您想要將大多數流量輸送至一或多個特定地理位置，並使用其他位置做為備份容量時。透過呼叫 [UpdateGameSessionQueue](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_UpdateGameSessionQueue.html) 新增優先順序組態。
  + **將篩選條件組態新增至佇列。**篩選條件組態是佇列的允許清單。它會Amazon GameLift Servers告知 在尋找可用的託管資源時忽略不在清單中的任何位置。篩選條件組態有兩種常見用途。首先，對於具有多個位置的機群，您可以使用篩選條件來排除部分機群的位置。其次，您可能想要暫時不允許在特定位置放置；例如，某個位置可能遇到暫時性問題。由於您可以隨時更新佇列的篩選組態，因此您可以視需要輕鬆新增和移除位置。透過呼叫 [UpdateGameSessionQueue](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_UpdateGameSessionQueue.html) 新增篩選條件組態。
+ 針對個別置放請求使用特殊指示：
  + **在遊戲工作階段置放請求中包含優先順序覆寫清單。**您可以使用任何 [StartGameSessionPlacement](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_StartGameSessionPlacement.html) 請求提供位置的替代優先順序清單。此清單會有效地取代佇列針對僅針對一個請求的位置所設定的優先順序。它不會影響任何其他請求。此覆寫功能有幾個需求：
    + 僅將覆寫清單與具有優先順序組態的佇列搭配使用，並以 `LOCATION`作為第一優先順序。
    + 請勿在相同的置放請求中包含玩家延遲資料。包含延遲資料會在排定Amazon GameLift Servers無法解析的位置優先順序時設定衝突。
    + 如果無法在優先順序覆寫清單中找到可用的資源，請決定Amazon GameLift Servers您要如何繼續。選擇返回佇列的其他位置，或限制覆寫清單的位置。根據預設， Amazon GameLift Servers 會回到佇列的其他位置嘗試放置。
    + 視需要更新佇列的篩選條件組態，例如在覆寫清單上新增位置。覆寫清單不會使篩選條件清單失效。