> ## 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.

# 目標工作階段初始化和 QoS

> XBOX 上 SmartMatch 的目標工作階段初始化，涵蓋受管理的初始化階段，以及開始遊戲前對等之間的服務品質檢查。

本主題說明當玩家被配對到目標工作階段時，遊戲如何確認已有足夠的玩家加入且可以連線。

一群玩家會透過 SmartMatch 配對被配對到目標工作階段中。遊戲必須採取步驟來確認已有足夠的玩家加入，以便他們在需要時可以成功地彼此連線。此程序稱為*目標工作階段初始化*。

對於使用點對點網路拓撲的遊戲，目標工作階段初始化的一個重要層面是服務品質 (QoS) 的測量和評估。
相關的作業如下。

* 測量 XBOX One (或更新版本) 主機之間或主機與伺服器之間的延遲和頻寬
* 評估產生的測量結果，以判斷節點之間的網路連線是否良好

下列流程圖說明如何實作目標工作階段的初始化和 QoS 作業。

<img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/services/Multiplayer_2015_Matchmaking_QoS.png?fit=max&auto=format&n=gzrdvT5kpqAXKEQt&q=85&s=d581bf4774ce705effe9420a8246f98a" alt="說明如何實作目標工作階段初始化和 QoS 作業之配對 QoS 流程圖的影像" width="1339" height="1090" data-path="images/gdk/services/Multiplayer_2015_Matchmaking_QoS.png" />

## 受管理的初始化

多人遊戲工作階段目錄 (MPSD) 支援一項稱為*受管理的初始化*的功能，它透過此功能在涉及工作階段的用戶端之間協調目標工作階段初始化程序。
MPSD 會自動追蹤工作階段的初始化階段和相關的逾時。如有需要，MPSD 也會評估用戶端之間的連線。
受管理的初始化由 [XblMultiplayerInitializationStage](/zh-TW/reference/live/xsapi-c/multiplayer_c/enums/xblmultiplayerinitializationstage) 列舉表示。

<Note>強烈建議您的遊戲使用 SmartMatch 配對，以利用 MPSD 受管理的初始化功能。</Note>

### 受管理的初始化回合和階段

每當配對將新玩家新增至目標工作階段時，該工作階段就會進行受管理的初始化。
SmartMatch 會以使用者狀態 Reserved 新增工作階段成員，這表示每位成員都佔用一個位置，但尚未加入工作階段。
每一群新玩家都會觸發新的初始化回合。

初始化完成時，每位玩家在此程序中不是成功就是失敗。
成功初始化的玩家可以使用目標工作階段進行遊戲。
失敗的玩家必須重新提交至配對，以被配對到另一個工作階段。

對於在 `preserveSession` 參數設定為 `Always` 的情況下提交至配對的工作階段，工作階段中原有的成員不會進行初始化，因為 MPSD 假設它們已正確設定。

每個受管理的初始化回合都由下列階段組成。

* \*\*加入：\*\*工作階段成員將自己寫入工作階段，以將其使用者狀態從 `Reserved` 移至 `Active`。他們可以上傳基本資料，例如安全裝置位址。
* \*\*測量：\*\*對於以對等為基礎的拓撲，工作階段成員會測量彼此之間的 QoS，然後將結果上傳至工作階段。
* \*\*評估：\*\*MPSD 會評估前兩個階段的結果，然後判斷工作階段或成員是否已成功初始化。

遊戲程式碼會對工作階段進行操作，讓每位玩家 (以及工作階段) 推進到加入和測量階段。
在評估階段成功或失敗之後，遊戲就可以開始遊戲或返回配對。

## 設定目標工作階段以進行初始化

遊戲可以使用正在初始化之目標工作階段中的常數來設定受管理的初始化程序。
這些常數是在版本 107 的工作階段範本中的 */constants/system* 下設定的。建議使用此範本版本。

您可以進行下列兩種類型的設定。

* 整體設定受管理之初始化程序的設定

* 設定 QoS 需求的設定

如需常見遊戲案例的工作階段範本範例，請參閱[多人遊戲工作階段範本](/zh-TW/services/xbox-services/multiplayer/mpsd/concepts/live-session-templates)和[多人遊戲工作階段目錄概觀](/zh-TW/services/xbox-services/multiplayer/mpsd/live-mpsd-overview)。

<Note>如果未在目標工作階段初始化設定中定義 QoS 需求，就會略過初始化期間的測量階段。</Note>

### 整體設定受管理的初始化

若要整體控制受管理的初始化，請設定下列欄位。

用於控制受管理之初始化的欄位是 `/constants/system/memberInitialization` 物件的一部分。

* `joinTimeout`：指定在初始化回合開始之後，MPSD 等待每位成員加入的時間長度。預設值為 10 秒。

* `measurementTimeout`：指定在測量階段開始之後，MPSD 等待每位成員上傳 QoS 測量結果的時間長度。預設值為 30,000 秒。

* `membersNeededToStart`：指定第一個初始化回合成功所需之成功初始化的成員數目。預設值為 1。

<Note>如果未達到此閾值，所有成員的初始化都會失敗。</Note>

### 設定 QoS 需求

只有在遊戲使用點對點或對等對主機拓撲時，初始化期間才需要 QoS。
每個拓撲都對應到 */constants/system/* 下的拓撲特定常數。

#### 為點對點拓撲設定 QoS 需求

<Note>遊戲很少為點對點拓撲進行 QoS 需求設定。這些設定非常嚴格，會對具有嚴格網路位址轉譯 (NAT) 的玩家造成問題。</Note>

您可以在 `peerToPeerRequirements` 物件中設定點對點拓撲 QoS 需求。
每個用戶端都必須能夠連線至每個其他用戶端。

`peerToPeerRequirements` 物件具有下列相關欄位。

* `latencyMaximum`：指定任兩個用戶端之間的最大延遲

* `bandwidthMinimum`：指定任兩個用戶端之間的最小頻寬

#### 為對等對主機拓撲設定 QoS 需求

您可以在 `peerToHostRequirements` 物件中設定對等對主機拓撲 QoS 需求。
每個用戶端都必須能夠連線至單一共同主機。
如果已設定此物件且初始化成功，MPSD 會建立可能成為主機之用戶端的初始清單，稱為*主機候選者*。

設定下列欄位。

* `latencyMaximum`：指定每個對等與主機之間的最大延遲

* `bandwidthDownMinimum`：指定每個對等與主機之間的最小下行頻寬

* `bandwidthUpMinimum`：指定每個對等與主機之間的最小上行頻寬

* `hostSelectionMetric`：指定用來選取主機的計量

## 另請參閱

[多人遊戲工作階段範本](/zh-TW/services/xbox-services/multiplayer/mpsd/concepts/live-session-templates)

[多人遊戲工作階段目錄概觀](/zh-TW/services/xbox-services/multiplayer/mpsd/live-mpsd-overview)


## Related topics

- [配對概觀](/zh-TW/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview.md)
- [XblMultiplayerInitializationStage](/zh-TW/reference/live/xsapi-c/multiplayer_c/enums/xblmultiplayerinitializationstage.md)
- [XblMultiplayerMeasurementFailure](/zh-TW/reference/live/xsapi-c/multiplayer_c/enums/xblmultiplayermeasurementfailure.md)
- [XblMultiplayerMetrics](/zh-TW/reference/live/xsapi-c/multiplayer_c/enums/xblmultiplayermetrics.md)
- [配對概念](/zh-TW/services/xbox-services/multiplayer/matchmaking/concepts/live-matchmaking-concepts-nav.md)
