二、怪物防御、破招等伤害计算原理
先来谈怪物防御。
首先我们先来看这个:

25012的物理防御,减伤率是58.2%。

而10440的防御,减伤率是36.7%。
现在的游戏防御力设计,一般都是采用一个公式:
如果防御力为x,那么减伤率=f(x)/(c+f(x))
c代表常数,x代表防御力的函数。例如英雄联盟,减伤率就等于护甲/(100+护甲)。
那么DNF是否也类似呢?我们先来猜想f(x)=x的情况。
简单的一元一次方程,解得c≈18000(因为减伤率只保留了一位小数,所以这里是解了几个方程后采用的近似值)。
经过验证,对于90级的角色,此公式正确。
但此时我们注意到一点:
“被相同Lv的对象攻击时”
那么,DNF中是否存在等级压制系统呢?
肯定是存在的,不然也不会专门那么说。
那么我现在建立了一个小号,等级为17级,我把他的面板发上来给大家看一下。

此时再解方程:6549/(c+6549)=65.8%
c≈3400,注意到刚好是17的200倍。
那么我们猜想:c=等级*200?
于是我又拿了我的72级光枪过来:

c=14400,21837/(14400+21837)=60.261%,和显示的一样(四舍五入后)。
因此,我们得到结论:
减伤率=防御力/(等级*200+防御力)
而这个等级是攻击方等级还是防御方等级呢?这个我们接下来继续讨论。
先来谈怪物防御。
首先我们先来看这个:

25012的物理防御,减伤率是58.2%。

而10440的防御,减伤率是36.7%。
现在的游戏防御力设计,一般都是采用一个公式:
如果防御力为x,那么减伤率=f(x)/(c+f(x))
c代表常数,x代表防御力的函数。例如英雄联盟,减伤率就等于护甲/(100+护甲)。
那么DNF是否也类似呢?我们先来猜想f(x)=x的情况。
简单的一元一次方程,解得c≈18000(因为减伤率只保留了一位小数,所以这里是解了几个方程后采用的近似值)。
经过验证,对于90级的角色,此公式正确。
但此时我们注意到一点:
“被相同Lv的对象攻击时”
那么,DNF中是否存在等级压制系统呢?
肯定是存在的,不然也不会专门那么说。
那么我现在建立了一个小号,等级为17级,我把他的面板发上来给大家看一下。

此时再解方程:6549/(c+6549)=65.8%
c≈3400,注意到刚好是17的200倍。
那么我们猜想:c=等级*200?
于是我又拿了我的72级光枪过来:

c=14400,21837/(14400+21837)=60.261%,和显示的一样(四舍五入后)。
因此,我们得到结论:
减伤率=防御力/(等级*200+防御力)
而这个等级是攻击方等级还是防御方等级呢?这个我们接下来继续讨论。