|
序言:本篇分享仅为抛砖引玉的个人思路分享,该系列内容主要目标是帮助0数值基础新手,从最底层的视角,学习以TTK为锚点,逐渐做加法搭建起整个MOBA英雄战斗数值框架的方法和流程,整体内容遵循极简主义,旨在分享一种推导思路,并非绝对正确的定理或规范,旨在启蒙。
基础篇
一、战斗体验核心影响要素的设定
a. TTK
TTK:Time To Kill的缩写,顾名思义,击杀所需时间,玩家作为攻击方对一次战斗体验长短感知的核心要素。
个人认为标准TTK的设定除了与市面上主流产品培养出的玩家习惯以外,还与一次战斗完整不拖沓的输出循环表演时长正相关,例如常见的3技能/4技能MOBA,TTK与技能叠加普攻的输出循环接近会在战斗体验上显得行云流水,TTK显著短于完整的输出循环则容易让人感觉意犹未尽(我还没打完一套你怎么就倒了,So Sad),而TTK显著高于完整的输出循环则意味着将产生很长一段要靠平A补伤害的垃圾时间。鄙人认为多样性对抗产生的TTK变长或者变短都是其他更高价值目标达成导致的结果,而非底层目标。
b. RTK
RTK:Round To Kill 的缩写,也就是击杀/死亡所需要的回合数,在同样的TTK下,RTK也是影响玩家战斗体验长短感知的重要要素。
试想一下,同样是3s的TTK,在0/1.5/3s共攻击3次完成击杀和在0/0.5/1/1.5/2/2.5/3s共攻击7次完成击杀会是完全一样的战斗体验吗?
除开对体验感知的影响外,RTK结合TTK本质上决定了战斗频率,同时也决定了同战力对抗下先手优势的大小(可粗略看作约等于1/RTK)。
c. 血量&伤害数值量级
通过前述TTK和RTK的设定,本质上也就是敲定了攻血比(TTK=有效生命值/有效DPS),也就是伤害和血量的比值。
伤害和血量的同时放大或缩小并不影响TTK和RTK的核心目标达成,但不可否认也依然会对战斗体验造成些微差异影响,那么让我们稍微对比下不同数值量级的优劣势。
i. 3位数血量+2位数伤害
优势:由于国内玩家义务教育阶段相对扎实的2位数口算能力,此数量级利于精准的伤害的加和计算,对战斗结果预测和战前决策判断的精准性都有比较大的Buff,会带来更强的竞技性。
劣势:数量级较小的伤害数值导致了数值投放的颗粒度不够细,最小颗粒度的影响比例过大,投放颗粒度大于1%,任何调整或者投放带来的影响和波动也会被放大。
ii. 5位数血量+4位数伤害
优势:与上述数量级正好相反,较大的数量级带来了更加细的投放颗粒度,使得任何调整或者投放都可以更加的精细;除此之外4位数的伤害跳字相比2位数的伤害跳字也会增加一定的视觉冲击,一个字就是爽!
劣势:4位数的计算量显著高于2位数的计算,这导致对战斗结果居于和站前决策判断的精准性都因为Debuff而降低;但也因为如此,计算精准性的降低也意味着不计算和计算的玩家差距被缩小,随机性和娱乐性都获得一定提升,所以在特定用户目标或者玩法导向下,此劣势不一定是缺点。
iii. 4位数血量+3位数伤害
上述两种数量级之间的中性选择,优劣势都会被缩小,更加的中庸也更加的普适,3——4位数的数值计算对希望精进伤害计算预测精准性的玩家也有足够的可行性和提升空间。
iv. 综上所述
当前业内产品在单局成长下,数值量级通常都横跨了2个数量级,都通过前期小数值后期大数值,既保障了前期伤害计算和战前决策判断的精准性来提升竞技性,也保证了后期成长数值投放的颗粒度有足够的精度以及更强的成长正反馈。
DOTA2/LOL:前期3位数血量+2——3位数伤害,后期4位数血量+3——4位数伤害(除极端情况)。
王者荣耀:前期4位数血量+3位数伤害,后期4——5位数血量+4位数伤害(除极端情况)。
d. 总结
战斗体验感知的核心在于我们对战斗标准TTK、RTK,以及血量&伤害数量级的设定,长TTK还是短TTK,大数值还是小数值,就能从数值层面带来不小的基础战斗体验差异
二、伤害公式的设定
虽然近年来大部分PVP带生存能力成长的游戏都很有共识的使用除法减伤公式的选型,但因为本文旨在新手引导,还是稍微一下个人对于减法减伤公式和除法减伤公式的特性的理解。
a. 减法减伤公式
定义:受击方的防御属性会直接通过减法来降低攻击方造成的伤害,类似Damage=Attack-Defense*k,就像是攻击方和受击方在拔河,比拼攻方攻击力和受击方防御力的大小,防御属性的提升价值会边际递增,在和攻击力持平时达到峰值,参考下图:
优势:减法公式下防御属性的成长正反馈强烈(从破防到不破防),能促使玩家对防御属性产生比较强的追求目标和意愿,以求达到PVP中的绝对优势和万人敌效果,常见于高付费ARPU型MMORPG,例如当年的征途,能通过多人PVP下的目标塑造促进数值养成付费。
劣势:在单局型公平PVP的体系下控制防御属性的投放范围阈值则会降低养成的自由度,从而牺牲玩法多样性;不控制防御属性的投放范围阈值则会导致TTK在自由养成下崩溃。
b. 除法减伤公式
定义:受击方的防御属性会通过除法算法先计算出一个减伤率再带入伤害计算来降低攻击方造成的伤害,类似ReduceDamageRatio=Defense/(Defense+k)
优势:除法公式下防御属性对有效生命值的提升和TTK的提升稳定,对设计者而言属性价值量化简单且精准,平衡性和TTK更容易把控。
劣势:除法公式由于防御对减伤的作用需要转化为减伤率来计算,所以对玩家无论是理解和精准计算的难度还是减伤率的信息触达都会带来额外的负担,但瑕不掩瑜,基于单局型公平PVP还是除法公式更为适合。
三、战斗数值多样性的扩充
通过前面两步,我们先尝试对涉及到的参数先做点简单的设定,便于对当前数值设定所处的阶段有一个直观的了解,也顺便看看当前设定下英雄战斗数值的多样性如何(叠个甲,任何设定都只是服务于初期框架搭建工作的开启,并不是完全一成不变的,随着边做边发现问题,核心要素的设定是需要动态调整的)。
在满足上述设定的前提下,尝试对具备1V1平衡性的英雄数值属性模板进行粗略的多样性设定,参考如下 :
如上图所见,在当前设定下,英雄数值已经具备了一定的多样性(标准英雄可视为战士英雄的原型,英雄1——3可视为坦克英雄的原型,英雄4——6可视为刺客等物理输出英雄的原型)但可供提供差异化体验的模型捉襟见肘,那么让我们来探寻一下如何进一步提升战斗数值的多样性,让整个数值框架丰富起来。
聊到战斗数值扩充多样性,其本质是通过基于既定TTK对伤害和血量进行数值维度的拆分解构,提升能差异化投放数值的排列组合数量
a. 伤害能力数值维度拆分
- 当前的设定伤害由攻击和频率来构成,首先可以从频率拆分出攻击速度,同样的DPS下通过攻击和频率的差异化分配,就能拓展出标速标伤,快速低伤和慢速高伤等等多种新的分支 。备注:在稳定的TTK下,攻击和攻击速度可以在保证DPS不变的情况下互相转化(DPS=攻击*攻击频率);举个例子就是,其他属性一致,攻击100,攻击频率1/s的英雄A和攻击200,攻击频率0.5/s(2秒1次)的英雄B在DPS上是完全一致的。
- 其次可以引入输出的波动,对稳定的攻击拆分出暴击率和暴击伤害率,同样的频率和DPS下就拓展出了标伤标准暴击率标准,高伤低暴击率低暴击伤害率,低伤高暴击率高暴击伤害率等等多种新的分支。备注:攻击和暴击率/暴击伤害率可以在保证伤害期望不变的情况下互相转化(伤害期望=不暴击概率*普通伤害+暴击概率*暴击伤害率*普通伤害),举个例子就是,攻击频率不变,0暴击率100伤害,和25%暴击率200%暴击伤害率80伤害在4回合下伤害期望同为400,前者是100*4,后者是80*3+80*2*1;
- 此外还可以通过引入和防御属性的对抗,新增平均收益期望上可以和攻击拉平,但针对高防和低防目标产生不同收益波动的防御穿透和防御穿透率。备注:防御穿透和防御穿透率,因为在稳定TTK下防御和生命值可以互相转化的,生命值和攻击也是可以互相转化的,1攻击=标准TTK点生命值,而防御穿透/穿透率和防御是抵消关系,所以最终攻击和防御穿透/穿透率可以通过生命值作为价值锚来二次转化。举个例子就是,在前置设定下受击方300防御=50%减伤,200防御=40%减伤,那么静态下标准模型100防御穿透或者1/3护甲穿透率都能让通过受击方减伤比例降低使DPS从50%提升到60%,相当于提升到120%,和攻击力提升20%的收益是一致的
b. 生存能力数值维度拆分
- 除了生命值和防御外,首先可以从生命值拆分出生命回复,同样的血量可以拓展出高生命值低回复,标准生命标准回复和低生命高回复等等多种新的分支。备注:在稳定TTK下生命值和生命回复可以互相转化,1生命恢复/s=(标准TTK-1)点生命值
- 其次可以类似输出数值中暴击率的思路,引入生存能力的波动,可以对稳定的血量拆分出闪避率,同样的血量下也就拓展出了标准血量标准闪避率,高血量低闪避率,低血量高闪避率等等多种新的分支。备注:血量和闪避率在稳定的TTK下是可以互相转化,因为有效生命值=生命值*(1/(1-减伤率),所以生命值和减伤率是可以直接转化的,而20%闪避率可以看作和20%减伤率价值期望相同,本质上都是受到5次攻击,实际上期望只会受到相当于4次攻击的伤害。
- 此外还可以通过引入和生命值的对抗,增加针对高血量和低血量产生不同收益波动的进攻向生存属性生命偷取(吸血),给输出向英雄提供新的生存能力分支选择。备注:战力相同的静态情况下,本质上百分比生命偷取相当于自身增加了对方同样百分比的生命,所以生命偷取和生命在标准血量和TTK下是可以互相转换的,例如1000血量200DPS的英雄和800血量200DPS25%吸血的英雄战力是接近的,双方在1——5秒对A后的血量分别是:800-650;600,500;400,350;200,200;0,0
c. 总结
至此,通过以上3步,我们就建立了一个满足核心要素设定,基于纯平A对抗下初具多样性和拓展性的MOBA战斗属性的简单数值框架的可行性论证。
同时,也得到了基于静态标准模型下不同静态价值属性的价值比(防御穿透/防御穿透率的收益期望取决于最终整体模型的防御投放,此处先略过)。
上图可见以上标准模板的变体之间是自平衡的,所以可以基于标准模型的变体往下推导属性之间的价值比。
至此最核心也最基础的部分到这里就结束了,欢迎碰巧看到此文又对数值感兴趣的新同学看完提供反馈和行文建议,方便下一篇吸取经验,加以改善。
装备篇
书接上回,通过对战斗体验核心要素的设定,伤害公式的设定,战斗数值多样性的扩充,我们建立了一个基于纯平A对抗下初具多样性和拓展性的MOBA战斗属性的简单数值框架的可行性论证。同时,也得到了基于静态标准模型下不同静态价值属性的价值比。那么下面让我们引入下一个部分——装备模块。
五、装备数值设定
a. 装备的本质
装备的本质有两种不同的视角,但本质上是同源同理;既可以看作装备是在基础属性数值的基础上对属性数值的膨胀扩充和增量投放,也可以看作是对总数值属性的解构和再分配,本质上都需要先确定英雄基础数值和装备数值的占比以及装备总数量(决定单件装备的价值分配),这里为方便演示先暂定个2:1,4件装备进行后续推导。
b. 装备基础数值设定
首先英雄的战斗力=有效生命值*有效dps,例如1000生命值200dps的英雄可以分2次1V1,战斗力和2位1000生命值100dps的英雄战斗力相当。在此前提下,1%有效生命值提升的价值=1%DPS提升的价值,所以基础数值和装备数值2:1,4件装备可以看作能从每件装备上能获得单一属性的极值应该刚好等同于25%有效生命值亦或者25%DPS提升所需的对应属性投放。那么让我们先穷举一下单属性差异化达到25%战力提升对应的数值,如下:
由此可推得在新的标准模板下,不同属性的价值比如下:
这意味着单件装备投放单一属性的情况下:
300生命值=75防御=60生命回复/s=20%闪避率=25%生命偷取率=50攻击=25%攻击速度=200%暴击伤害率下的25%暴击率。
在此基础上为了方便混合属性的投放,我们还需要以每点生命值为1价值量为锚点,计算出其他属性每点的价值量,也就是6(生命值的价值比)/其他属性价值比,可以得到下表:
在此基础上可以约看作,只要装备投放的总属性价值和为300,就符合前置的设计目标的投放比且装备之间自平衡,如下图:
一点小tips:因为生命回复/s和受伤害之间的计算关系属于减法算法,在1V1,伤害波动较大的对抗模型下(例如坦克VS坦克)会导致TTK巨增,所以需要极其谨慎投放,通常当作点缀小额投放亦或者是作为下一块要将的特性中有条件限制的投放。
另一点小tips:闪避因为会降低防御属性的价值,所以需要进行互斥投放,也需要谨慎控制投放总量,抑或用算法取保证多件装闪避叠加的结果;作为唯一特性投放,或像防御减伤公式一样做一层除法转置(例如投放的是闪避值,闪避率=闪避值/(闪避值+K),或非线性叠加(例如30%闪避+30%闪避是ROLL两次,闪避率是1-70%^2=51%)。
c. 装备特性数值设定
当前MOBA品类都主要通过装备的主动技能和唯一被动来投放特性和特性数值,本质上可以看作是在保证收益期望不变的情况下,对收益曲线稳定且收益覆盖率100%的装备,拆分出一部分价值再通过主技能限制覆盖率或者被动技能限制概率的方式增加装备的收益波动。
i. 装备主动技能
通常装备主动技能数值相关的核心参数有三个:
- 冷却时间:影响从技能中获得收益的概率和获得收益次数的期望
- 效果数值:影响从技能中获得的具体收益
- 效果持续时间数值:影响持续类技能获得收益的覆盖率
举2个例子:
例一
某持续类主动装备技能
冷却时间:60s
效果:减少50%伤害
效果持续时间:4秒
那么让我们粗略计算一下这个主动技能的数值期望
首先冷却时间60s,假设我们致死战斗的频率预设是60s,则可以先粗略的看作这个技能每次战斗都会生效,也就是生效概率100%
其次效果为减少50%伤害,每减少50%伤害1s意味着TTK需要增加0.5秒,而持续4秒的效果时间意味着标准TTK需要从前篇的6秒提升至8秒,这意味着4秒的技能,效果覆盖率为50%。
连起来看这个技能就是100%概率发生,持续时间覆盖率50%,减少50%伤害的技能,对于标准战斗下的价值期望等同于100%概率发生,持续时间覆盖率100%,减少25%伤害的技能(本质上就是常驻的防御减伤)。
通过前篇的设定防御减伤=防御/(防御+300)可推得,25%减伤需要的防御是100,那么可以看作这个技能的收益相当于100防御*4防御单点价值=400。
也就是我们在初始模型下可以看作附加防御100的装备A和附加0防御附带此主动装备技能的装备B在装备价值上是平衡的,都是400价值。
简单列个表进行验算:
和上面的推演一致,在标准模型下,携带装备A的英雄A和携带装备B的英雄B在标准TTK下的满血战斗,强度是完全一致的。
小tips:在实际情况下,因为主动装备技能还附带其他属性,收益的计算还有其他因素导致变化,但为简化推导过程和原理,所以省略了更复杂的情景。
例二
某即时伤害类主动装备技能
冷却时间:60s
效果:对范围内目标造成200伤害
还是继续粗略计算一下这个主动技能的数值期望。
首先同上冷却时间60s,假设我们致死战斗的频率预设是60s,依然可以先粗略的看作这个技能每次战斗都会生效,也就是生效概率100%。
其次效果为对范围内目标造成200伤害,这里包含了一个显性数值伤害和隐性数值伤害范围。显性数值伤害200,在前篇标准TTK6秒,标准DPS200的设定下,意味着会减少1秒TTK(少一回合攻击),价值与减少1秒TTK需要的攻击力提升值对等。
也就是减少1秒TTK需要的额外血量200/(标准TTK6秒-需要减少的TTK1秒)=200/50=40攻击力,可以看作这个技能的收益相当于40攻击力*6攻击力单点价值=240价值
隐性数值伤害范围很难直接推导收益价值,本质上需要根据经验推断范围和命中目标期望的关联,上一步240价值是相对于一个生效目标的收益,最终次技能的收益期望还要用单目标收益期望*命中目标期望,而在没有足够的样本数据和经验辅助我们做判断前,简单拍一个系数就好(例如,85%概率命中1目标,10%概率命中2目标,5%概率命中3目标)那么命中期望就是85%*1+10%*2+5%*3=1.2,此技能的最终价值则=240*1.2=288。
还是简单拉个表进行验算:
和上面的推演一致,再1V1的标准模型下,携带附加攻击40装备A的英雄A和携带附带此主动技能装备B的英雄B在标准TTK下的满血战斗,强度是完全一致的。
大tips:随着对游戏玩法多样性的扩充和探究,难免在未来会不断出现一些价值难以准确量化的纯机制性技能,例如LOL中的金身,因为影响技能收益的因素过多,TTK,TTK方差,技能冷却等等等等,预期使用既复杂又难以保证精准性的数值模型量化,倒不如直接用二分法来快速收敛,推荐先定较低的标准价值,保证使用率(可以顺便测试bug)和找到价值下限,然后再找到价值完全没人用的价值上限,之后不断用中间值探索,知道使用率和使用的数据收敛到期望的区间。
大tips二:因为装备主动技能的价值受冷却和效果两者耦合结果影响,那么同一标准价值的技能间存在长冷却强效果和短冷却弱效果两种设计,前者的冷却合理阈值和英雄的大招冷却强相关(强效果的装备主动技能,冷却过长于常规英雄大招的冷却会导致玩家为了对战斗胜率的追求而等CD降低战斗频率,进而影响整个游戏节奏),后者的冷却合理阈值则与英雄的小技能冷却强相关(短冷却的主动装备技能过短于常规英雄小技能的冷却则会导致玩家操作负担的增加,以及英雄技能组释放的流畅性)。
ii. 装备被动技能
通常装备被动技能数值相关的主要参数也有:
- 冷却时间:影响从技能中获得收益的概率和获得收益次数的期望
- 触发条件:影响技能获得收益的覆盖率
- 效果数值:影响从技能中获得的具体收益
本质上,在被动技能中,冷却时间和触发条件都可以限制从被动技能获得收益次数的期望,而效果则影响收益的大小
举个例子:
某伤害类被动技能
冷却时间:0s
效果条件:每普攻4次
效果:下一次攻击触发额外200伤害
继续粗略计算一下这个被动技能的数值期望,首先冷却时间是0,意味着收益的频率完全由触发条件控制。
其次效果条件为每普攻4次,意味着在标准模型1/s的攻击频率下,每第5次攻击会造成1次额外伤害。
结合效果数值下一次攻击触发额外200伤害,此被动技能相当于平均每次攻击提升40额外伤害,价值与提升40攻击完全一致,相当于此技能价值=40攻击*6攻击单点价值=240价值,也就意味着如果一件装备需要投放此唯一被动,则需要从属性中缩减相当于240价值的属性投放。
小tips:因为在此被动技能的收益在实际当中会受到攻速提升而同步提升,所以假如此装备是给高攻速英雄设计的则应该提高装备的预期价值和价格(此篇暂不讨论,待成长篇补充),例如此装备是期望攻速至少50%以上才能收益持平,则此被动技能需要看作240*150%=360价值,投放此被动技能的装备则需要从属性中缩减相当于360价值的属性投放。
文/皮皮张
来源:腾讯游戏学堂
|
|