跳轉到主要內容
本文說明 PlayFab Matchmaking 如何評估票證、套用規則及組成比賽。了解配對程序有助於您設計能有效率地產生高品質比賽的佇列設定。

比賽組成概觀

當您將票證提交至佇列時,配對服務會將其與其他等候中的票證放在一起。服務會持續執行配對迴圈,嘗試將相容的票證組成比賽。以下是每個步驟發生的情況:
  1. 移除過期的票證。 超過其 GiveUpAfterSeconds 逾時的票證會被取消。
  2. 依等候時間排序票證: 等候最久的票證會成為可能比賽的種子,也就是起點。
  3. 依相容性為候選票證排名: 其餘每張票證都會根據佇列的規則,依其屬性與種子票證的吻合程度獲得距離分數。
  4. 以貪婪方式建立群組: 從最接近的候選票證開始,一次將一張票證加入群組,最多達到 MaxMatchSize。
  5. 驗證每次新增: 新增票證時,每個規則都會檢查候選票證是否仍與目前的群組相容。如果有任何規則拒絕,就會略過該候選票證。
  6. 驗證完整的群組: 一旦群組達到至少 MinMatchSize,最後的驗證階段會確認群組符合所有規則。如果通過,就會建立比賽。
  7. 回溯: 如果無法組成有效的群組,服務會移除最後新增的票證,並嘗試下一個候選票證。此程序會在放棄目前的種子之前探索其他的分組方式。
接著,服務會移至下一張等候最久的票證作為新種子,並重複此程序。
此演算法會優先處理等候最久的票證。此優先順序可確保等候最久的玩家最先獲得比賽。

規則如何影響配對

在比賽組成期間,規則有兩個用途:篩選和排序。

篩選

規則可以阻止票證加入群組。例如,針對遊戲組建版本的 StringEqualityRule 會拒絕任何組建與群組組建不符的票證。配對服務每次考慮候選票證時都會檢查篩選條件,而不只是在開始時檢查一次。

排序 (距離)

規則也會提供距離分數,決定先嘗試哪些候選票證。距離越低表示相容性越高。
  • 屬性值完全相同的票證,距離分數通常為 0。
  • 位於規則允許範圍邊緣的票證,距離分數接近 1。
  • 超出允許範圍的票證會被篩除 (實際上為無限距離)。
當佇列有多個規則時,每個規則的距離會乘以其權數並加總。票證會依總距離由低至高的順序嘗試,因此會先嘗試相容性最高的候選票證。
使用規則權數來表示相對重要性。例如,如果技能相似度比區域偏好更重要,請為技能規則指定較高的權數。

驗證

有些限制只能在組成完整群組後才能檢查。例如,隊伍平衡規則 (TeamDifferenceRule、TeamSizeBalanceRule) 需要看到完整的群組,才能評估隊伍是否平衡。這些規則會作為最後的驗證步驟執行。

擴充與放寬

當票證等候時,規則會放寬其限制以擴大搜尋範圍。有兩種機制可控制此程序:
  • 擴充:規則會隨時間逐步調整其閾值。例如,技能閾值為 0.2 的 DifferenceRule 可能每 5 秒擴充 0.1,最終允許 0.5 的差異。
  • 變成選用前的秒數:經過設定的時間後,規則會完全停止篩選。規則仍會參與排序 (距離),但不再阻止比賽。
擴充一律是以時間為基礎。它會根據票證已等候的時間,一致地套用至所有票證。等候較久的票證自然會達到更廣的擴充階段,並能與更廣泛的候選票證群配對。
放寬並不表示忽略比賽品質。即使規則變成選用,它仍會在排序步驟中提供距離。符合規則的候選票證會比不符合的候選票證先被嘗試。
如需設定擴充的詳細資訊,請參閱設定配對佇列。

調整規模與分割

當佇列收到大量票證時,服務會將票證分割成可獨立評估的群組。分割會使用自然區分群體的規則屬性。例如,針對遊戲模式的 StringEqualityRule 會建立清楚的分割界限。 隨著負載降低,分割區會重新合併。此程序可讓服務擁有更大的候選票證池,並改善比賽品質。 如需設計能良好調整規模之佇列的詳細資訊,請參閱配對規模調整。

針對不對稱偏好進行設計

有些配對案例涉及不對稱的偏好,也就是玩家 A 願意與玩家 B 配對,但玩家 B 不願意與玩家 A 配對。跨平台遊玩設定是最常見的範例。如需建議的設定模式和實作範例,請參閱處理不對稱的跨平台遊玩偏好。

另請參閱

最後修改於 2026年10月8日