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

作者: Feis (永遠睡不著 @@)   2015-05-19 21:31:06
※ 引述《KiwiSoda01 (奇異果汽水)》之銘言:
: 假設在一個pad類型的遊戲,
: 有兩個敵人,你希望給玩家覺得這兩個敵人,
: 給玩家帶來的威脅程度是一樣的,
: 且這兩個敵人一起出現。
: 其中一個敵人每回合都打1000傷害,
: 另一個敵人則兩回合才攻擊一次,
: 請問後者要打出的傷害,比2000高還是低,
: 才會符合當初的需求?
: 順便一提,我問過幾個同事,答案都跟我不一樣。
: 手機排版請見諒。
敵方攻擊: 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) / 2) * 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)/2) * A2
如果要令 S1 與 S2 選擇相仿, 則 S1 總受傷害要等於 S2 總受傷害:
(ceil(H/A)-1)*A1 + floor((2*ceil(H/A)-1)/2)*A2
== (2*ceil(H/A)-1)*A1 + floor((ceil(H/A)-1)/2)*A2
(floor((2*ceil(H/A)-1)/2) - floor((ceil(H/A)-1)/2)) * A2
== ((2*ceil(H/A)-1) - (ceil(H/A)-1)) * A1
以下省略計算過程...
A2 = 2 * A1
作者: Feis (永遠睡不著 @@)   2015-05-19 21:50:00
一開始很開心地算錯了QQ
作者: pttworld (批踢踢世界)   2015-05-19 21:59:00
嗯,拿掉ceil,floor,令T=H/A,可以很快得解。
作者: Feis (永遠睡不著 @@)   2015-05-19 22:00:00
請教一下甚麼時候可以拿掉 floor 跟 ceil 阿
作者: pttworld (批踢踢世界)   2015-05-19 22:03:00
不知道的。當拿掉發現解等同一般認知,就找到key了。要設計出不一樣的變化就是調整函式而不是改公式。
作者: Feis (永遠睡不著 @@)   2015-05-19 22:04:00
那 floor(1.2) / ceil(1.2) == 1 ? 蠻有趣的

Links booklink

Contact Us: admin [ a t ] ucptt.com