Clash Royale 單兵種對抗數值分析

Clash Royale 最重要的是卡牌之間的組合。但分析起來太複雜,還得從單兵種之間的對抗入手。

首先,我們面對的就是怎麼把費用(Cost)轉換成攻擊力和防禦力。第一個方案是,爲所有卡牌找到一個統一的指標,數值越大,攻擊力越強。但這顯然不現實,卡牌之間都是相互制約的。看來只能針對某一對卡牌建模計算了。

我們先考慮一個具體例子:當 mini PEKKA 遇上 Knight ,二者都是近身搏鬥型。mini PEKKA 菜掉 Knight 需要n = (Knight.hit_points / mini_PEKKA.damage).ceil刀,这段时间挨了(m = n * mini_PEKKA.hit_speed / Knight.hit_speed).floor刀(即掉了m * Knight.damage)滴血。剩下的血量就很简单了:

mini_PEKKA.hit_points - (((Knight.hit_points / mini_PEKKA.damage).ceil) * mini_PEKKA.hit_speed / Knight.hit_speed).floor) * Knight.damage

但是還有個問題,這是近身互砍的情況,要是兩個(設爲 a, b)都是遠程攻擊型卡牌呢?其實也很簡單,只要對攻擊距離短的一方(設爲 b)的血量做一修正就行了:b.hit_points - a.damage_per_second * (a.range - b.range) / (a.v + b.v)

Prince 迎擊 Musketeer

這樣,我們就得到一張粗略的對戰表:

Cards mini PEKKA Knight Giant Witch Musketeer Spear Goblins Archers Valkyrie Prince
mini PEKKA 0 270.0 0 488.6 84.6 519.7 121.3 321.0 0
Knight 0 0 0 678.7 131.0 626.3 315.2 102.0 0
Giant 932.0 1472.0 0 2233.0 1604.1 2194.8 1812.2 1388.0 875.6
Witch 0 0 0 0 0 0 0 0 0
Musketeer 0 0 0 224.0 0 326.0 172.0 0 0
Spear Goblins 0 0 0 7.0 0 0 0 0 0
Archers 0 0 0 212.0 0 314.0 0 0 0
Valkyrie 0 0 0 716.7 245.0 740.3 429.2 0 0
Prince 236.0 440.0 0 790.6 326.2 751.1 645.0 305.0 0

顯然,這張對戰表存在很多問題,比如:移動速度是估的(好在距離不長,影響不大)、Giant 只會攻擊建築不打人、Witch 能召喚小鬼……所以它們的數據幾乎沒有意義。但我們還是能得出一些規律:

  • mini PEKKA 菜 Spear Goblins, Valkyrie, Knight ,險勝 Archers, Musketeer ,不敵 Prince。

  • Knight 菜Spear Goblins, Archers ,險勝 Musketeer, Valkyrie ,不敵 mini PEKKA, Prince。

  • Musketeer 菜 Spear Goblins ,險勝 Archers ,不敵mini PEKKA, Knight, Valkyrie, Prince
    (不知道是不是計算有誤,感覺女槍手蠻強的)。

  • Spear Goblins 只有被菜的份,也就是來拖拖時間(後面可以算算能折算成多少藥水)。

  • Archers 只能菜 Spear Goblins。

  • Valkyrie 秒 Spear Goblins ,菜 Archers, Musketeer ,不敵 mini PEKKA, Knight, Prince。
    女武神可以群傷,不過在這應該差不了太多。

  • Prince 菜 Spear Goblins, Archers, Knight, Musketeer, Valkyrie, mini PEKKA 。
    但是被骷髏兵團秒,不適用這個模型,分析起來有點麻煩(好吧,主要是我沒拿到)。


下面,我們來思考下「防禦力」如何計算。當遇到某個兵種 b 進攻,我們決定投放卡牌 a 去阻擊。會出現兩種情況:

  • 一是不敵,但是拖延了時間。這就要看看究竟贏得了多少時間,減去投放該卡牌的費用,若還有剩,則雖然沒能阻擊成功,但變相賺取了藥水,決策正確。否則,虧本買賣。

  • 二是成功禦敵。那麼就可以用�(剩下的血量 / a.hit_points) * a.cost
    折換成藥水。

Knight 阻擊 mini PEKKA

比如:用 Knight 去阻擊 mini PEKKA。3.6秒後歇菜,mini PEKKA 還有270滴血,阻擊失敗。但是拖延了3.6秒,而 Knight 只花了3滴藥水,相當於賺了0.6滴藥水。

Cards mini PEKKA Knight Giant Witch Musketeer Spear Goblins Archers Valkyrie Prince
mini PEKKA -2.2 1.4 2.0 2.2 0.0 2.3 0.0 1.6 -1.0
Knight 0.6 5.8 6.0 1.8 0.0 1.5 0.0 0.3 1.5
Giant 1.8 2.8 17.5 4.1 2.5 4.0 3.1 2.6 1.3
Witch -3.2 -1.7 -2.0 4.1 -1.7 -1.1 -1.4 -0.5 -2.0
Musketeer -2.2 -0.7 -1.0 2.7 -0.7 2.9 1.5 -1.0 -1.0
Spear Goblins -2.0 0.2 -0.5 0.1 -0.9 0.6 -0.8 -0.5 -0.5
Archers -1.2 0.3 0.0 1.4 -0.8 2.1 0.6 0.0 0.0
Valkyrie -0.4 4.8 6.5 2.2 0.0 2.3 0.5 6.5 2.0
Prince 1.1 2.0 4.0 3.5 0.5 3.3 2.5 2.1 2.5

由上表可以看出:

  • 用 mini PEKKA 去阻擊 mini PEKKA 其實是不划算的,因爲兩下就報銷了,回血都來不及。

  • 用 Musketeer 去阻擊貌似也不划算,Knight 貌似更適合一些。

  • ……


好吧,我就圖一樂子。但你不覺得,創建一些指標來支撐你的決策,這不就是會計思維的第二層境界——解讀數據的能力?!

你可能感兴趣的:(Clash Royale 單兵種對抗數值分析)