网络游戏数值学习大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
01.公式与模型
02.模型设定
03.模型特征参数
04.公式简介
属性成长曲线
属性计算公式
护甲减伤,闪避/招架强度转率公式
暴击/命中强度转率公式
攻击强度转DPS公式
EHP计算公式
EDPS计算公式
05.护甲减伤公式推导
06.闪避\招架率转化公式推导
07.暴击\命中率转化公式推导
08.攻击强度转DPS公式推导
09.各属性预期值的推算
10.以闪避强度为例分析其实际价值
11.推导结果汇总
后记
对本文不认同的筒子,欢迎提出批评意见,或无视本文.
对推导过程看不懂或者无兴趣的盆友,可以直接跳到这里来看结论.
作者尽量少说废话,但仍不保证论述过程绝对言简意赅,甚至不保证结论正确.
灰字楷体部分的题外话是可看可不看的,作者只是为了吐槽才多写了那些.
=====================================
01.公式与模型
=====================================
TOP
公式因需求而存在.
公式运算的目的,不是得出一个结果,而是得出一个能够满足需求的结果.
公式能有意义,必须是在与公式相匹配的战斗逻辑以及战斗模型甚至模型特征参数设定的环境下.因此,在游戏环境之外讨论公式基本无意义,除非你能把公式抽象到可以无视一部分游戏设定的高度去.
要炼成公式,必须要先设定好逻辑,参数,模型.
关于日经的战斗公式用减法好还是除法好的争论,作者不知道该怎么回答.
作者的模型和公式里,四则运算都会有,因此实在不明白,啥样的公式才能被称为减法公式,啥样的公式才能被称为除法公式.
本文所介绍的,是一个用于推导角色属性预期值,属性价值,以及战斗公式的模型.
以属性完全相同的两个标准玩家相互平砍为依据,尝试得到稳定的战斗节奏.
模型基于PVP,这意味着我们会需要综合考虑攻防两端属性对于战斗的价值(PVE模型往往会忽略掉一部分属性的价值).
虽然只是一个用于考量1v1平砍节奏的模型,但它是一切战斗平衡的基础.
你想要做的更深更复杂的模型,或者是更进一步的推导(譬如装备属性设定,宠物属性设定,技能数值设定等),都会是基于本模型来进行扩展的.
所谓标准玩家,指的是,我们所预期的玩家最可能地处于的状态.
一般情况下,这个模型会被视为所有职业的综合平均体.
当然,你也可以针对每个职业模型本身的特征来为其配置特定的公式,这样的话,标准模型就是你所针对的职业模型.
先归纳一下本模型的思路:
1.所有设定都是为了得到一个稳定的战斗节奏.
所谓战斗节奏,指的是一场战斗从开始到分出胜负所需要花费的时间.
本文的战斗节奏指的是双方站桩平砍出胜负所需要的时间
平砍节奏是需要被预期的,因为这是玩家最直观的战斗感受
战斗属性的价值,在于影响平砍节奏
i.攻击类属性缩短平砍节奏
ii.防御类属性延长平砍节奏公式存在的目的,则是为了让属性对平砍节奏的影响保持稳定
2.为调节平砍节奏,而抽象出EHP与EDPS的概念
EHP被我称为有效生命值,也可以理解为抗打击能力.EHP是一切防御类属性的综合
体现,所有防御类属性的价值都在于提高EHP.
EDPS被我称为有效伤害值,也可以理解为打击能力.EDPS是一切攻击类属性的综合
体现,所有攻击类属性的价值都在于提高EDPS.
平砍节奏=EHP/EDPS
对EHP与EDPS的控制,就是为了保证平砍节奏始终与预期一致
或许不同项目里EHP以及EDPS的计算公式会有差异,但由EHP/EDPS来推导平砍节奏的总思路是不能变的,变了就无法套用作者所提供的模型了.
换句话说,要使用作者的推导思路,你至少要能从你的模型里抽象出独立的EHP与EDPS 来.
与WLK相比,本模型精简掉了”影响对方防御”的攻击类属性(精准,破甲),原因在于这种属性会让EDPS的计算变得困难起来.如果需要在模型中引入这类属性的话,需要额外推导”降低对方EHP”与”提高自身EDPS”这两种效果之间的价值换算关系,或者在计算EDPS的公式中引入敌方的防御数据.
3.抽象出必要的模型特征参数,并为其赋值(详见第三部分)
4.要求属性价值稳定,不随属性本身变化而变化
所谓边际效应,指的是,某属性在自身数值越大时价值越大,导致玩家的最优策略成
为了,要么往死里堆这个属性,要么干脆一点也不堆的现象.
用攻-防来得到伤害的模型不可避免会出现这种现象,而传统的闪避减伤其实也是
一样的道理.
本模块中所有公式都是为了稳定属性价值,解决边际效应难题而设计(详见第四部
分)
推论EHP与EDPS对引起它们变化的属性值成线性关系
5.“设定”每单位战斗属性价值
从方便玩家理解的角度来说,设置为相等会比较简单(本模型默认采用了此设置)
推论EHP与EDPS对任意属性自变量的导数相等
题外话:
求导属于微分,至少也是要懂求极限的概念的.而求极限我记得是高中数学知识吧?所以,我认为新疆人所说的数值策划只需要小学4年级数学水平的言论欠妥.当然了,不可否认,在理论上,只上过小学4年级的人,自己多读点书也是有可能证明1+1=2的,一定要说四年级生可以懂求极限,好像也行……吧.
6.由4与5的这两个推论,可以建立起方程组.
为这些方程代入模型特征参数值后联立,可以解出战斗公式所需参数.
(详见第五,第六,第七,第八部分)
理论上,由战斗公式也可以先拍公式系数,然后反推相关的属性价值.
但是,对于含有两个或两个以上参数的公式而言,会需要额外注意------请确认公式里的参数之间本身有没有存在相关性,如果有的话,你就得由一个参数来推出另外一个,而不能两个都拍脑袋随便写.
7.设定角色属性的成长曲线(也就是f(lvl)函数)
成长曲线的设计,大体上是由项目需求所决定的,作者暂时无力总结出普适性的规律来,就不提了.文中也只是随手写了个式子,并给出了WOW的实例,请大家有选择性地模仿.
8.由模型+参数+公式系数,推导角色在标准模型下的预期属性值(详见第九部分)
9.整理模型,提高可维护与可调整性
题外话:
对于战斗模型设计来说,搭起一个能打的架子一点都不难,难的是你后期想调整数值时能有多方便.
作者见过一些很庞大的模型,洋洋洒洒几十页数据,倒也能凑出个结果来.
只是不好调.
要么是因为模型逻辑太乱导致无从下手(怎么改才能保证你的调整不会影响到本来正常的数据?),要么是初期参数抽象不合理导致将变量当常数填进了公式(把几十页的公式重新翻一遍?),要么是推导顺序不合理导致改一个小设定或小参数都需要把整个游戏的数值都重翻一次(游戏没上线之前只要你有精力怎么折腾都行,但如果游戏上了线呢?)……
另外,数值平衡表的可读性问题作者无法帮忙解决,请自行学习并掌握VBA.
=====================================
02.模型设定
=====================================
TOP 纯粹是随便写的一些设定(比较近似于wow),仅为本文服务
1.角色只拥有七项基本属性,并且设定每单位属性的价值相等
MHP(生命上限)
AP(攻击强度,可转化为DPS,)
CHP(暴击强度,可转化为暴击率)
HitP(命中强度,可转化为命中率)
AC(护甲强度,可转化为减伤率)
DGP(闪避强度,可转化为闪避率)
PRP(招架强度,可转化为招架率)
强度与率的转换关系参见公式部分
这七项属性被作者认为是不可避免会具有的属性
角色所能拥有的战斗属性显然不止七项(这里并不需要考虑力敏耐智精之类的复合
属性,因为它们并不直接作用于战斗),不过作者认为其余属性都已经等价转化为了
以上七项.
2.程序上使用单次掷筛法来控制各种率
常见的概率事件判定流程有两种.
一种遵从所谓的圆桌理论,通过单次掷筛来决定所有概率.
另一种则是多次掷筛,分开决定每个概率.
第一种做法在程序上略省效率,并使各种率的真实发生几率与面板数值能够非常吻合.
但可能导致策划在计算期望时出现误差(由Table的溢出所致),并会使得同Table的属性价值之间存在一定的关联性,因而属性价值无法稳定.
两种模型都可行,看设计者的取舍了.
它们的EHP与EDPS计算公式会略有差异,本文将仅以圆桌模型为例来推导(同时假设所有率之和不溢出).
3.扩展,定义技能对战斗模型的大概影响(此部分对本模型无影响,也不讨论)假设要求技能全开时,角色的打击能力提高1倍,抗打击能力提高倍
通过单独调技能来满足此要求
于是,开全技能对轰状态下的战斗节奏为15秒.
技能平衡与战斗模型平衡请务必分开来做.不要妄想在属性平衡模型中解决技能
平衡问题.本文不讨论技能平衡.
模型细节是可以千变万化的,但在作者看来平衡思路却是大道归一,望大家能理解……
=====================================
03.模型特征参数
=====================================
TOP 模型特征参数,实际上就是你对这个模型的基本需求,代表了你这个模型的”特征”.
由于你”认为”这个模型”应该”满足这些标准,因此你为它拍定了标准数值.
拍数流程:
1.分析模型,总结出你认为是你的模型特征的数据
2.模型特征参数大体上都应该满足两个条件:
不会经常变化(并不是不能变).
相互之间没有逻辑关系
3.按照你的需求来给模型特征参数”赋值”
4.拍定模型特征参数后,你必须保证游戏实际环境与你拍的数相匹配.
比如说,我预设定了角色的”其它闪避率”=5%,那么天赋闪避和初始闪避之和就不能与5%差太远.
又比如,我设定了全技能时EDPS能提高100%,那么我在作技能数值时就必须让结果往100%尽可能靠近.
5.一些建议
最好把模型特征参数集合起来定义在一张表单里,然后让所有其它有进行计算的格子都来这个表单里引用数据.
尽量避免在建模时把给定了数值的参数直接写在公式中,这会让你在想要调整维护时抓狂.在一个健康的excel表的计算页中,我们应该做到,该页里的所有公式中不存在有数字(除了1之外),而应该每个参数都是对其它单元格的引用.
最終目标是,在模型建立完成后,后续维护工作仅仅是调整模型特征参数,没有其它.
6.OK,看我拍的数吧(没啥实际意义,仅供参考)
总护甲减伤比例
35%
总闪避率
15%
包含其它闪避率,后同
其它闪避率(非强度转化的部分,后同) 5% 可能由天赋,Buff,或初始化生成
总招架率
15%
其它招架率
5%
总暴击率
25%
其它暴击率
10%
总命中率
96%
其它命中率
90%
10 0 F(lvl)每增加1时所增长的MHP
攻强所转化的DPS占总DPS的百分比 50%
武器DPS占总DPS的百分比 25%
等级偏移量B
4 后面会有定义
平砍击杀时间
20 单位秒
全技能后EDPS提高幅度100 %
全技能后EHP提高幅度
50%
暴击价值
1 (暴击倍数为2时,如果不考虑天赋加成等乱七八糟因素,可以视暴击价值为1)
命中价值
1
闪避价值
1
招架价值
=====================================
04.公式简介
=====================================
TOP 公式采用以下结构的原因,是都是为了”凑”出EDPS(EHP)对属性自变量导数为常数或者总是很接近于常数的结果来.
属性成长曲线
这是一个很关键的表达式,因为f(lvl)会被各处公式所调用(往后翻就能看见).
f(lvl)代表着游戏中”角色属性随等级成长的成长曲线”.
在本模型中,无论你如何调整f(lvl)的表达式,只要你保证所有公式中都调用相同的f(lvl),就不会影响到平砍节奏.证明过程暂略(很简单),有兴趣的可以自行推导.
如此一方面可以使得平砍节奏不受等级影响,另一方面也让你能够随意调整指定等级的角色强度,会极大方便你进行数值调整.
Level+B这个表达式,只是作者随手写的一个式子,请勿随便模仿.
原因在于,按照这个公式,角色的属性成长曲线是线性的,每升一级所增长的属性值是固定值.但是,角色能力成长的幅度不一定是固定值.
在实际项目中,你需要根据项目本身的实际需求来调整f(lvl)的结构,甚至可能将f(lvl)定义成一个纯靠读表来获取结果的无规律函数.
比如说WOW的做法就很简单粗暴,把旧大陆,TBC,WLK这3个版本用分3段的线性函数来定义(数据是通过观察护甲公式而反推的).
旧大陆(1<=level<=60) f(lvl)=level+ f(60)= TBC(60<=level<=70) f(lvl)=* f(70)=
WLK(70<=level<=80) f(lvl)=??
wlk的护甲减伤公式没找着,只能从游戏实测可得f(80)大约等于(如果忽略掉恶心的400).理论上找个71级的也号测一下就能反推出71-80的f(lvl),不过作者没号,所以算了,反正也不重要.
属性计算公式
以上公式,将用于计算角色指定等级下任意属性的预期值.
在f(lvl)=level+B时,我们可以看到,如果把B设为0,那么角色属性值和角色等级就是成正比的.
比如说,1级的时候100HP,2级200,3级300,如此递增下去.
那么,如果把B设为4,你就可以让角色在1级时具有实际5级的属性(只是为了让初始属性好看一些).
1级的时候500HP,2级600,3级700,如此递增.
如上一部分所说,F(lvl)可以是任何形式的表达式(甚至可与等级无关,不过我们一般不这么做).
而则是f(lvl)每增加1时,y的增量.
护甲减伤,闪避/招架强度转率公式
以上公式,将在护甲强度转化减伤率,闪避强度转化闪避率,招架强度转化招架率这三处进行应用.
x就是指定的属性强度值.
C代表着强度转率的效率,同时也是极限.
A就是常说的等级削减系数了.由于此系数的存在,角色等级越高,要转化出相同量的率时,所需要提供的强度将越来越大.
暴击/命中强度转率公式
以上公式,将在暴击强度转化暴击率,命中强度转化命中率时应用.
分母中没有了x,这意味着暴击与命中的强度转率时不会受到强度值本身的削减影响,强度与率之间的关系是线性关系.
A的定义与上一个公式一样.
之所以暴击与命中的强度转率公式需要与护甲,闪避,招架公式不同,是因为这些自变量属性在EHP计算公式或EDPS计算公式中的出现位置不同,和”它们是攻击类属性”并无必然联系.
攻击强度转DPS公式
由于DPS与EDPS直接成正比关系,因此公式如上所示即可满足”AP与EDPS成正比”的需求. EHP计算公式
其它闪避率,指的是由角色初始带有,或者天赋加成,或者buff加成的,不受削减的闪避率.招架相同.
理论上减伤比例也可以有非AC转化的部分,每1%减伤比例的价值也未必是1,不过我偷个懒吧假设它没有了.
由EHP公式能推导出一个常用的结论公式
EDPS计算公式
OK,有了以上这些公式与参数之后,我们已经可以开始推导战斗中所有的公式并设定本模型相关的所有数值了……
=====================================
05.护甲减伤公式推导
=====================================
TOP 已经确定了护甲减伤公式的形式为
很显然,所谓的推导,实际上就是求A,C这两个参数的值.
已知
首先看C.
理论上,C代表着强度转率的效率,同时也是极限.
观察上式后发现,若C=1,EHP公式分母里AC将被消掉,EHP与AC之间的关系成了线性关系我们想要的不就是这个效果么?每点AC都能提升固定量的EHP,与当前AC值之间并没有关系……
因此,C就被作者设定为1了(后面招架与闪躲公式C值的设定也会采用相同的思路).
至此大家应该可以明白,为什么本模型(以及blz系游戏)的护甲减伤公式要采用此模型了.这与该公式是加法还是除法完全没有关系,而仅仅是因为,只有采用这种结构,才能推导出”EHP与AC成线性关系”的表达式来
然后求A.
由EHP对AC求导,可以推出表达式
观察后可以发现,正是我们之前所定义过的,于是此式可化简为
又因为
所以
A(护甲减伤)已被解出.
A,C都已经搞定,那么现在可以代入一部分数据来看一下公式的全貌:
角色每等级成长100HP 总减伤比例=35% 标准模型下角色的总护甲减伤比例为35%
所以
A(护甲)=100*(1-35%)=65
于是护甲减伤公式可以被确定为
又因为
而B=4
所以
假如level=60,则角色的MHP=(60+4)*100=6400,护甲=*65*(60+4)/=2240
题外话:
对于WOW的护甲减伤公式,作者一直有很强的吐槽欲望.
60级以前
A=85,很显然,这是由于与总减伤比例这两个模型特征参数设定的差异所导致的.
但后面的400啊,你为什么是400而不是425或340看起来总觉的非常非常地别扭,就像sheldon无法坐在他自己的位置上吃饭时的感觉一样……
TBC的护甲减伤公式看起来就更恶心了
如果把理解为f(lvl),那400到底是啥?
此外,为什么是level-59而不是level-60啊混蛋!
用level-60你才能让两段曲线在60级相交啊……有分段但是不相交,感觉仍然和sheldon 一样,仿佛胃里有只苍蝇在嗡嗡嗡嗡地飞来飞去……谁能帮我把它拍死?
除此之外,还有一个一直让作者无比困扰的平衡调整发生在版本,blz将耐力属性的价值降低了1/3,于是可以出现耐力的场合,耐力值都提高了50%.
问题在于,耐力值提高势必导致标准模型的与总MHP提高,那么为什么所有公式的参数值都没有受影响?比如说护甲公式里面的A值.
难道是因为游戏中实际的平均MHP在之前是低于标准模型的?
作者至今没有想通此问题.
还有.
无论是从成长曲线(比如说观察不同等级下剥皮技能的暴击等级奖励值)上来看,还是从满级f值的设定规律(f(60)与f(70)都恰好对应着角色刚到满级时所能获取的第一批史诗装备的物品等级)来看,f(80)都应该等于200.
但从80级护甲减伤实测的效果是f(80)=.
难道现在A值不是85了?
谁能帮忙找到准确的WLK护甲减伤公式?
细心的朋友可能也发现了,如果角色的不等于100,总护甲减伤也不等于35%,等等,你这公式不就不准了么??
是的,作者所有的推算,都是基于标准模型.
我认为角色状态应该与这个模型相匹配,于是我会去为他设计相应的装备属性,角色成长曲綫等数值,使他的属性尽可能往标准模型上靠.
但这毕竟只是一种在期望上的调整.
作者无法实际要求玩家去穿什么装备不穿什么装备,也无法要求他吃什么药加什么buff点什么天赋.
一切都是在猜,作者所能做的仅仅是尽可能猜得更准.
如果只是小幅度的属性差异,对于平衡的影响大致可以忽略不计.
而大幅偏离模型的情况确实是存在的,常见的有两种:
1.角色的装备档次过低或者过高,使得他所有的属性在总体上偏低或偏高.
由于各个属性在EDPS与EHP计算公式中的位置不一样,这种同步的增幅或减幅对每个属性价值的影响确实可能并不一样.
但其导致的误差比较小,不会对玩家对装备属性的价值观产生太大影响.具体可以参考WOW.(本文第10部分也有少量分析).
2.角色有堆某种属性而放弃某种属性的倾向.譬如说无视AP而专堆暴击.
首先,我们可以考虑给玩家定制所有高端装备.换句话说,我每件装备都是这德性,你怎么穿都不会偏
如果不考虑这种下策,那么这个问题是无法解决的.这不是本模型独有的毛病.
在此状态下,暴击的收益越来越小,而AP的收益会越来越大,玩家会自然而然地找到一个平衡点,最终保持一个稳定的暴击/AP比.
这不算是坏现象,作者所想要避免的,仅仅是越堆某个属性结果玩家强得就越厉害的情况(攻-防模型不可避免会出现这种现象)
属性价值平衡的目的,主要是给LightUser提供一个基本靠谱的属性选择标准,并非必须的工作,这也是为什么很多游戏的属性非常不平衡,但也照样运营得红红火火的原因.CoreUser自然会根据他自己的模型特征去选择合适的属性配比.
从某种角度上来说,也其实是设计者们包括作者的一种偏执------明知道不可能达到标准,甚至并非必须达到标准,但总希望能够尽可能地接近标准.
=====================================
06.闪避\招架率转化公式推导
=====================================
TOP 众所周知,暴雪在WLK中引入了新公式,对等级削减后得到的闪避招架率进行了再一次的削减.
这种做法,其实和作者模型里所描述的公式殊途同源(很容易就可以推导成结构相同的表达式).不过作者一直不理解为什么WOW不把敏捷与智力转暴击率或闪避率的效果改为加暴击等级或闪避等级.
先看招架公式.
已知
由以上方程可以推导出
观察公式后可以发现,要想让EHP对PRP也是线性关系,C需要满足以下条件
至此,大家可能能够明白为啥WLK里对招架闪躲的削减公式里的系数都是那么怪异了……因为根本就是算出来的而不是拍出来.
不过作者在此存有一点疑问.从数字上看,WLK闪避公式的C值可以与作者的预期吻合,但招架的C值却有点过小了(导致招架价值大打折扣),原因不明.
不管暴雪是怎么做,总之作者就这么干了,代入相关数值后得到C值
=
剩下的推算过程与护甲减伤公式完全相同,就不重复了,直接给出招架与闪避强度公式中A 与C的推导结果
=====================================
07.暴击\命中率转化公式推导
=====================================
TOP 暴击强度与命中强度的计算,涉及到总DPS了.所以需要先求出总DPS来.
与的定义相类似,实际计算过程中我们也不需要总DPS,而只需要.
定义: F(lvl)每增加1时所增长的总DPS
联立以下方程
可以得到结果
回到EDPS计算公式
由EDPS对暴击强度与命中强度分别求导可得
又由
可以推知
所以
由此解出
同理可解出
题外话:
若命中与暴击率的决定方式为先判定是否命中,然后判定是否暴击,则结果应该为
=====================================
08.攻击强度转DPS公式推导
=====================================
TOP
由EDPS对AP求导得
由价值(AP)与价值(MHP)相等而价值(EDPS)=平砍节奏*价值(EHP)可得
联立以上两式后可解出
=====================================
09.各属性预期值的推算
=====================================
TOP 由于公式的存在,我们仅需要求出各属性的值即可.
在已知护甲减伤以及闪避/招架/暴击/命中强度转率公式的前提下,结合我们在标准模型下对这些率的预期,很容易便能够得到护甲以及闪避/招架/暴击/命中强度的值.
题外话:
属性总量的推算还只是在规划层面的结果,接下来要做的事情是将这个总量拆分开来分到游戏里的各个元素上去(装备占多少价值?强化占多少价值?宝石占多少价值?宠物占多少价值?),使得你的角色实际状态与模型预期相符.
本文不讨论这部分内容.
此处直接给出结论,推导过程略
(已知)
=====================================
10.以闪避强度为例分析其实际价值
=====================================
TOP 在建模并为属性赋予价值时,我们是基于标准模型来做的.
但在游戏中,属性的实际价值是由各个属性的当前值所决定.
值得注意的是,由于此时已经不是标准模型,所以之前赖以消掉分母中自变量的等式已经不成立了.不过我们依然可以通过由EDPS或EHP对属性求导的思路来推导一个属性的实际价值.
这里仅以闪避强度为例分析一下.
假定
价值(EHP)=1
通过由EHP对DGP求导,可以得到闪避强度的价值表达式
在标准模型下,是等于0的,分母中不含有自变量.
但是游戏环境中,这个表达式所代表的含义是,角色实际的实际招架减伤效果以及实际的其它闪避减伤效果之和,与标准模型下这两个效果之和的差值.
这个差值将影响每单位闪避强度的价值走向.
这些率的总值在小于标准模型时,闪避强度值越大其价值越小.
反之,实际招架率与实际其它闪避率之和大于标准模型时,闪避强度值越大其价值越大.
这样的结论说明,作者的模型在应付神装或有強力BUFF加成的玩家时依然有力不从心之感.在玩家的招架率或buff所提供的闪避率远远高出标准模型预期时,继续死命堆闪避强度依然是一种最优策略.。