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