2012-01-21 65 views
2

設置:多人團隊遊戲。多人團隊遊戲:基於玩家等級的自動團隊平衡算法

問題:每個球員都有這是基於他們的球員的統計計算的1至5星評級。我希望找到一種能夠以最公平的方式爲這些球員分配球隊的算法。

有兩支球隊,每支球隊最多有5名球員。

假設有6個玩家加入服務器。這將是理想的服務器分配的球隊是這樣的:

  1. 5星級球員
  2. 3明星球員
  3. 3明星球員

VS

  1. 5明星球員
  2. 4星球員
  3. 2球星

..as此相對

  1. 5球星
  2. 5球星
  3. 4球星

VS

  1. 3球星
  2. 3球星
  3. 2球星

在第一示例中,有一個總的每隊11分是,而在第二個例子中,一隊有一個共14星,而另一個有8個。

對不起,我不能再簡潔了。

+0

每隊的球員人數是否相等? – Dialecticus

回答

2

你不能只是平均的所有玩家分數,然後選取這三個每個隊的平均得分是最接近平均值的所有玩家?

你可以通過分配最高的兩位選手不同的團隊選擇每個隊的隊員正確的,那麼平均剩餘四個數字的排列和選擇最平衡的球隊之一。

我敢肯定將是獲得每隊的最後兩個成員,以及更基於邏輯的解決方案。

+0

謝謝,這將工作得很好。 – user1162099

1

最基本的解決辦法是先加了所有球員的行列,除以二,然後嘗試通過增加玩家達到這個數字。這與收集確切的變化是一樣的,對此,這可能是很好的算法。

這並沒有解釋一些特殊情況。例如,如果有玩家1,1,1,1,2,2,將所有1和2都放在一起並不是最公平的分配。

但是當一件事情公平的時候,一個更難的問題就是優秀球員之間的團隊合作。另外,考慮到球員排名可能還很不完善,我不確定過度優化這種算法是否有效。

1

那些星星應該被視爲提示,而不是實際的技能水平。我會在一支球隊中配對最好和最差,在另一支球隊中排名第二和第二,並分配其餘的隊員,以便每支球隊的總和最接近總和的一半。

2

首先,將所有星星加起來,並將總和除以2.按照他們擁有的恆星數量對玩家列表進行排序。接下來,將最好的球員添加到第一名,第二名添加到第二名,第三名添加到第一名等。這會帶來很好的結果,但它們可能遠離完美。例如,如果你有5,1,1,1顆明星球員。這將導致5,1 VS 1,1。

現在您可以計算團隊之間的差異,並從兩隊中挑選一些球員進行交換。你可以通過從較強的球隊中選出最強的球員並從另一支球隊中挑選一名較弱的球員來做到這一點,以便交換他們會得到完美的球隊。如果這是不可能的,從一個強壯的球隊中選出一名球員,並且嘗試執行相同的動作等等。

但是,如果您爲每個球隊分配不同的球員數量,那麼您應該小心,因爲每個球員都是他自己的代理人,能夠同時採取行動。添加「一個球員更多的明星加成」可以幫助這裏。但是,如果不知道你的遊戲,我不能告訴你更多的情況。