|
诸位看看,有意见请跟帖。
========================众所周知的分割线========================
0.0 实力的衡量
今有单位1和单位2,各有生命值和伤害能力两项属性,分别为hp1, dps1, hp2, dps2,令单位1和单位2相互战斗。
hp1 / dps2 * dps1是单位1受dps2攻击,在死亡前所能造成的伤害,与hp2比较,如大于,则单位1胜,如小于,则单位2胜。
比较 hp1 / dps2 * dps1 与 hp2
等价于
比较 hp1 * dps1 与 hp2 * dps2
即二者相斗,hp * dps高者胜,它和与之战斗的其他单位的属性没有关系,可将之视为一个单位的绝对实力的衡量。
0.1 魔兽的护甲免伤公式
令两单位为hp1, dps1, armor1, hp2, dps2, armor2
免伤比例 = armor / (armor + 常数)
实际dps = dps * (1 - 免伤比例)
比较 两单位的实力
等价于
比较 hp1 / (dps2 * ( 1 - armor1 / (armor1 + 常数) ) ) * dps1 * ( 1 - armor2 / (armor2 + 常数)) 与 hp2
等价于
比较 hp1 * dps1 * (armor1 + 常数) 与 hp2 * dps2 * (armor2 + 常数)
同上节,可以将hp * dps * (armor + 常数)视为一个单位绝对实力的衡量,不过,一般我们用 hp * dps * (1 + armor/常数)这样的形式,更加直观地显示armor的价值,每一点带来 1/常数的实力提升
假使我们希望在战斗体系中增加其他各种对抗性的属性,并希望它们对于一个单位的实力的影响与其他与之战斗的单位的属性无关,受上述论述启发,故作如下考虑。
========================众所周知的分割线========================
1.命中和闪避
这是一组对抗性属性,命中率 = f (攻击方命中, 被攻击方闪避),是命中的递增函数,闪避的递减函数,实际dps = dps * 命中率。
显然地,设命中率 = (命中 + 常数a) / (闪避 + 常数b),即有
比较 两单位的实力
等价于
比较 hp1 * dps1 * (1 + 命中1 / 常数a) * (1 + 闪避1 / 常数b) 与 hp2 * dps2 * (1 + 命中2 / 常数a) * (1 + 闪避2 / 常数b)
(中间过程参考上一小节,略)
即得,单位绝对实力 = hp * dps * (1 + 命中 / 常数a) * (1 + 闪避 / 常数b)
常数a 和 常数b的设置,常数a应小于常数b,初始(命中和闪避都为0)时命中率不满,命中才有价值。
2. 暴击和免暴
同样,暴击率 = f (攻击方暴击能力,被攻击方免暴能力)
(假定暴击是两倍伤害)与上节稍有不同,实际dps = dps * (1 + 暴击率)
设(1 + 暴击率) = (暴击能力 + 常数c) / (免暴能力 + 常数d),最终我们能得到单位实力的与前述公式类似的形式。
则暴击率 = (暴击能力 - 免暴能力 + 常数e) / (免暴能力 + 常数d) 其中常数e = 常数c - 常数d
单位绝对实力 = hp * dps * (1 + 暴击能力/常数c) * (1 + 免暴能力/常数d)
常数c 和 常数d的设置,如相等,即表示初始(暴击和免暴都为0)时无暴击,可以考虑使常数c 高于 常数d,使初始时免暴有价值。
对于一次攻击,命中和暴击应单独检定,先检定命中,如命中,再检定暴击。
3. 伤害加深与减免
这个和命中闪避是一样的
伤害比率 = (攻击方伤害加深能力 + 常数f) / (被攻击方伤害减免能力 + 常数g)
单位绝对实力 = hp * dps * (1 + 伤害加深能力 / 常数f) * (1 + 伤害减免能力 / 常数g)
常数f 和 常数g的设置,如相等,即表示初始(伤害加深与减免都为0)时造成100%伤害。
这一条可作为魔兽的护甲免伤计算公式的替代
4.综上,在只考虑这几项对抗属性的情况下
单位绝对实力 = hp * dps * (1 + 命中 / 常数a) * (1 + 闪避 / 常数b) * (1 + 暴击能力/常数c) * (1 + 免暴能力/常数d) * (1 + 伤害加深能力 / 常数f) * (1 + 伤害减免能力 / 常数g)
以上,目的是为了计算方便。
|
|