作者Feis (永远睡不着 @@)
看板GameDesign
标题Re: [请益] 敌人伤害设计
时间Tue May 19 21:31:06 2015
※ 引述《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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.122.83.198
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1432042269.A.C26.html
※ 编辑: Feis (140.122.83.198), 05/19/2015 21:46:27
1F:→ Feis: 一开始很开心地算错了QQ 05/19 21:50
2F:推 pttworld: 嗯,拿掉ceil,floor,令T=H/A,可以很快得解。 05/19 21:59
3F:→ Feis: 请教一下甚麽时候可以拿掉 floor 跟 ceil 阿 05/19 22:00
4F:推 pttworld: 不知道的。当拿掉发现解等同一般认知,就找到key了。 05/19 22:03
5F:→ pttworld: 要设计出不一样的变化就是调整函式而不是改公式。 05/19 22:04
6F:→ Feis: 那 floor(1.2) / ceil(1.2) == 1 ? 蛮有趣的 05/19 22:04