乘法公式的战斗力计算过程

发表于2015-10-19
评论8 6.6k浏览

1.战斗力模型

在游戏中,战斗角色综合能力的反映对于玩家来说,角色的战斗玩家比较和感知能力对于策划来说,准确的战斗力评估于游戏中角色能力平衡和成长设计。乘法公式因其自身的特点,战斗力评估容易做到相对准确,但在实际计算过程中也会遇到一些问题。

为了问题阐述的完整性,本文在第1、2部分有引用,相关文章在结尾处已给出,以方便大家查阅。本文侧重点在于阐述实际过程的一些问题。

为了更清晰的说明问题游戏角色的战斗力属性简化为以下几种:

ATK攻击

DEF防御可转化为减伤率DefRatio

CRP暴击强度可转化为暴击率CrpRatio

HP:血量

SPD:玩家攻击速度

其中

DefRatio=DEF/DEF+A_DEF*FLV  A_DEFDEF相关参数,FLV等级参数

CrpRatio=CRP/A_CRP*FLV      A_CRPCRP相关参数,FLV等级参数

据此,我们可以得出玩家的有效攻击EDPS有效生命EHP

EDPS=ATK*(1+CrpRatio*CrpBonus)*SPD     其中CrpBonus为暴击加成

EHP=HP/(1-DefRatio)

2.评判标准

乘法公式通过双方的攻击回合数即可比较角色AB实力。 

时,B获胜

A获胜

经过变形可知比较 EHPA*EDPSA EDHPB*EDPSB之间大小关系即可获得AB战斗结果以上部分仅代表理论情况,未考虑实际的最后一击血量残留、出手顺序等。

作为战斗力的评估同时可以获得另一个优势通过战斗力的比较,可以获得双方对战后的结果即战斗力残留。战斗力残留代表着战胜方在战斗结束后的剩余有效战斗力。

理想状态下,假设A能够战胜B

A战胜B所需要的回合为:

B在此过程中造成的伤害为:

所以A剩余有效生命为:

理想状态下,角色A剩余战斗力为:

这对关卡的设计付费与能力成长都能提供指导作用

3.实际过程

在实际过程中,ATKHP参数分布在游戏的不同系统中同时ATKHP等参数受到表现形式等方面的影响,比如技能/状态效果等,这些参数不能够以集中单纯数字直观体现,这对战斗力的计算提出了一定的要求。

游戏中的战斗力计算与实际的数据结构有直接的联系在此不再做相关展开。

我们以输出端技能/状态效果为例对EDPS做计算建立如下的层次

 

EDPS=(ATK数值相加)*1+ATK百分比加强相加)*1+ATK其他层次加强)

*1+Crit相加*1+Crit百分比加强相加)/FLV*A_CRP*CRPBONUS))

*1+伤害百分比加成)+固定伤害

游戏中的装备属性、被动技能、天赋等进行归类。

武器攻击数值人物攻击数值可以划分为ATK数值但是,对于很多技能效果,我们无法精准的量化影响,我们会尽量评估一个大致的战斗力效果和参表中的攻击对相邻单位造成25%。这些参数的评估需要根据游戏的实际情况,甚至不同PVEPVP模式中的表现形式都不相同。这一评估过程并不是在战斗力计算的时候完成在设计技能强度的时候,我们已经需要技能/效果相关的数值分配。

为了满足计算,EXCEL建表,我们增加两列用以评估攻击力如下表

技能

技能效果

参数1

参数2

战斗力

战斗力参数

移动攻击力加强

MOVE_ATK

30

 

ATK

30

 

血量每降低10%攻击增加2%

HP_DEC_ATK_INC

10

2

ATK_PER

10

攻击对相邻单位造成25%伤害

ATK_AREA

1

25

ATK_OTHER

10

4.战斗力呈现

实际游戏中,战斗力呈现方式一个问题

如果以上面定义的战斗力模型作为游戏中的实际显示会带来如下问题。随着等级的增加,人物的成长,战斗力越来越高这种增长并不是线性增长。

例如,设定以下常规参数:

初始修正4等级单位。即1拥有5级属性

每等级成长5攻击20血量血量/攻击回合比4

每过10的时候,等级成长在基础值上增加25%

角色等级达到N

攻击 ATK=4+N*5*1+0.25*INTN/10))

血量 HP =4+N*20*1+0.25*INTN/10))

战斗力4+N*5*1+0.25*INTN/10))*4+N*20*1+0.25*INTN/10))

INT取整计算。

战斗力随等级的关系如下表所示

 

 

等级

攻击

血量

实际战斗力

1

25

100

2500

2

30

120

3600

5

45

180

8100

10

87.5

350

30625

20

180

720

129600

30

297.5

1190

354025

50

607.5

2430

1476225

75

1086.25

4345

4719756.25

100

1820

7280

13249600

 

公式可知战斗力和等级平方级增长实际过程中,直接显示无太多的问题,在一些页游中,几百万的战斗力很常见

通常为了实际表现效果,我们会对最终的战斗力显示进行一定的修正

比如

  1. 乘以固定系数0.01
  2. 乘以等级相关系数。 0.2/4+N
  3. 开方相关修正。如 10*战斗力开方

相应效果如下表所示

等级

攻击

血量

实际战斗力

固定系数修正

等级系数修正

开方修正

1

25

100

2500

25

500

500

2

30

120

3600

36

600

600

5

45

180

8100

81

900

900

10

87.5

350

30625

306.25

2187.5

1750

20

180

720

129600

1296

5400

3600

30

297.5

1190

354025

3540.25

10412.5

5950

50

607.5

2430

1476225

14762.25

27337.5

12150

75

1086.25

4345

4719756.25

47197.5625

59743.75

21725

100

1820

7280

13249600

132496

127400

36400

 

在对攻击生存段属性价值比比较精准估计的情况下,很多游戏也会采用

战斗=有效攻击战斗力+有效生存战斗力

方式进行计算这甚至是主流的计算方式。

,如果 EHP/EDPS=ROUND

战斗力=EDPS*ROUND+EHP

也有一些其他战斗力评判方法,在此再赘述,根据自己的实际需求进行调整即可

5.说明

此文最初根据乘法公式的相关文章为基础先后参考了《如何高效设计游戏——关于战斗力计算方式的总结和《乘法公式下的战斗力计算》两文,未能展开过多的创新,主要关注点在实际项目中的一些具体计算过程。

在此一并感谢同事在自己实际计算过程中的指导,谢谢!

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引