跳轉到主要內容
本主題說明藉由管理工作階段、配對和遊戲邀請來新增多人遊戲功能的高階 API。此 API 提供以狀態為基礎和以事件為基礎的程式設計模型。 XBOX 服務為在您的遊戲中新增多人遊戲功能提供廣泛的支援,讓您的遊戲可以連接世界各地的 XBOX 成員。 這包括豐富的配對案例、讓玩家加入好友進行中遊戲的能力等等。 直接使用多人遊戲 API 實作 XBOX 服務多人遊戲可能是一項複雜的工作。這需要大量的設計和測試,以確認您遵循最佳做法並符合認證需求。 多人遊戲管理員藉由管理工作階段和配對,並提供以狀態為基礎和以事件為基礎的程式設計模型,讓您可以輕鬆地在遊戲中新增多人遊戲功能。 多人遊戲管理員是一組 API。其設計目的是讓您能輕鬆地為採用對等裝載多人遊戲設計的 XBOX 服務遊戲實作多人遊戲案例。 多人遊戲管理員提供以常見多人遊戲案例為中心的 API,例如與好友一起玩多人遊戲、處理遊戲邀請、處理中途加入、配對等等。 多人遊戲管理員支援多個本機使用者。如果您使用協力廠商配對服務,它也能讓您的遊戲更容易與多人遊戲工作階段目錄 (MPSD) 整合。許多這類案例只需要幾個 API 呼叫即可完成。

主要功能

多人遊戲管理員 API 的主要功能如下。
  • 簡單的工作階段管理和 XBOX 服務配對
  • 以狀態為基礎和以事件為基礎的程式設計模型
  • 確保遵循 XBOX 服務最佳做法,同時符合多人遊戲 XR 規範
  • 實作 2015 多人遊戲流程圖
多人遊戲管理員 API 設計的重要資訊如下。
若要通過認證,您的遊戲仍必須實作線上多人遊戲的必要事件。

概觀

多人遊戲管理員以下列主要概念為中心。
  • 大廳工作階段: 持續性工作階段,用於管理裝置上的本機使用者,以及想要一起玩的受邀好友。 該群組可以一起玩遊戲,例如多個回合、地圖和關卡。大廳工作階段會追蹤這個核心好友群組 (包括裝置上的本機玩家)。 通常,這個群組是在主機瀏覽功能表,並與群組成員聊天以決定要玩哪種遊戲模式時形成的。
  • 遊戲工作階段: 追蹤正在玩特定遊戲執行個體的玩家。 例如,一場競賽、一張地圖或一個關卡。 您可以透過 XblMultiplayerManagerJoinGameFromLobby 建立包含大廳工作階段成員的新遊戲工作階段。 當成員接受邀請時,他們會被新增至大廳和遊戲工作階段 (如果有空間的話)。 如果啟用配對,可以將其他玩家新增至遊戲工作階段,但這些其他玩家不會被新增至大廳工作階段。 這表示當遊戲結束時,大廳工作階段中的玩家仍在一起,而透過配對加入的額外玩家則不會。
  • XblMultiplayerManagerMember:代表在本機或遠端裝置上登入的個別使用者。
  • XblMultiplayerManagerDoWork:確保在遊戲與 XBOX 服務多人遊戲服務之間維持適當的遊戲狀態更新。 為了確保最佳效能,必須經常呼叫 XblMultiplayerManagerDoWork,例如每個畫面格一次。 XblMultiplayerManagerDoWork 會提供 XblMultiplayerEvent 回呼事件陣列,供遊戲處理。

狀態機器

必須呼叫 XblMultiplayerManagerDoWork,才能確保您的狀態保持最新。 為了讓多人遊戲管理員執行其工作,您必須定期呼叫 XblMultiplayerManagerDoWork 方法。 最可靠的做法是每個畫面格至少呼叫一次。 XblMultiplayerManagerDoWork 在沒有工作要做時會快速傳回,因此不必擔心呼叫得太頻繁。

執行緒

多人遊戲管理員 API 傳回的所有物件都不應被視為安全執行緒。 不過,如果您從多個執行緒呼叫它,它可讓您控制執行緒同步處理。 此程式庫具有內部多執行緒保護。不過,如果您需要讓某個執行緒存取任何值,仍然需要實作自己的鎖定;例如,在另一個執行緒可能正在叫用 XblMultiplayerManagerDoWork 時逐一查看成員清單。

以狀態為基礎的模型更新

多人遊戲管理員會維護以狀態為基礎的模型,在玩家加入、離開或工作階段更新時,於背景更新工作階段。 為了協助避免 UI 執行緒與遊戲執行緒之間的執行緒同步處理問題,多人遊戲管理員在您呼叫 XblMultiplayerManagerDoWork 方法之前,不會更新工作階段的應用程式可見狀態。 傳統上,您會在背景執行緒上收到事件 (例如工作階段變更) 的通知,然後必須將其與 UI 執行緒同步,才能顯示這些變更。 使用多人遊戲管理員時,這些幕後工作都會為您完成。 您可以在您選擇的時間於主執行緒上呼叫 XblMultiplayerManagerDoWork,以取得多人遊戲管理員在幕後為您緩衝的最新狀態快照。

事件和通知

多人遊戲管理員定義了一組重要事件 (請參閱 XblMultiplayerEvent),並在事件發生時透過 XblMultiplayerManagerDoWork 方法通知遊戲。 例如,事件包括遠端玩家加入或離開、成員屬性變更,或工作階段狀態變更。 所有多人遊戲管理員 API 都是非同步的。 XblMultiplayerManagerDoWork 方法會在這些非同步作業完成時傳回事件清單。 您的遊戲應根據您的情況適當處理這些事件。 如需詳細資訊,請參閱 XblMultiplayerEvent 類別文件。 每個傳回的 XblMultiplayerEvent 都包含一個 EventArgsHandle,您必須使用它來取得事件類型的適當 args。 例如,如果 XblMultiplayerEventType 是 MemberJoined,您可以呼叫 XblMultiplayerEventArgsMembersCount 和 XblMultiplayerEventArgsMembers。 下列範例示範如何使用 XblMultiplayerManagerDoWork 處理事件。

平面 C API

如需詳細資訊,請參閱下列內容:

案例

本節涵蓋常見案例,以及您在每個案例中會呼叫的 API。 本節也提供多人遊戲管理員在幕後執行之作業的部分資訊。 如需 API 的高階概觀,請參閱多人遊戲管理員 API 概觀。

多人遊戲管理員不會執行的工作

多人遊戲管理員讓實作多人遊戲案例變得容易許多,並為您抽象化部分資料。不過,多人遊戲管理員不會處理下列項目:
  • 持續性線上伺服器遊戲,例如大型多人線上 (MMO) 遊戲,或其他需要大型工作階段 (一個工作階段中超過 100 位玩家) 的遊戲類型
  • 伺服器對伺服器的工作階段管理
  • 節流 MPSD 呼叫以遵守細微速率限制
  • 混用多人遊戲服務 API 和多人遊戲管理員 API
多人遊戲管理員不受限於任何特定的網路技術,應可搭配任何網路通訊層運作。

資源

如需 API 的實際運作範例,請參閱 NetRumble 範例。 如需 API 文件,請參閱 multiplayer_manager_c。 您也可以檢視 multiplayer_manager_c.h 標頭檔。 如果您在使用多人遊戲管理員時有任何問題、意見反應或遇到問題,請連絡您的開發人員客戶經理 (DAM),或在 https://forums.xboxlive.com 的論壇上張貼支援討論串。
最後修改於 2026年10月8日