概觀
設定配對佇列時,您可以為每個規則指派 Weight 值。權數是一個數值乘數,控制配對系統在排名及排序符合資格的票證時,特定規則的影響力有多大。它不會改變票證是否通過規則,只會影響在判斷哪些票證是比賽的最佳候選時,該規則相對於其他規則的重要性。 了解權數對於調整比賽品質至關重要。藉由調整各規則的權數,您可以優先考量對遊戲最重要的事項,無論是技能平衡、地理鄰近性,還是共用內容。權數的運作方式
每個支援權數的規則,都會為所評估的每一對票證計算距離值。此距離代表依據該規則,兩張票證的相似或差異程度:- 距離為 0 表示這兩張票證在該規則上完全相符。
- 距離越接近 1 表示這兩張票證位於規則允許範圍的邊緣。
- 距離為無限大 (硬性拒絕) 表示依據該規則,這兩張票證無法配對,與權數無關。
權數不會覆寫硬性限制。如果規則判定兩張票證不相容,這些票證就會完全被排除。例如,差異規則中的值超過允許的最大差異時,就會發生這種情況。權數只會影響已符合資格之票證之間的優先順序。
各規則如何計算距離
在查看權數範例之前,先了解每個加權規則如何計算其距離值會很有幫助。距離一律是介於 0 到 1 之間的數字,值越低表示越相符。哪些規則支援權數
權數適用於參與以距離為基礎之排序的標準規則類型。下列規則支援 Weight 屬性:
下列隊伍規則類型****不支援權數。這些規則作為驗證器,只會讓比賽通過或失敗,不參與以距離為基礎的排序:
有效的權數值
權數必須是大於 0 且不超過 1000 (含) 的數字。不允許權數為 0。如果未指定權數,預設值為 1。範例
下列範例使用一個佇列,其中包含技能的差異規則和偏好遊戲地圖的集合交集規則。佇列中有三位玩家:Alice、Bob 和 Charlie。配對系統需要決定兩位候選人 (Bob 或 Charlie) 中,哪一位與 Alice 更相配。佇列設定
玩家屬性
步驟 1:計算各規則的距離
SkillRule (差異規則) 使用公式absoluteDifference / maxDifference:
- Alice 對 Bob:
|20 - 24| / 10 = 4 / 10 = 0.4 - Alice 對 Charlie:
|20 - 17| / 10 = 3 / 10 = 0.3
1 / (1 + sharedItemCount):
- Alice 對 Bob:兩人共用 “Dustbowl” 和 “Summit” (兩個項目) →
1 / (1 + 2) = 0.33 - Alice 對 Charlie:兩人共用 “Lakeside” (一個項目) →
1 / (1 + 1) = 0.5
範例 1:相同權數
兩個規則的 Weight 都為 1 時,總距離為:範例 2:優先考量技能 (SkillRule 的 Weight = 10)
如果您的遊戲具競技性,且技能平衡最為重要,請提高 SkillRule 的權數:範例 3:優先考量共用地圖 (MapRule 的 Weight = 10)
如果您的遊戲較休閒,且玩家最在意的是在自己最愛的地圖上遊玩,請改為提高 MapRule 的權數:範例 4:玩家無法配對時 (硬性拒絕)
現在加入第四位玩家 Dave,他的技能與 Alice 相差甚遠,且沒有共用任何偏好地圖:
SkillRule:
|20 - 35| / 10 = 15 / 10 = 1.5,但差異 15 超過 MaxDifference (10),因此規則會傳回無限大距離 (硬性拒絕)。
MapRule: Alice 和 Dave 共用 0 張地圖,而 MinIntersectionSize 為 1,因此此規則也會傳回無限大距離。
範例摘要
下表顯示在玩家屬性和規則都相同、只有權數不同的情況下,權數如何改變偏好的候選人。
基礎距離從未改變,改變的只有指派給每個規則的相對重要性。Dave 一律會被拒絕,因為該玩家的屬性超過硬性限制,與權數無關。這就是權數調整的威力。
權數與規則擴充
當規則變成選用 (透過變成選用前的秒數或擴充) 時,它就不再硬性拒絕票證。不過,原本會被拒絕的票證仍會獲得非零的距離值。權數會繼續縮放此距離,這表示選用規則仍會影響排序順序,它們會降低「違反規則」之票證的優先順序,而不是完全排除它們。 此行為有助於確保即使規則隨時間放寬,仍會優先選擇最佳的配對。最佳做法
- 從相同的權數開始,並根據玩家對比賽品質的意見反應進行調整。
- 對遊戲體驗最重要的規則使用較高的權數 (例如競技遊戲的技能,或休閒遊戲的共用內容)。
- 請記住,權數只會影響排序,無法讓不可能的比賽成立。請使用擴充隨時間放寬硬性限制。
- 避免極端的權數比例 (例如 1000:1),除非您刻意要讓某個規則完全壓過其他所有規則。
