游戏开发论坛

 找回密码
 立即注册
搜索
查看: 37135|回复: 34

[原创] 乘法公式下的战斗力计算

  [复制链接]

2

主题

9

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2015-5-17 21:30:36 | 显示全部楼层 |阅读模式
       用数值来衡量角色的战斗能力对于玩家和策划都是非常有意义的。对于玩家来说,战斗力是养成结果的最直观体现,是玩家养成成就感的最直观来源。对于策划来说,角色战斗力是人物在战斗上的标尺数值,直接影响关卡战斗数值、职业平衡等等;同时,战斗力也是战斗数值和养成数值的接口,是调节养成节奏、控制不同档次玩家差距、分配不同养成系统权重时的最重要参考。

       Einsphoton先生《如何高效设计游戏——关于战斗力计算方式的总结中给出了战斗力计算的基本概念,并给出了一个基于减法公式的“相对战斗力”的简单例子,但并未涉及乘法公式的内容。

      众所周知,乘法公式是游戏常见的另一种计算公式,两者各有特点,并没有优劣之分。但在计算战斗力时,乘法公式比减法公式要简单,且能得到更精确的结果,即“绝对战斗力”。

  另外,有了“绝对战斗力”,我们就可以很方便的解决和战斗力比较相关的问题,如一个人能同时打几个怪等。

  一、战斗力计算基础

      游戏角色战斗必不可少的两个基础属性是攻击和血量,其中攻击的概念可以被抽象成单位时间的伤害,在回合制游戏里就是攻击,在更多的情况下就是DPS。

  若角色A可以战胜角色B,则易得:

       图片1.png

      即A在B之前杀死了对方,将上式变形可得:

       图片2.png

      当上式满足时,角色A一定可以战胜角色B,反之亦然,因而战斗力的最基础形式即为:

      图片3.png

  二、乘法公式下的“绝对战斗力”

       在纯粹的乘法公式体系下,所有的战斗属性都可以被等效成攻击和血量。在此,令考虑攻击、暴击、攻速等属性后的单位时间伤害为等效攻击。同理,等效血量即为考虑生命、护甲、闪避等属性后的角色生存能力。下面以一个基于乘法公式的战斗模型为例来介绍乘法公式下的战斗力计算及其“绝对性”。

       设玩家有攻击Atk、暴击Crt、血量Hp、护甲Arm四种属性,战斗逻辑是每秒攻击一次,先根据暴击率判断是否暴击,进而得到最终伤害,再根据对方护甲减伤比将最终伤害减少成实际伤害,最后将对方血量扣除实际伤害。

       常见的暴击率CrtRatio和护甲减伤比ArmRatio公式如下:

      图片4.png
      其中k为一个常数,powerLv是根据等级得到的一个等级修正系数。

      当时间足够长时,暴击实际就是将攻击力提升一个固定的百分比,令暴击伤害为150%,则等效攻击EqAtk为:

       图片6.png

      另一方面,护甲减伤比实际是将血量增加了一部分,则等效血量Hp为:

       图片7.png
      由上可得,此模型的战斗力为:

    图片8.png

      在打木桩的情况下,此式即为角色的“绝对战斗力”,谁由此式计算的值大,谁就一定能获胜。这得益于乘法公式中的防御类属性(如护甲)可以被准确的换算成等效生命,而不用考虑其与攻击类属性的关系,进而避免了减法公式中需要给定一个参考护甲值的问题。

      注意,上式计算的实际上是同等级情况下的战斗力,如果双方具有等级差,powerLv需要做相应的替换,这样才能够得出准确战斗力。在具体工作中,往往只计算同等级的战斗力作为该等级战斗力标准数值,但在做成长比较等跨级战斗力比较时,应记住这种比较是近似的而不是准确的。

      另外,由上式易得,四种属性与战斗力都是线性关系,这是乘法公式与减法公式最重要的区别之一,也是乘法公式的两种常见具体形式的设计初衷:
       图片9.png

  三、战斗力比较

      由前文已知,战斗力高的角色一定能战胜战斗力低的,但是在实际工作中,尤其是关卡数值上,我们往往更关心一些更复杂的情况,如一个角色能连续打几个怪物,或者一个角色能同时打几个怪物等等。

      当角色A战胜角色B时,有:

       图片10.png

     由上式易得,若角色A能连续战胜N个角色B,则:

      图片11.png

      下面考虑角色A能同时打几个角色B。设A能同时打N个B,在此情况下,B方的等效攻击实际上是N个等效攻击B的和,当A打死一个B时,即A输出了一个等效血量B的伤害后,B方的等效攻击降为了(N-1)个等效攻击B,由此可得:

       图片12.png

       这两个公式可以作为关卡和怪物数值设计中的重要参考,具体应用方法很多,在此就不赘述了。需要注意的是,由于减法公式体系下不能很好将等效攻击和等效血量拆开,所以上述两式只在乘法公式上能得到准确结果,这也是乘法公式相对减法公式的一个优点。

      四、总结

      这周末偶然看到了Einsphoton先生《如何高效设计游戏——关于战斗力计算方式的总结一文,因而写了些很浅显的想法,欢迎大家指正,如果也能对读到的人有所启发,我就很高兴了。

      另外,角色战斗力做为战斗数值的基础,还有很多值得研究的地方,我会在有时间时把我浅显的想法继续分享给大家。

3

主题

18

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
发表于 2015-5-18 01:44:01 | 显示全部楼层
很有趣

看上去是最早的RPG回合制,或者是手游类卡牌之类的绝对数值比较
没有涉及到随机性,跑位等

2

主题

9

帖子

161

积分

注册会员

Rank: 2

积分
161
 楼主| 发表于 2015-5-18 08:40:03 | 显示全部楼层
十二邪神 发表于 2015-5-18 01:44
很有趣

看上去是最早的RPG回合制,或者是手游类卡牌之类的绝对数值比较

对于单次战斗,数值随机是有意义的,但对于大规模样本则不然

而走位等操作因素我觉得是不可能准确量化的,对于数值策划来说,至多为不同职业、不同操作水平玩家估计一个修正值

8

主题

1801

帖子

3450

积分

论坛元老

Rank: 8Rank: 8

积分
3450
发表于 2015-5-18 10:56:55 | 显示全部楼层
e神是个抠脚大汉,可以把(女士)去掉了,哈哈

22

主题

105

帖子

463

积分

中级会员

Rank: 3Rank: 3

积分
463
发表于 2015-5-18 11:23:11 | 显示全部楼层
ab_946 发表于 2015-5-18 10:56
e神是个抠脚大汉,可以把(女士)去掉了,哈哈

是帅气并且多才多艺的阳光男好么

4

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2015-5-18 14:12:12 | 显示全部楼层
像闪避这种属性怎么算价值,完全根据对方攻击力才能确定

8

主题

1801

帖子

3450

积分

论坛元老

Rank: 8Rank: 8

积分
3450
发表于 2015-5-18 15:23:26 | 显示全部楼层
jy00784380 发表于 2015-5-18 14:12
像闪避这种属性怎么算价值,完全根据对方攻击力才能确定

乘法公式下,闪避完全可以转换到自身的生命比例上。
例如20%的闪避率,相当于有效生命值提升了20%。

0

主题

114

帖子

753

积分

高级会员

Rank: 4

积分
753
发表于 2015-5-19 09:02:33 | 显示全部楼层
还是在做数值,没到体验这层
毫无意义

2

主题

9

帖子

161

积分

注册会员

Rank: 2

积分
161
 楼主| 发表于 2015-5-19 09:46:28 | 显示全部楼层
thbwin 发表于 2015-5-19 09:02
还是在做数值,没到体验这层
毫无意义

一个工具而已 你想太多了

4

主题

15

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2015-5-19 10:23:10 | 显示全部楼层
ab_946 发表于 2015-5-18 15:23
乘法公式下,闪避完全可以转换到自身的生命比例上。
例如20%的闪避率,相当于有效生命值提升了20%。 ...

为啥呢,闪避不应该是增加对方攻击力*闪避几率的血么,另外闪避的属性价值线是怎样的呢,因为到了100%闪避就等于无敌了(不考虑有不能闪避的攻击),那么1-99的时候是直线增长还是曲线,同问的还有暴击,这俩都是到了临界点后就没有任何价值了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-4-29 16:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表