欢迎光临散文网 会员登陆 & 注册

原神拆解6-再看战斗平衡

2022-03-23 18:19 作者:精通魔法的蓝孩子  | 我要投稿

        上回书说到,上一部分,我们了解了原神的战斗公式,现在,战斗部分的两个巨头-属性和战斗公式,我们算是都说完了,有了战斗公式,属性可以被表达,有了属性,战斗公式可以输出结果。那么两者相辅相成,构成了游戏战斗的高塔。


战斗公式与属性的融合---计算战力

        之前我们浅谈过战斗力的概念,当时我们说的概念名词为“等价战力”,讲的是各个属性之间的兑换关系,就像“汇率”一样,各个国家的货币由汇率构成联系,从而可以比较,而我们下面要继续再提出一个战力概念---“计算战力”。首先让我们从一个情景入手。

        如果把两个单位的战斗简化成回合战斗(即使战斗中的战斗时间也可以看作回合战斗回合数,比如把1s时间当作一个理想回合)。那么战斗的胜负,其实满足这一样一个条件,我们把战斗双方设为A,B。

A%E7%94%9F%E5%AD%98%E5%9B%9E%E5%90%88%E6%95%B0%3D%5Cfrac%7BA%E7%94%9F%E5%91%BD%E5%80%BC%7D%7BB%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA%7D%20

B%E7%94%9F%E5%AD%98%E5%9B%9E%E5%90%88%E6%95%B0%3D%5Cfrac%7BB%E7%94%9F%E5%91%BD%E5%80%BC%7D%7BA%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA%7D%20

        那么其实A获胜条件就是:A生存回合数>B生存回合数,B获胜条件反之。

        那么A获胜条件就可以写成:

%5Cfrac%7BA%E7%94%9F%E5%91%BD%E5%80%BC%7D%7BB%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA%7D%20%EF%BC%9E%5Cfrac%7BB%E7%94%9F%E5%91%BD%E5%80%BC%7D%7BA%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA%7D%20

        该不等式进行变形可以得到:

 A%E7%94%9F%E5%91%BD%E5%80%BC%5Ctimes%20A%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA%EF%BC%9EB%E7%94%9F%E5%91%BD%E5%80%BC%5Ctimes%20B%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA

        化简到这一步骤,我们就得到不等式两边都满足:均来自一个单位的属性。我们称:

 %E8%AE%A1%E7%AE%97%E6%88%98%E5%8A%9B%3D%E7%94%9F%E5%91%BD%E5%80%BC%5Ctimes%20%E5%B9%B3%E5%9D%87%E6%AF%8F%E5%9B%9E%E5%90%88%E8%BE%93%E5%87%BA

        但是,目前这还不是我们公式的最终版本,游戏中实际有防御力的免伤制约。接下来再来考虑一个场景,我们想一想,假设角色防御力为我们提供了50%的伤害减免,那么打在一个单位身上的原本100伤害,会被降低至50。那么我们在游戏中看到的飘血,就是50。那么100就是我们伤害减免之前的数值,我们称之为本次攻击造成的有效生命值(EHP)消耗。根据我们刚刚的定义:

 EHP%3D%5Cfrac%7B%E7%94%9F%E5%91%BD%E5%80%BC%7D%7B1-%E4%BC%A4%E5%AE%B3%E5%87%8F%E5%85%8D%E6%AF%94%E7%8E%87%7D%20

        伴随EHP概念,我们继续提出EDPS的概念,EDPS(每秒有效输出),EDPS就是未造成伤害减免之前的伤害计算值。这样我们就对上面计算战力的公式,加入了防御因素,计算进入了伤害减免,最终得到公式:

 %E8%AE%A1%E7%AE%97%E6%88%98%E5%8A%9B%3DEHP%5Ctimes%20EDPS

        至此为止,我们终于把战斗模块的两大关键,战斗公式和战斗属性得到了统一。而计算战力,正是整个战斗体系平衡的重点所在。

为什么乘法公式?---战斗公式的选择

        上面我们讨论出了计算战力的概念,那么具备了我们之前所说的所有内容,下面就可以分析,战斗公式的选择意图了。我们再来看一下原神的战斗公式。

         %E4%BC%A4%E5%AE%B3%3DDPS%5Ctimes%20(1-(DEF%2F(DEF%2B5%5Ctimes%20L%2B500%20))

        我们观察在该乘法公式背景下两个变量第一:防御力(DEF),第二:攻方等级:L

        当固定L,查看DEF的影响,假设怪物等级为100。L=100,对我方防御力进行浮动,查看防御力的影响。

        假设我方具有10000生命值:得到

防御力探索表格

        

防御力从0到1400的变化规律
上图增长速率的变化
EHP变化

        从上面的图表得到结论:

        乘法公式的选择致使,每单位防御力增加的伤害减免增长越发缓慢,防御力的边际收益逐步递减,每单位防御力所提升的EHP却完全相同。

        那么上面的结论能带来什么体验上的效果呢?首先就是对于防御力的追求,是可以到一定地步就停止的,其实我们注意看,可以看到原神处处都在暗示着“平衡”,什么属性都不宜过高,这部分后面还会再说。第二点就是防御力提升的ehp相同,对于战力计算具有极大的方便性,我们可以很轻易量化一单位防御力的战斗力价值。从而帮助建立整个属性数值体系。

        说完了防御力在公式里的地位,再来说说等级。

        我们知道,游戏中怪物公用的防御公式是:DEF_怪物=怪物等级*5+500。那么为什么这么设计呢?我们在回看公式里L*5+500的这个部分,这一部分是攻方的数据,而他和怪物防御公式不谋而合。这样就能得到,只要怪物等级和人物等级是相同的,那么我们就能得到,怪物的免伤比率为50%,防御减免一半伤害,而人物与怪物的等级差(也称等级压制),也就蕴含在了乘法公式当中了。

        假设怪物防御力为900,人物从1-90级,对怪物伤害见面的影响。

        可以看到从0.65减伤到0.5左右的减伤的变化趋势,可以认为是弱等级压制。

        基于上面的目的,最终将参数优化在了5和500。


另一个“防御”---抗性的意义

        除去防御力以外,还有一个涉及到“防御”的属性,那就是抗性,包含物理抗性和各种元素抗性。抗性和造成伤害的伤害属性一一对应,是元素属性相关加成(包括属性伤害增幅,元素反应增幅等等)的对抗属性。我们知道战斗公式,是从最开始带入攻击,防御,血量后面再添加各种元素从而展开的。既然知道这个基础,那么我们添加某个属性就需要考虑到,该属性的投放是否需要对抗属性来与之中和,从而调节平衡。

        抗性的公式比较简单,之前的部分也有过详细介绍,我就不再重复了,不过值得在意的是,他是一个分段函数的形式,而且存在负抗性的可能,具体效果如下图:

抗性变化图

        可以看到0-75%其实是一个比较支持和允许的常规抗性区间,而离开这个范围,就会获得衰减,这也很正常,游戏需要对伤害限制实行封顶,无脑的可以进行伤害减免,势必会出现数值的崩坏。在设计之初,就应该考虑到这一点,所以抗性公式采用了分段函数,当抗性大于75%效果会被较大稀释。抗性的性价比将变得很低。


多少才合适?---攻击与暴击

        游戏中攻击与暴击率,暴击伤害在获取的时候对应的比例,我们在之前已经讨论出来了。大致的比例为

暴击率:攻击力:暴击伤害=1:1.5:2

        然而这个为什么是这个比例,下面,我们从战斗公式的局部,带入这两个属性来分析一下这个问题。我们假设角色攻击白值为我们之前推断的基本人白值=667.这种情况下,我们攻击和暴击暴伤部分交互的伤害部分可以简写成如下格式:

 %E5%B1%80%E9%83%A8edps%3D667%5Ctimes%20%EF%BC%881%2B%E6%94%BB%E5%87%BB%E5%8A%9B%E7%99%BE%E5%88%86%E6%AF%94%EF%BC%89%5Ctimes%20%EF%BC%881%2B%E6%9A%B4%E5%87%BB%E7%8E%87%5Ctimes%20%E6%9A%B4%E5%87%BB%E4%BC%A4%E5%AE%B3%20%EF%BC%89

     按照游戏里暴击暴伤1:2的投放规律,我们规定基本人的暴击率为经典50%,暴击伤害100%。这也是众多游戏基本的设定。那么攻击力百分比多少才能1.5%兑换1%暴击率呢,这里可以设x为百分比攻击力的稳态值,y为暴击率 ,那么2y就是暴击伤害。得到下面方程:

 delta_(atk)%3D(1%2B0.015%2Bx)*(1%2B%20y%20%5Ctimes%20%202y)-(1%2Bx)*(1%2B%20y%20%5Ctimes%20%202y)

delta_(crit)%3D(1%2Bx)*(1%2B%20(y%2B0.01)%20%5Ctimes%20%202y)-(1%2Bx)*(1%2By%20%5Ctimes%20%202y)

delta_(crit)%3Ddelta_(atk)

        整理方程组得到:

x%3D%5Cfrac%7B6y%5E2%2B3-4y%20%7D%7B4y%7D%20

        把预设好的y=0.5带入到公式中,可以得到x=1.25=125%。即稳态攻击力%加成等于125%时候,属性价值相同,(这里的攻击力%不一定局限于攻击力%词条,固定攻击力词条也可,满足额外攻击力/白值=225%就可以)

        当预期攻击力百分比125%的时候 再继续获得一个词条暴击,暴伤,攻击%的效益是相同的。

基础
攻击力%提高1.5%edps的变化
提升1%暴击率edps变化
提升2%暴击伤害,edps变化
变化相同

        也就是说,玩家在堆积属性的过程中会把属性追求到一个相对稳定的状态,这里所列反推的理想状态,可以让玩家得到每单位词条对于总体战力的提升是相同的。

        从数学角度,可以很简单看出暴击暴伤部分(1+暴击率*暴击伤害),只需要关注起点的暴击暴伤比率,就可以得到合适的兑换比率,上面的例子,我们用到的是50%和100%,认可稳定状态是1:2.那么我们也知道,其实每个角色最初的暴击率和暴击伤害为5%,50%在这个时候显然1%的暴击率对比2%的暴击伤害要带来更大的edps提升,那为什么策划不按照获取渠道中暴击率:暴击伤害=1:10投放呢?

        答案很简单,有意为之,最初的5%暴击率和50%暴击伤害相比后续的人物突破,武器,圣遗物所能带来的暴击,暴伤提升显得微小,由于策划在投放的时候根据1:2投放,当其他渠道搜集的暴击词条足够多,会逐步稳定到1:2。当有一瞬间接近或达成稳态,后面的投放就会根据比例就达到了相同的提升。

        攻击力呢?攻击力%会随着暴击暴伤比例的变化从而稳态值也会发生变化。但是会收敛在一定的范围。

        说了这么多,数值策划的核心意图其实很明显---拓宽培养广度,各属性都要有,且都点到为止,各属性的单极强大对于整个角色的战力都是不健康的。不要把鸡蛋放到一个篮子里!


由具体到抽象再返回具体---还是攻击与暴击

        攻击力呢?攻击力%会随着暴击暴伤比例的变化从而稳态值也会发生变化。但是会收敛在一定的范围,上面的部分,我们是通过赋值领暴击率=50%得到了结论,但是呢,游戏中存在着无数种情况,在这无数种情况,这样的所谓“稳态”也并不唯一。那么就让我们从数据角度,再往深处挖掘一番结论吧,

        依然是用上面我们解出的方程组关系入手,现在我们把暴击,暴伤,攻击力%按照之前的求得的函数关系带入,尝试求解每一个暴击点的理想状态。(为什么用暴击索引,因为在这个比例关系中暴击是1,比较好算。),下面的表格较长还请见谅,由于蕴含的信息较多,我还是决定不止上传一部分。

“稳态”关系。

        这里我再一次补充一下“稳态”的概念,由于策划在投放属性的是,实际是用的“属性池”的概念,即属性折算成属性价值,单位玩家的属性价值总数是收到约束的,以这种方式来约束游戏环境,调节战斗平衡,而这种情况下,玩家对属性不同的分配方式,就会有不同的战斗体验,在玩家端会反馈成:伤害数字,抵抗伤害,治疗效果等等。对于设计端会反馈成:人物价值属性(属性价值平衡章节谈到的,用于评估角色战力)和计算战力(上一章节说到的,用以以评估战斗中的战斗力水平)。那么对有限的属性,按照一个比例分配,可以达到一种稳态使得接下来每一个属性价值的对战力提升效果是相同的,并且在稳态情况是同属性价值数量下最优的属性分配比例。

        那么继续回到正题,基于上面的表格,我们可以总结出下面四张散点图。

        

稳态攻击力%随暴击率变化
局部edps随暴击率变化
属性价值数量随暴击率变化
局部edps的增长速率

        数形结合,下面根据我们得到的数据还有图表一起总结结论,

        首先,观察稳态攻击力%的变化,可以看到攻击力%从高到低再变高,但是前者变化速率很快,后续再拉高变化速率再变低,并且受制于暴击率最大值为100%,变化是有极限的,那么存在三个点需要格外注意。

  • 点1:暴击率=50%,稳态攻击力%=125%

  • 点2:暴击率=100%,稳态攻击力%=125%

  • 点3:暴击率=71%,稳态攻击力%=112.13%

        为什么这三个点特殊呢?因为点1与点2的稳态攻击力相同,在坐标轴y=125%画一条水平线,将会通过这两个点,这也是函数的对称点,而且也是两个特殊的数字,一个是最常规的暴击,即两点分布的暴击率,暴击率=50%,另外一个则是达到满暴击,暴击不再带来收益,那么基于这两个对称点,我们通过寻找也能找到其稳态攻击的极小值点,(通过读数据和基于二次函数都可以)。而稳态攻击的极小值点。目前我们带着点3,把目光转移到局部edps曲线。

        最终我们评估影响还是要看局部edps,因为他是将战力量化的方式,而edps曲线可以看到,先减后增,增速越加放缓,那么其实已经可以得到结论了,点三实际上是一个比较理想的中和点,属性价值约束和edps最大化的理想收益点。

        这给予了玩家选择的方向,当玩家对于角色追求极限伤害,对于攻击和暴击可以追求到这个部分,再追求暴击,暴伤,攻击%词条都是相同效果了。

        或者换种解释的方法,点三实际上就是攻击力和暴击暴伤的稀释交替点。.达到点三的稳态,接下来可以看作三种属性的对于edps的增长视为相同。

        这里确实有点复杂,可以理解成经济学里最大收益MC=MR点,当经过这个点,或者未达到这个点做出决策都不是最优解。

        我们可以看到属性价值数量和edps的曲线是同型的,这其实是个必然,因为我们是根据满足暴击率:暴伤:攻击力%=1:2:1.5的规律求解方程得到的攻击力推算,所以在计算edps的时候,相同的属性价值一定对应一定的edps。但这也正是一个很好的体现,即可以比较有效的通过属性投放来控制战力平衡。

        最后谈一谈edps变化速率,随着我们的属性不断变化,然而每一单位的属性价值提升,并不意味着edps的增速也是相同的,这里面涉及边际效应问题,随着属性的边际效应堆砌效果递减,edps的增长越发缓慢。根据这个,我们能得到什么?

        可以看到edps曲线在75%左右几乎就趋于平稳了,这张图要结合属性价值曲线一起看,这样我们就再一次佐证了点三是兼顾了属性价值曲线和edps的最优解。

        结论:暴击:暴伤在理想比例情况下约71%:142%之前价值稀释逐渐减小,在这之后稀释效果增大,稳态攻击力具有对称性,对称点即上面的暴击暴伤稀释拐点。攻击暴击的平衡在投放规律上,玩家分散投入属性养成会偏向于稳态点(属性价值也可以说词条数量是有限的,基于上面规律,暴击暴伤总价值超过拐点,稳态攻击会下降,约束总体属性价值)玩家根据游戏中的无形引导,会有较好的游戏体验。

        备注:这一部分的研究还可以通过边际效益方法,构造函数找交点的方式解决,还可以通过多目标非线性规划解决,不过这里是通过一个设计者的思路去出发,设计者最初是有理想的比例的即暴击:暴伤:攻击=1:2:1.5的。所以其他两种方法我就不细致讲解了。


属性大杂烩---战斗公式的聚合

        我们上面说了说战斗公式的两边最重要的部分,一个部分讨论了edps,另一个部分讨论了ehp,说了说暴击,攻击,防御,抗性,这些比较困难并且一定会涉及到的战斗部分。分析的主要是静态数据。

        那么我们知道,其实整个战斗流程是把不同的部分进行相乘,无论是对于伤害的增幅,还是对于伤害的削弱,其实无论是游戏中的属性价值的设计,还是最后公式的乘法聚合,还是回归那个最终的想法,对于一般情况,不把鸡蛋放到一个篮子里,对于一个角色的培养,要多维度培养。才尽可能让战力最大化,就比如5+5=10,3+7=10,但是5*5=25>3*7=21。而通过属性池规划,设计者可以得到战斗效率的上限,再设定战斗时间,用战斗时间区分不同程度玩家的游戏体验。

        属性是什么?是策划用以平衡这个开放世界的工具,是玩家检验自己付出努力的标准。

    

        那么,这一期我们就先说到这里,下一期会简单的总结一下战斗部分。相当于对前面的分析进行一个阶段性小结吧。感谢观看。

原神拆解6-再看战斗平衡的评论 (共 条)

分享到微博请遵守国家法律