RPG游戏数值策划 - 战斗数值基础

2024-07-30  本文已影响0人  林海舟

因为不同游戏的战斗机制的不同,实际上战斗数值是一个非常复杂的问题。看了一些文章都是直接从数学公式入手,游戏小白看起来比较难。写这篇文字主要是简单的厘清概念,以此来说明战斗数值策划过程中考虑的关键因素。

基础概念

基础属性

RPG游戏是基于战斗为主题的游戏,其主要的核心属性主要为生命、攻击、防御三个基础属性。随着游戏玩法的丰富,在这三个属性下面有产生了二级、三级的属性。如攻击属性拆分为魔法攻击、物理攻击等二级属性,还可以继续拆分成命中率、攻击速度等属性。

RPG游戏里面一些常见的属性如下:

不同游戏对上述概念的定义、机制略有不同,甚至连单词和缩写都略有不同,建议参考具体游戏的文档和说明。
有些游戏还有护盾、元素伤害、眩晕等机制,这里罗列只是一些通用的概念。

核心概念

在开始介绍战斗计算之前,有必要了解几个游戏策划常用的核心概念。这些概念虽然很少直接展现给玩家,但是却是做数值策划时必须考虑的因素。

DPS(damage per second,每秒伤害输出),是指角色每秒综合输出的伤害总量。DPS叠加了装备、技能、等级等影响,DPS是衡量一个角色输出能力的重要指标,反映了角色在战斗中输出伤害的效率。

DPS跟角色的伤害输出(含自身攻击属性、装备和技能加成等)和角色攻击频率相关。DPS 可以简单计算如下:

DPS = DMG * HitsPerSecond

另一个伤害相关的概念是 DPH(damage per hit,单次攻击伤害) ,更侧重于衡量角色在特定技能或武器装备加成下单一次 的攻击伤害的水平。

DR(damage reduction,减伤率)是指角色受到伤害时,因为角色防御而减少的伤害比例。DR 是衡量角色防御水平的一个重要指标,反映了角色在战斗中的生存能力。

对方攻击角色时会因为角色的防御(含自身防御、装备加成等)而减少一部分伤害。DR和伤害的关系可以简单计算如下:

DMG = ATK * ( 1 - DR)
DR = 1 - DMG / ATK

DR是一个综合性的概念,跟游戏的伤害公式、游戏的玩法机制有关系。

如果伤害公式选择的是减法公式( DMG = ATK - DEF ),则DR = (ATK - DEF)/ ATK。如果伤害公式选择的是乘法公式( DMG = ATK * (1- DR)),则直接得出DR。

不同游戏的伤害计算公式不同,DR计算也会不同,但是DR仍然可以作为一个衡量角色防御水平的一个重要概念。

EHP( effective health points,有效生命值),是指角色在拥有防御(含角色自身防御、装备和技能等加成)时拥有的有效生命值。有效生命比基础生命更能反映角色在战斗过程中的生存能力。

有效生命可以简单的计算如下:

EHP = HP / (1 - DR)

即因为有角色减伤的存在,相当于角色拥有了更多的有效生命。

TTK(time to kill,击杀时间)是指角色击败对手所需要的时间。TTK作为一个衡量战斗节奏的重要指标。在游戏过程中,相比于玩家能直观感受到的战斗动作、战斗特效等因素,在做数值策划时,更应该关注TTK。

TTK可以简单的计算如下:

TTK = EHP / DPS

在RPG游戏中,不仅要考虑战斗的输赢,还必须考虑角色在PVP、PVE过程中的TTK。合理的设置TTK,有助于为用户创造不同的战斗体验。

伤害计算

伤害计算公式是一个游戏最核心的设定,决定了游戏的玩法机制。合理设定伤害计算公式,不仅能让忘记获得良好的游戏体验,也能促进游戏健康、合理的发展。

伤害计算公式

RGP游戏的战斗基本上是围绕着不同角色的生命HP、攻击ATK、防御DEF的计算。当然也有一些复杂的游戏有特殊的机制,这里主要以基于HP、ATK、DEF的基础计算公式来阐述主要考虑的因素。

RPG游戏中比较常见的伤害计算公式主要有减法公式、乘法公式,以及由此派生出来的各种变种的公式。

减法公式

减法公式如下:

DMG = ATK - DEF

减法公式的主要特点有:

综上所述,减法伤害计算公式适用于:

  1. 需要设置门槛的关卡类游戏。利用战斗时间不线性变化的特点,让角色在关卡临界值的上提升属性时,通关效率显著提升。
  2. 需要频繁计算属性加成的策略类游戏。利用减法公式简单易计算的特点,如战棋类游戏,让玩家频繁计算属性更容易一些。
  3. 不需要角色成长的休闲类游戏。因为角色无需成长,避免了减法公式在成长过程中容易失控的缺点。

乘法公式

乘法公式如下:

DMG = ATK * ( 1 - DR%)

其中,DR%为防御减伤率。一些游戏对减少率的计算如:DR% = DEF / (DEF + α) [ α为常数]。那么这个公式可以表示为:

DMG = ATK * ( 1 - ( DEF / ( DEF + α) ) ) [ α为常数 ]

乘法公式的特点有:

综上所述,乘法公式适用于如下游戏:

  1. 角色成长玩法较深度的游戏:利用乘法公式收益可控的特性,减少出现高级玩家完胜低级玩家的优势。
  2. 有多种角色或GVG类的游戏:乘法公式的有效生命值只涉及角色自身防御水平,在多种角色或组队战斗时,比较容易调节角色之间的平衡性。
  3. 角色成长自由度较高的游戏:乘法公式攻击和防御的收益相对平衡,比较难以通过堆叠单一属性来获取较大优势。

伤害公式的变化

上文只是以HP、ATK、DEF来举例说明伤害计算公式,在实际的游戏中并不会这么简单,不同的游戏对伤害计算公式还有着不同的考量。

以魔兽世界的伤害计算公式为例,其采用了乘法公式为基础,在公式里面增加了攻击方的等级参数:

DR% = DEF / (DEF + 400 + 85 × LEV_a) [LEV_a为攻击方的等级]
DMG = ATK * (1 - DEF / (DEF + 400 + 85 × LEV_a) )

防守方的防御会受到攻击方等级的影响,等级参数为跟攻击方等级相关的函数f(lv)。攻击方的等级越高,防守方能的免伤率越低。这个改动提供了等级的收益,使得高等级角色能更简单的战胜低等级角色,引导角色升级。

还有一部分游戏增加了防守方的等级系数进行修正:

DR% = DEF / (DEF + α + LEV_d) [α为常数,LEV_d为攻击方的等级系数]
DMG = ATK * (1 - DEF / (DEF + α + LEV_d系数) )

咋一看有点奇怪,防守方等级高了免伤率却更低了。但是也可以利用在这个问题,让DEF获得了更多的投放空间。在LEV_d变大时,DEF可以获得更高得增长,让RD%的增长可控。

战斗力计算经常是不太准确的(这里不展开说明),为了让战斗力更准确的表达玩家强弱区别,也有一些游戏会在伤害公式里面增加战斗力的参数,如:

DR% = DEF / (DEF + 100 + f(HT_a, HT_d))) [f(HT_a,HT_d)为攻击方和防守方的战斗力差值参数]
DMG = ATK * (1 - DEF / (DEF + 100 + f(HT_a, HT_d))))

加入了战力差值作为修正参数,更高的战斗力可以在战斗过程中起到压制作用,提升了战斗力这个数值的作用,引导玩家最求更高的战斗力水平。

以暗黑破坏神的公式为例,采用了除法公式。当然可以把除法公式看成是乘法公式的一种变体。

DMG = ATK * ATK / ( ATK + DEF )
等价于 DMG = ATK * (1 - DEF/ (ATK + DEF))

从公式可以看出,增加了攻击方攻击属性ATK的收益。角色增加ATK时,可以获得非线性的收益。

为了提升游戏的趣味性,有部分游戏为伤害值增加了一个随机数。

DMG = ATK * (1 - DEF / (DEF + α)) * r [r为随机数]

r有两种计算方式,一种是直接取随机数如 r = Random(0.9,1.1)。最终伤害收益为原先收益的 90%~110%。另一种是利用筛子随机数DnD的方式,如 r = 3d6,3个点骰子投掷6次,求和得出。其取值为3-18之间,最终伤害的收益为原先收益的3-18倍。两种随机方式各有优劣。

引入复杂机制

上文只是给出了基础的公式,为了丰富游戏的玩法,不同游戏为攻击和防御增加了不同的玩法,如暴击、格挡等。

以王者荣耀举例,王者荣耀有物理伤害和法术伤害的机制,这里以其中一种伤害举例。

王者荣耀采用了乘法公式作为基础。其伤害公式为:

DMG = ATK * ( 1 - RD%)

因为有真伤机制,真伤无视防御直接对角色造成伤害,所以真伤TD无须参与免伤率的计算。

DMG = ATK * ( 1 - RD%)+ TD

王者荣耀基础的免伤公式为:

RD% = DEF / (602 + DEF)

王者荣耀有护甲穿透的机制。穿透类型有两种,一种是数值型的穿透AP,一种是百分比型的穿透AP%。公式为:

RD% = ((DEF - AP) * (1 - AP%)) / (602 + (DEF - AP) * (1- AP%))

王者荣耀还有复杂的攻击加成、暴击、格挡等机制,这里只作为简单阐述,感兴趣的可以查看官方论坛,这里不往下展开。

概率的计算方法

有些游戏在伤害公式里面存在多个概率型的参数,如命中率、暴击率、格挡率等。在游戏中,如果先计算命中率,再计算暴击率。如果攻击没名字,那么暴击率就没意义了。

为了应对这种情况,伤害计算公式里面概率型属性的计算方式一般有两种方式,瀑布型算法和圆桌型算法。

瀑布型算法就是把概率属性先按优先级依次排序,然后依据优先级从高到底依次判断概率是否生效。

假设设定命中率优先级比暴击率高,若命中率为80%,暴击率为10%。那么命中率先计算为80%,而暴击必须在命中基础上才能计算,其概率为80%*10%=8%。

瀑布型算法可以让所有的属性都可以参与计算,但是会导致优先级较低的属性收益低于其显示的值,而且优先级越低的属性值其实际作用越低。

在瀑布型算法中,优先级较低的属性可以设置得大一点以对冲其优先级带来的损失。

圆桌型算法就是把所有的属性像圆桌一样,平铺在一起根据各个属性大小占比进行计算。例如将命中率80%(即闪避为20%)、暴击率10%、破甲5%放在一起,通过计算命中哪个区域则哪个区域的规则生效。

圆桌型算法如果所有属性加在一起超过100%,则直接舍去优先级较小的属性,如果不足100%则剩下当成普攻。

圆桌型算法的优势是可以保持各个属性的效用跟面板展示的一致,不会因为优先级低而衰减。但是,也会因为优先级较低而导致部分属性无法参与计算。

伤害公式的扩张应用

在实际策划过程中,经常会出现一个公式无法满足所有场景的情况,参数调整调来调去按了葫芦又起瓢。这种情况下可以采用如下方式:

一个单一的公式经常会随着角色成长导致数值在前期、后期收益失控的情况。这种情况可以采用分段函数来规避,为角色的前期、中期、后期分别设置不同的公式、参数。

当然,在实际操作过程中,经常是以公式计算作为基础,然后通过表格对部分数据进行微调。

对于一些复杂的函数会对不同的角色采用不同的伤害计算公式或者参数。例如在神仙道中,法师和战士分别采用乘法公式和加法公式计算伤害,在王者荣耀中为孙悟空单独设置了暴击伤害系数等。

伤害计算公式多种多样,但是在选择时主要遵循一些基本原则:

最后,还是要强调一下,没有最好的数据策划只有最合适的数据策划。在符合玩家预期的情况下,尽可能平衡各方面收益才是最重要的。

上一篇下一篇

猜你喜欢

热点阅读