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