Re: [請益] 敵人傷害設計

作者: Feis (永遠睡不著 @@)   2015-05-20 00:19:52
※ 引述《KiwiSoda01 (奇異果汽水)》之銘言:
: 假設在一個pad類型的遊戲,
: 有兩個敵人,你希望給玩家覺得這兩個敵人,
: 給玩家帶來的威脅程度是一樣的,
: 且這兩個敵人一起出現。
: 其中一個敵人每回合都打1000傷害,
: 另一個敵人則兩回合才攻擊一次,
: 請問後者要打出的傷害,比2000高還是低,
: 才會符合當初的需求?
: 順便一提,我問過幾個同事,答案都跟我不一樣。
: 手機排版請見諒。
同上篇, 比較有趣的是當敵人2的回合數在三以上.
這裡以三當例子:
敵方攻擊: A1 (每回合一次), A2 (每三回合的第三回合攻擊)
敵方血量: H
自己攻擊: A
簡化設定,假設玩家只有攻擊其中一個敵人一種可能 (無玩家回血機制), 且玩家先攻
玩家依照威脅度有兩種策略: 先殺敵人1 (S1), 先殺敵人2 (S2)
(為合乎情境無論採取何種策略玩家所受總傷害需大於玩家血量)
S1:
總回合數: ceil(H/A) + ceil(H/A) = 2 * ceil(H/A)
總受傷害: (ceil(H/A) - 1) * A1 + floor((ceil(H/A) + ceil(H/A) - 1) / 3) * A2
S2:
總回合數: ceil(H/A) + ceil(H/A) = 2 * ceil(H/A)
總受傷害: (ceil(H/A) + ceil(H/A) - 1) * A1 + floor((ceil(H/A)-1)/3) * A2
如果要令 S1 與 S2 選擇相仿, 則 S1 總受傷害要等於 S2 總受傷害:
(ceil(H/A)-1)*A1 + floor((2*ceil(H/A)-1)/3)*A2
== (2*ceil(H/A)-1)*A1 + floor((ceil(H/A)-1)/3)*A2
(floor((2*ceil(H/A)-1)/3) - floor((ceil(H/A)-1)/3)) * A2
== ((2*ceil(H/A)-1) - (ceil(H/A)-1)) * A1
以下省略計算過程...
跟兩回合不一樣的地方在於這裡要分開討論:
當 ceil(H/A) 是 3 的倍數, 則 A2 = 3 * A1 (不意外)
當 ceil(H/A) 除 3 餘 1 時, 則 A2 = 3 * ceil(H/A) / (ceil(H/A) - 1) * A1
討論: 當 H == A 即 ceil(H/A) == 1 的時候, 敵人2 沒有攻擊機會
當 ceil(H/A) == 4 時, A2 = 4 * A1 > 3 * A1 (要比三倍痛)
當 H >>> A 時, A2 = 3 * A1 (由 4 往 3 漸近)
當 ceil(H/A) 除 3 餘 2 時, 則 A2 = 3 * ceil(H/A) / (ceil(H/A) + 1) * A1
討論: 當 ceil(H/A) == 2 時, A2 = 2 * A1 < 3 * A1 (要比三倍輕)
當 H >>> A 時, A2 = 3 * A1 (由 2 往 3 漸近)
所以似乎都有可能.
作者: Feis (永遠睡不著 @@)   2015-05-20 00:31:00
看來模型跟評量方式可能過度簡化. 不過蠻有趣的 (?)
作者: chowleft (什麼....)   2015-05-21 20:43:00
竟然可以寫的像研究報告一樣 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com