d*?
dmg_max?dmg_minstr?100ar2Alvl**(1?dmgr)**
2100ar?drAlvl?Dlvl 其中dmg_max为武器攻击力上限,dmg_min为武器攻击力下限,ar是attack rating的简写,具体公式为ar?def?4.28;dr是defence rating的简写,具体公式为dr?dex/4(dex为受攻击方的数值)。
举例而言,当一个20级,力量敏捷均为50的野蛮人,在使用伤害为10-20的单手剑对同样等级,dex为60,物理减免50%的Boss进行攻击时,其单次平均伤害为10.35,用这个数值乘以输出频率(1/输出桢数),乘以该级别下野蛮人的血量,就可以得到该野蛮人在对该Boss的战斗力数值。 综合使用护甲与物理减免,这与D&D 的基本思路是类似的。 2.《魔兽争霸3》 《魔兽争霸3》中没有攻击力,只有防御力对伤害进行减成。其具体计算公式为:
d*?dmgX*1*f(ac,dc)
1?defY*0.06当DEFY>0的时候 当DEFY<0的时候
d*?dmgX*(2?0.94-defY)*f(ac,dc)
其中ac为攻击类型,如普通攻击、穿刺攻击、攻城攻击等,dc为防御类型,如轻甲、
中甲、重甲等。在《魔兽争霸3》里,不同的攻击类型和不同的防御类型组合,会产生不同的破坏系数。在这里,随着防御力增加,由此带来的防御力减小无限趋近于100%但不能达到。
这两个公式看似复杂,其实都蕴藏着很简单的数学原理。我们可以看到当defY增加1
的时候,对于X方来说,dmgX增加6%刚好可以抵消因为Y方defY加1带来的效果,而6%的伤害加成也就是6%的战斗力加成,因此对于魔兽争霸里单位的数值评估,每一点防御力对应了6%的战斗力。
当defY<0时,我们可以看到,防御力为-1,正好增加了6%的伤害。当防御力为-2的
时候,增加的伤害为11.64%,平均每点的效果接近6%,但是又略有降低,为什么不采用
dmgX*(1?0.06*defY)呢?个人猜测是因为这个公式规定了降低对方防御力的极限作
用,为200%。而另一方提升防御力的极限效果是攻击伤害为0。如下图
10
《魔兽争霸3》中的防御效果
整体来看,这样的公式效果使得攻击值就在0-200%之间摇摆。并且都在正常情况下,都趋近于每点防御力6%的效果。
3.《英雄无敌3》
《英雄无敌》的大致伤害公式如下:
d*?dmg?[1?(attp?defm)?5%] (当attp?defm) d*?dmg?[1?(attp?defm)?2.5%] (当attp?defm)
另外,为了保证平衡性,设定了攻击力与防御力的效果上限,攻击力加成不超过400%,
防御力减成不超过70%。也就是说,当(attp?defm)超过60或者小于-28时,该项则达到极值。 当然,《英雄无敌》作为策略类游戏的经典之作,不会这么简单,其物理伤害的直接公式为:
(1) 若进攻方的攻击点数大于或是等于挨打方的防御点数时,单个生物的伤害公式
是:
d*?dmg?[1?(attp?defm)?5%?J?C?E]?(1?B)?(1?M)?(dmg?Y?Z)?F(2)若进攻方的攻击点数小于挨打方的防御点数时,伤害公式又改为:
d*?dmg?[1?(defm?attp)?2.5%]?(1?J?C?E)?(1?B)?(1?M)?(dmg?Y?Z)?F 其中J代表加大伤害的技能。如攻击术(近身)、箭术(远程)、骑兵的冲锋技能等;C代表幸运、致命一击等加成因素;E代表特定的兵种仇恨(天使与恶魔、泰坦与黑龙、火怪
11
与灯神);B代表护甲术;M代表降低伤害的魔法,如魔法盾(近身)、空气盾(远程);DMG是每个单位的平均杀伤力,在数值上等于上下限的均值;Y和Z分别代表由诅咒和祝福引起的伤害加成;F代表一些战场因素,如远距离情况下的射击折半、城墙情况下的射击折半、远程部队的近身攻击折半等等。 其简化公式为:
dmg*?d?N?(1??BN)??[1?In]
为什么要做以上设定呢,在《英雄无敌》里,影响伤害的因素是非常多的。从前面的公式可以看到,光对伤害进行加成的就有幸运、致命一击、兵种仇恨、祝福,对伤害减成的也有魔法、诅咒、距离、特定攻击类型等等。在同一方向的多重效果组合上面,对于伤害加成,如果采用连乘,那么伤害的上限将高到远远大于预设的地步。攻击加成*幸运*兵种仇恨*祝福加成的情况下,可以达到10倍于正常伤害的水平。而对于伤害减成,如果采用连加形式,将很快减少到0%以下。即使没有到0,在这种状况下,任何一点伤害减成都将对战斗力造成极大的影响。在这种情况下,为了保持攻防的相对稳定性,对于攻击加成采用连加,对于攻击减成采用连乘是非常合理的。
4.《魔兽世界》的伤害计算
在《魔兽世界》中,基础的伤害来自于武器,然后以角色的指数进行加成,而受攻击方的护甲则对伤害进行减成。在只考虑普通物理攻击的情况下,《魔兽世界》的输出公式如下:
其中Bn代表所有能够对攻击力造成加成的因素,In代表所有对攻击力造成减成的因素。
*以上《英雄无敌》部分资料引自www.heroworld.net.
d*?(dmg?AP0.75*AM)*(1?) 14AM?85lvl?400在这个公式下,我们看到,角色的能力影响,至少包含了如下因素,一、武器的直接伤
害值。二、角色的能力影响。主要体现在AP方面,因为AP主要取决于人物的力量、敏捷指数。三、对方的护甲值。护甲极限效果,是伤害减免75%。四、级别对护甲值产生反向影响。级别越高,角色的护甲值随之上升,如果缺少这一参数,伤害减免将越来越大,因此需要通过计算将之抵消掉。
12
第二节 多个战斗单位的战斗过程
在游戏中,玩家常常会组队与怪物进行战斗,会出现多个玩家与多个怪物战斗的情况。在有的游戏中,玩家甚至直接指挥多个单位,与怪物或者敌对势力进行战斗(如《破碎银河系》),那么,在多个单位的情况下,战斗的结果会如何呢?
法国元帅福煦曾经提出过这样一个模型:假设红军兵力是蓝军的2倍,每个人每分钟射出的子弹数一定,那么在相同的时间内红军射出的子弹就是蓝军的2倍。如果每枚子弹击中敌人的几率也一定,那么相同时间内蓝军的损失数量就是红军的2倍,而这将进一步加大两军的数量差距,直到蓝军被彻底击败。 在这里,福熙提到了多人战争的一个趋势,就是起初的优势会随着战斗过程的进行而被逐渐扩大,这让我们看到了多人战斗过程绝对不是直接采用承受乘以输出,然后相减这样简单,或者说,我们要换用一种方法来对FC进行计算。现在就用一个基本的数学模型来进行说明。
最简单的多单位战斗
我们先看最简单的战斗情况。在这里要提出几个基本条件:
基本假设:
一、 假设任何一个单位都能够连续不停的对对方的单位进行攻击,直至被摧毁或者
战斗结束。
二、 双方都采用最优的战斗模式。比如说一方每个单位的生命为100,那么在受
到240点伤害时,2个单位死亡,还有一个单位受到40点伤害,而不是60个单位受到4点伤害或者80个单位受到3点伤害。
三、 每方的攻击力与战斗单位的数量成正比。
1.假设现在一方有X0个单位,另一方有Y0个单位,(假设X0>Y0),杀伤力为P(P为单位时间输出伤害与战斗单位生命的比值,比如《星际争霸》中,机枪兵对射,每个机枪兵攻击力为6,生命为40,那么杀伤力就是6/40。
那么战斗过程的微分方程为:
dx??Py (1) dt
dy??Px (2)dt加上初始条件,t=0时,x=X0,y=Y0
解这个方程,可以得到如下解
13
x=
X0?Y0?PtX0?Y0Pte?e 22X0?Y0?PtX0?Y0Pte?e 22 y=
当t=
1X0?Y022时,y=0,Y方被消灭,此时X方还剩下X0?Y0。 ln2PX0?Y0双方的战斗曲线图如下:(各条曲线分别代表100vs60,100vs80,100vs90,100vs95和100vs100情况下的战斗过程)
这个结果虽然精确,但是仍然不够直观,我们来对这个数学方程进行简单的变幻,将(2)式左右互换,然后与(1)式相乘,消去两边的-P,可以得到:
xdxdy?y dtdt进一步得到:
d(x2)d(y2)? dtdt从0到任何时间单位t积分,我们可以得到一个非常重要的结论:
222X0?x2t?Y0?yt
写成:
14
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库战斗过程的基本数值知识与理论--网易(3)在线全文阅读。
相关推荐: