《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议( 二 )


不能理解本条的人 , 请翻开高中数学教材或者高数教材,翻到函数和导数的章节 , 看看单调递增和单调递减的定义是什么 。
2.来分析一下游戏中常见的两种伤害结算系统 。第一种是伤害=攻击力-防御力,第二种是先将防御力转为一个减伤百分比,然后计算伤害=攻击力*(1-减伤百分比) 。第一种公式在早期游戏中用的比较多 , 现在已基本被淘汰 , 或者转为成格挡系统辅助存在 。第二种公式是目前绝大多数游戏采用的计算方式 。
(1)为何第一种公式基本被淘汰了呢?想象一下,攻击力刚好等于防御力的时候,则需要击杀的攻击次数是无穷大;当攻击力-防御力分别等于1和2的时候 , 则需要击杀的次数前者是后者的两倍 。攻击力以及防御力的收益会在攻击-防御=0的附近发生极大的偏离,而在无穷大处则趋向于线性 。用图象来直观的表示(假定生命值为10000,每秒攻击1次):

《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
那么在什么时候需要用来作为辅助存在的系统呢?当需要体现“蚁多也咬不死象”或者“你们这些渣渣,数量再多破不了我的防有什么用”的时候,可以引入格挡系统(只是直观的命名为格挡系统,游戏里未必要体现为格挡) 。这点在武侠RPG里没有必要体现 , 在仙侠RPG或者魔幻RPG里可以适当的使用,使得战斗系统更符合剧情逻辑 。
(2)在有了第二种伤害结算公式的前提下,我们继续讨论减伤系统 。将对应数值的散点图画出来,可以看出比较接近于在1000前后分别采用两个函数,在两个区间上,减伤百分比和防御力近似线性相关 。
《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
如果这个贴子的数据没有出错的话 , 只能得到在1000的两边图象近似线性,而不能得到精确的公式,因为Δy/Δx的变化较大 , 而线性函数的Δy/Δx是不变的 。
《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
我们来分析一下防御力跟减伤百分比线性相关的情形 。
假定减伤百分比=防御力/1000 , 那么在原始伤害=10 , 生命值为100的条件下,生存时间和防御力关系的曲线图如下(每秒攻击一次):
《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
图像上直观的判断是,在800防御以下,防御的收益近似线性,而在800防御以上 , 则防御收益变化的非常快 。
其实这很好理解,从公式上看无非就是一个倒数函数,从具体数值上看,减伤百分比从90%到100%,实际收益变化是无穷大 。所以,当采用这种公式的时候,需要用几种方式避免防御的收益在某个范围内过大 。
常见的方法有两种:
(2.1)设置减伤上限 。从图象上看这个减伤百分比最好不要超过80% , 这也是为何过去十几年不少欧美游戏抗性上限普遍采用70%-80%的原因 。
现在我们继续用上述图象中的数据,分别采用0-700、0-750、0-800的数据(防御力每10取一个数据)进行线性拟合,来看看决定系数R^2 。
《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图

《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图

《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
如果数据增加到900,则R^2=0.7001,下降的非常快,990的时候R^2只有0.2305了 。
(2.2)采用阶梯函数 。防御力的数值越大,相应的系数就越小,以此来降低单位防御力在数值较大时的收益 。
举例:当防御力小于500时,减伤百分比=防御力/1000;当防御力大于500小于2000时,减伤百分比=50%+(防御力-500)/5000,当防御力大于2000时,减伤百分比=80%+(防御力-2000)/40000 。
在原始伤害=10,生命值为100的条件下,生存时间和防御力关系的曲线图如下(每秒攻击一次):
《侠客风云传》战斗系统及伤害数值详细分析攻略 战斗系统分析和合理化建议

文章插图
图象上可以明显的观察到,只有在断点右侧单位防御的收益会突然下降,其他所有点附近,单位防御的收益都是单调增 。用这种方法也能避免防御收益上涨过快的问题,然而需要造一堆公式,也不是很方便 。
(2.3)那么怎样的减伤公式才是合理的呢?从图象分析重我们可以直观的感受到,最好需要有一个减伤公式 , 使得EHP和防御力的数值线性相关 。事实上 , 目前的主流竞技游戏(dota2 , LOL)都是采用这样的护甲公式 , 以及暴雪的部分游戏 , 如魔兽争霸3、暗黑破坏神3 。

推荐阅读