本文来自知乎网友刘旭颖对问题“游戏设计中有哪些经典的计算公式?“的回答。
第一个问题:符文系统和天赋系统存在的必要性和对战局的影响?
先引入两个概念:
Ehp:effective health point 有效生命
Ehp受自身的HP、闪避、防御、护甲、韧性、格挡、招架、免伤、技能系数、等级加成、各种抗性等等数值影响。
举例:假如你有1W生命,且有50%减伤(与对方命中无关),那你的ehp就是2W。
Edps:effective damage per second有效输出
Edps受自身的攻击力、命中值、暴击率、暴击效果、穿刺、急速、等级加成、各种属性攻等等数值影响。
举例:假如你的输出间隔是1S,100%命中,攻击力为100,暴击率为100%,暴击效果为150%,则你的edps为150。
则在在两个人之间的胜负结果,始终可以用下面的公式来表示:
所谓的符文、天赋、装备等等各种系统,归根结底都是对人物数值的影响,本质上并无任何区别,每新增一个系统,不过是把每个属性的数值成长上限放高而已。所有以上没有哪个系统是必要存在的,今天可以做成符文系统,明天还可以换成后宫加成系统,表现形式不同而已。至于对战局的影响,最优解的问题会谈到。
第二个问题:关于数值成长中最优解的存在
ELO等级分体系
(很久之前做过的PPT,东西太多有点乱,粘一部分上来)
简介
ELO等级分体系是根据它的推广者埃洛(elo) 名字命名,它是一种以数值表示的体系,将等级差别转化 为分数或取胜概率。
理论基础
粗略看一下很多比赛的成绩表,能够看出某个选手的表现是有起伏的,即有“状态”之分。强手未必恒定表现好于弱手,每人之状态在不同的日子不同的比赛里都会有好坏不同。而总的来说整个生涯里每一点上,一名选手的表现将大致围绕在某个平均水平上下波动,有时会有背离,而出现大背离的情况比出现小背离的情况频率要低。
于是,有了ELO体系的第一个假定:可以建立这么一个等级量表,某个体在这个表里的不同表现将正常分布。
第二个假定简单地说:在某一个特定的实力范畴里,尽管可能存在实力上的差异,但总的来说可以预期没有谁比谁好或差很多。由此可以定量划分区间。
等级量表-区间尺度
等级差别是可能性方面的唯一重要因素。
指对阵双方谁有多大机会胜/负/和,唯一影响因素在于他们之间的等级差别,这样排除了难以确定的“状态好坏”(第一假定),也排除了具体谁对谁的影响(第二假定)。
因此即使出现“爆冷”或 “克星”,也视为偶发情况,因为ELO体系是建立在样本足够大量的统计基础上的。
标准分类间隔(附表)
即某一个等级里最高与最低之间的差别。在国际象棋里,FIDE(即国际棋联)采用每200分为一个间隔的分类法,并且给每一个间隔取一个名字或排名以更好分辨。
常态分布函数
强手未必总是胜过弱手,于是就使用一个“常态分布函数来代表一名选手的波动表现,这是统计学上的概念。从这个函数里可以得出另一个函数叫“常态概率函数” ,这个就定义了根据比赛对抗结果可得出的等级差别,或者根据已知的等级差别可得出的预期比赛对抗结果。它是这样的:
P(D)这个值,就是以等级分差别D为自变量计算出来的预期取胜可能性(预期得分率),它可近似用下面这个公式来计算:
举例一
Ra:表示队伍A当前的等级分
Rb:表示队伍B当前的等级分
Sa表示队伍A的比赛结果,胜利S值为1,平局S值为0.5,失败S值为0
Ea:表示A在这场比赛中的胜负值期望
Eb:表示B在这场比赛中的胜负值期望
其中Ea+Eb=1,也就是胜率和为1
举例二
一个等级分1950的选手,她的对手等级分1700分,那么她取胜的机会有多大呢?
等级分差别D=1950-1700=250,代入上面那么近似计算公式,就是:
也就是说,她胜利的机会有80.8%,大约是81%。事实上,看下表,即可得知等级分差别在246-256之间的强手预期取胜可能性就是81%。不用计算。
上面看不懂?没关系!
当前等级分公式
Rn = Ro + K * (W - We)
Rn是赛事后的新等级分;Ro是赛事前的原等级分;K是单局得分的等级分点值,它是一个系数,取值有约定的;W是实际对局得分(胜得1、和得0.5);We是在原等级分基础上的预期对局得分。
这个公式是用来在连续基础上(也就是每局或每个赛事之后)计算新等级分的。它把最新的表现调整考虑进先前的等级分中。它的逻辑意义是一个选手的表现高于他的预期得分以及低于他的预期失分。
系数K决定了事前等级分和本次表现分的相应权数。K值越高,那么越近的赛事表现的分量越大。反之则反之。一般K值范围从10到32。下面是一个K取值参考表:
举例三
一个队伍等级分1650,比赛中分别与等级分为2050、1270和1550的三个队伍对了阵,战胜了低分的两个,逼和了最高分的那个。问新等级分是多少?
K值取10;Ro=1650;W(胜2和1) = 1 + 1 + 0.5 = 2.5
We = P(1650 - 1270) + P(1650 - 1550) + P(1650 - 2050)
=0.910 + 0.638 + (1-0.921)
=1.627
套入第二个公式,即Rn = Ro + K * (W - We) = 1650 + 10 * (2.5 - 1.627) = 1659
也就是她在这次赛事后,等级分升了大约9分,成为1659。
举例四
某竞技场队伍等级分2350,11场比赛5胜6负,K取32;对阵11场情况如下:
已知原等级分Ro为2350,已知本次比赛实际对局得分W=5,已知K值取32,已知(总)预期对局得分We为5.24, 计算时可省略为5.2,那么根据公式(2),Rn = Ro + K * (W - We),新等级分Rn = 2350 + 32 * (5 - 5.2) = 2343.6 , 大约是2344,比之前下降了。