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

# 為多人遊戲啟用大型工作階段

> 如何使用 2015 多人遊戲 API，為 MMO 遊戲、廣播與遭遇建立最多 10,000 位成員的大型 MPSD 多人遊戲工作階段。

本主題說明如何建立可處理超過 100 位成員的多人遊戲*大型工作階段*。
此情境最常見於大型多人線上 (MMO) 遊戲與廣播 (大部分成員都是觀眾)。大型工作階段支援也可能適用於其他類型的遊戲。

在某些情況下，即使處理的是較小的玩家群組，您也可能會發現大型工作階段很有用。
如果您希望多位玩家位於同一個工作階段中，但在遊戲中沒有遇到彼此時不一定會察覺對方，可以使用大型工作階段的 `encounters` 屬性。

[多人遊戲管理員](/zh-TW/services/xbox-services/multiplayer/mpm/live-multiplayer-manager-nav)目前不支援大型工作階段。您必須使用 2015 多人遊戲 API，直接呼叫多人遊戲工作階段目錄 (MPSD)。

大型工作階段的處理方式與一般工作階段略有不同。

* 大型工作階段包含的資訊比一般工作階段少，但效率更高。
* 大型工作階段最多支援 10,000 位成員。
* 您無法訂閱大型工作階段。
* 大型工作階段的成員不會自動被納入最近一起玩的玩家清單。

## 最近一起玩的玩家

當 XBOX 玩家與新玩家一起玩多人遊戲時，遊戲結束後，可以在儀表板上的最近一起玩的玩家清單中看到這些玩家。

* 如果玩家在遊戲中與新玩家有很棒的體驗，可能會想要再次與對方一起玩，或將對方加為好友。
* 如果玩家與某位玩家的體驗不佳，可能會想要在未來避開對方，或在遊戲結束後檢舉不良行為。

在一般工作階段中，XBOX 服務會自動將同一個工作階段中的玩家新增至最近一起玩的玩家清單。
不過，如果您使用大型工作階段，就必須採取一些額外步驟，以確保正確填入最近一起玩的玩家清單。

## 設定大型工作階段

若要將工作階段設定為大型，請將 `"large": true` 新增至工作階段範本的 capabilities 區段。
您可以將 `maxMembersCount` 值設定為最多 10,000。

下列範本會建立最多支援 2,000 位玩家的大型工作階段。

```json theme={null}
{
    "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 2000,
            "visibility": "open",
            "capabilities": {
                "gameplay": true,
                "large": true
            },
            "timeouts": {
                "inactive": 0,
                "ready": 180000,
                "sessionEmpty": 0
            }
        },
        "custom": { }
    }
}
```

## 使用大型工作階段

將大型工作階段寫入 MPSD 時，建議您不要超過每秒 10 次寫入。
一般 1,000 位玩家的工作階段，每位玩家平均可能每兩分鐘寫入一次，以進行成員加入或離開等更新。

其他屬性不應在大型工作階段中維護。

### 將來自同一個大型工作階段的玩家建立關聯

當您從 MPSD 擷取大型工作階段時，回應不會包含成員清單。沒有方法可以取得完整清單。
如果呼叫者在工作階段中，其成員記錄會是 `members` 集合中唯一的記錄，並標記為 `me` (與要求中相同)。

這表示用戶端成員只能更新自己在工作階段中的項目。他們仰賴伺服器提供您所指定的通用識別碼。XBOX 服務會使用此識別碼將一起遊玩的玩家建立關聯，以便更新信譽與最近一起玩的玩家狀態。

有兩種方式可以表示工作階段中的玩家一起遊玩過：永久群組與短暫遭遇。

#### 永久群組

*永久群組*是持續一起遊玩的具名玩家群組，可能會有部分玩家加入或離開該群組。群組名稱應遵循與一般工作階段相同的命名規則，例如 GUID。

每位成員加入或離開群組時，應在自己的 `groups` 屬性 (字串陣列) 中新增或移除該群組名稱。

```json theme={null}
{
    "members": {
        "me": {
            "properties": {
                "system": {
                    "groups": [ "example-group-name" ]
                }
            }
        }
    }
}
```

#### 短暫遭遇

如果兩位玩家有一次短暫的遭遇 (*短暫遭遇*)，遊戲可以使用 `encounters` 屬性 (而非 `group` 屬性) 來表示。

為每次遭遇命名。遭遇之後，雙方 (或所有) 參與者都會將遭遇名稱寫入自己的 `encounters` 屬性。

```json theme={null}
{
    "members": {
        "me": {
            "properties": {
                "system": {
                    "encounters": [ "trade.0c7bbbbf-1e49-40a1-a354-0a9a9e23d26a" ]
                }
            }
        }
    }
}
```

您可以為 `groups` 與 `encounters` 使用相同的名稱。例如，如果一位玩家與某個名稱已新增至 `groups` 的群組「交易」，發生遭遇的玩家會在其「encounters」清單中上傳該群組名稱。這會讓該玩家看到群組的所有成員為最近一起玩的玩家，反之亦然。群組中的玩家不需要採取任何動作來更新群組成員資格。

當玩家成為群組成員達 30 秒時，就會被計為一次遭遇。
由於遭遇被視為一次性事件，`encounters` 屬性一律會立即處理，然後從工作階段中清除。

`encounters` 陣列永遠不會出現在回應中。
相對地，`groups` 屬性會一直保留，直到被變更或移除，或成員離開工作階段為止。


## Related topics

- [服務對服務多人遊戲工作階段管理](/zh-TW/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/s2s-call-patterns/live-mpsd-service-to-service.md)
- [多人遊戲工作階段目錄 (MPSD) 概念](/zh-TW/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-concepts-nav.md)
- [概念](/zh-TW/services/xbox-services/multiplayer/mpsd/concepts/index.md)
- [多人遊戲工作階段瀏覽](/zh-TW/services/xbox-services/multiplayer/concepts/live-session-browse.md)
- [設定多人遊戲服務](/zh-TW/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
