我可以在遊戲中混用多人遊戲活動 (MPA) 與多人遊戲工作階段目錄 (MPSD) 服務嗎?
否,無法在遊戲中混用 MPA 與 MPSD 呼叫。遊戲需要根據功能需求選擇要使用哪一項服務。如何從服務存取多人遊戲工作階段目錄 (MPSD) API?
如需詳細資訊,請參閱服務對服務多人遊戲工作階段管理。我的遊戲可以訂閱多個工作階段的變更嗎?
可以,遊戲每個連線最多可以訂閱 10 個工作階段的變更。如果網路連線中斷或玩家關閉主機,玩家會立即被移除嗎?
WebSocket 連線可讓多人遊戲工作階段目錄 (MPSD) 快速偵測用戶端中斷連線,並將用戶端設為非作用中。非作用中移除的逾時一到期,就會移除工作階段成員。如需詳細資訊,請參閱「多人遊戲工作階段進階主題」主題中的工作階段逾時一節。如何判斷要使用哪個服務設定識別碼 (SCID)、工作階段範本與沙箱?
如果您未參與遊戲的初始註冊 (此資訊是在當時建立的),您就無法直接存取此資訊。請聯絡您的開發人員客戶經理 (DAM),他們可以為您取得此資料。是否有可供我與自己遊戲之要求本文比較的範例?
請參閱 MultiplayerSessionRequest (JSON) 中的要求結構。如果呼叫 MPSD 時收到 HTTP 403 狀態碼,該怎麼辦?
這通常是權限或範圍問題。請收集 Fiddler 追蹤以取得更多資訊,然後檢查作為HttpResponse 本文一部分傳回的訊息中是否有常見的 403 訊息。
- “The requested service configuration cannot be accessed.”
- 確認您使用的帳戶具有該沙箱的存取權。
- 確認您位於正確的沙箱中。
- 如果您使用憑證驗證並收到此錯誤,請聯絡您的 DAM。
- “The requested session cannot be accessed. The calling user must have multiplayer privilege, and private sessions can only be read by session members.”
- 您沒有檢視該工作階段的能力,可能是因為您嘗試存取可見度為 Private 的工作階段。如果可見度設為 Private,只有該工作階段的成員才能讀取工作階段文件。
[!NOTE] 玩家必須擁有 XBOX Live Gold 帳戶才能註冊新的工作階段。若沒有 Gold 帳戶權限,註冊新工作階段的要求會傳回 HTTP 403。
- “The request body can’t contain existing member references unless the authentication principal includes a server.”
- 您無法代表玩家將其他玩家加入工作階段,只能邀請。若要邀請玩家,請將索引設為
reserve_<number>。
- 您無法代表玩家將其他玩家加入工作階段,只能邀請。若要邀請玩家,請將索引設為
如果呼叫 MPSD 時收到 HTTP 404 狀態碼,該怎麼辦?
請收集 Fiddler 追蹤以取得更多資訊,然後執行下列步驟。- 檢查作為
HttpResponse本文一部分傳回的訊息中是否有常見的 404 訊息,例如下列訊息。- “The requested service config is either invalid or not configured for sessions.” 請確定您使用的是正確的 SCID。
- “The requested session wasn’t found.” 擷取工作階段之前,請確定已建立工作階段,且工作階段範本正確無誤。您可以使用
PUT呼叫建立工作階段。
- 檢查您使用的 URI。
- 重新啟動主機,或以其他玩家身分登入。
- 在遊戲開發人員論壇中搜尋錯誤碼或其他解決方案。
- 確認工作階段並未因為空的而被刪除。工作階段可能因為玩家逾時而變成空的。發生這種情況時,通常是因為所有工作階段成員都處於會套用逾時的狀態,例如 Ready 或 Inactive。如需詳細資訊,請參閱「多人遊戲工作階段進階主題」主題中的工作階段使用者狀態一節。
為什麼呼叫 XblMultiplayerWriteSessionByHandleAsync 或 XblMultiplayerGetSessionByHandleAsync 時會收到 HTTP 404 狀態碼?
如果您的遊戲為了回應包含控制代碼識別碼的加入通訊協定啟用,而使用控制代碼存取 MPSD 工作階段,則通訊協定啟用中的控制代碼識別碼可能因下列其中一個原因而過時。- 遊戲起始加入時所在的 XBOX 殼層 UI 檢視可能已過時。部分 UI 檢視 (例如玩家的設定檔卡片) 在開啟時不會自動重新整理加入控制代碼。為了避免收到 HTTP 404 狀態碼,遊戲應該在加入之前關閉並重新開啟檢視以重新整理資料。
- 在遊戲從 XBOX 殼層 UI 選取加入作業之後,遊戲要加入的玩家可能已切換活動工作階段。此原因很少見。
為什麼呼叫 MPSD 時會收到 HTTP 412 狀態碼?
如果工作階段已經存在,下列要求會傳回 HTTP 412。If-Match 標頭不相符,下列要求會傳回 HTTP 412。
為什麼呼叫 MPSD 時會收到 HTTP 400、405、409、503 或類似的狀態碼?
請收集 Fiddler 追蹤以取得更多資訊,然後檢查作為HttpResponse 本文一部分傳回的訊息。透過這些資訊,您應該能夠識別並修正錯誤。如果無法,請在開發人員論壇中搜尋解決方案。
如果您使用 XBOX Services API (XSAPI),也可以依照針對 XBOX Services API 進行疑難排解中的說明取得回應本文。或者,您的程式碼可以使用 HCTraceSetClientCallback 將輸出傳送至遊戲 UI。
我可以或應該在遊戲的工作階段範本中變更哪些內容?
工作階段範本是工作階段的模式,您無法覆寫範本中已設定的常數。不過,您可以將新的屬性新增至範本。如需詳細資訊,請參閱多人遊戲工作階段範本與多人遊戲工作階段目錄概觀。為什麼我收到錯誤,指出我的工作階段尚未初始化?
以下是您可能收到的錯誤訊息範例。400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start.
由於要求中包含的 initialize 欄位設為 true 的工作階段成員保留不足,因此無法建立工作階段。您的程式碼可以使用 XblMultiplayerSessionAddMemberReservation 或 XblMultiplayerSessionJoin 的 initializeRequested 參數,為成員設定此欄位。
當工作階段範本中指定了初始化時,請確定有足夠的成員保留設定了 "initialize": true,以通過配對服務品質 (QoS) 需求。如需詳細資訊,請參閱目標工作階段初始化與 QoS。
為什麼收到 HTTP 204 狀態碼時,我的工作階段沒有建立?
此狀態碼表示您在建立工作階段時沒有新增任何玩家。如果建立工作階段時其中沒有任何玩家,且工作階段空置逾時為零 (預設值),就不會建立工作階段。 請確定在建立工作階段時至少包含一位玩家。對於專用伺服器情境,請取得一位正在嘗試建立對戰或需要建立對戰的玩家,並讓該玩家成為對戰中的初始玩家。或者,您可以變更或移除工作階段空置逾時。如需詳細資訊,請參閱「多人遊戲工作階段進階主題」主題中的工作階段逾時一節。何時應該輪詢 MPSD?
您的遊戲必須避免輪詢 MPSD。如果遊戲必須探索 MPSD 工作階段的變更,應該訂閱工作階段變更事件。如需詳細資訊,請參閱「多人遊戲工作」主題中的訂閱 MPSD 工作階段變更通知一節。我可以使用 XblMultiplayerQuerySessionsAsync 實作工作階段瀏覽或配對嗎?
XblMultiplayerQuerySessionsAsync 方法旨在供偶爾呼叫以協助偵錯。由於服務限制,此 API 的工作階段結果並非即時,且在較頻繁呼叫時可能不完整。 若要實作工作階段瀏覽功能,請參閱多人遊戲工作階段瀏覽中的「搜尋控制代碼」一節。若要實作配對,請參閱使用 SmartMatch 配對。如果已保留或受邀加入工作階段的玩家沒有加入,會發生什麼事?
這取決於玩家收到遊戲工作階段已就緒的通知時,遊戲是否正在執行。 如果玩家在遊戲中,且沒有從遊戲 UI 接受遊戲工作階段通知,遊戲必須負責使用 XblMultiplayerSessionLeave 方法將玩家從遊戲工作階段中移除。 如果遊戲受限或未執行,殼層會提供通知,告知玩家有可用的位置。如果玩家拒絕或忽略系統通知,MPSD 就會將該玩家從遊戲工作階段中移除。為什麼配對找不到已建立的工作階段?
在 XBOX One 上,光是建立工作階段並不足以讓配對找到新的工作階段。您必須建立對戰票證,才能開始向配對服務公告該工作階段。如需詳細資訊,請參閱配對概觀。如果遊戲工作階段有開放的玩家位置且支援中途加入,為什麼在工作階段開始後玩家會找不到該工作階段?
遊戲工作階段開始後,就不會再於配對服務上公告。如果工作階段中出現可用的玩家位置,而仲裁者 (主機) 想吸引新玩家,仲裁者必須呼叫 XblMatchmakingCreateMatchTicketAsync 方法,為進行中的工作階段建立新的對戰票證。該票證會再次公告工作階段並找到更多玩家。如需詳細資訊,請參閱配對概觀。如果遊戲工作階段是開放的,剛加入遊戲的玩家可以直接加入工作階段並開始遊玩,而不必等待保留嗎?
可以。當您的遊戲使用多個工作階段來追蹤遊戲工作階段內的玩家子群組時,這特別有用。加入的玩家可能會加入代表其群組的工作階段,然後需要加入較大的遊戲工作階段。當大型遊戲工作階段在我的遊戲中進行時,為什麼不是所有工作階段成員都看到遊戲邀請通知?
當您的遊戲透過加入將玩家新增至工作階段時,遊戲一律會將 XblMultiplayerSessionMember 的InitializeRequested 成員設為 true。這會告知 MPSD 先等待其餘工作階段成員,再讓遊戲離開初始化階段。否則,玩家加入的時間會非常短,而且可能會錯過工作階段變更的通知。