|
一个幽灵游荡在所有游戏的上空,它的名字叫随机数
随机数一直如同一个幽灵一样影响着我们生活的方方面面,在游戏里中也不例外。最常见的应用非暴击伤害莫属。无论是即时战略、战棋还是RPG、射击,无论是主机、pc还是手游,几乎每一款游戏总会有那么一个暴击设计在里面。
我们经常能够看到的技能说明就是“**英雄的攻击有20%的几率造成额外100%的暴击伤害。”玩家对于暴击的痴迷真可谓达到了无以复加的地步!
不知道有多少人还记得当年这个非常娴熟非常NB的高端战士苍天哥,他的口头禅就是“暴了!看到没有!1000多!”
为什么一定需要20%的暴击?
大家可能会疑惑,反正都是提供额外输出,一局游戏怎么也得砍几百下,暴不暴击有什么区别吗?你直接把每次攻击的伤害增加20%不行吗?
答案是还真不行……
因为游戏是虚拟的,所有数值都没有太多现实意义,所以每次输出造成10点伤害还是12点又有什么区别呢?这里面需要加入一些心理学的概念,那就是我们的大脑需要通过变化获得刺激。
在脑电波的研究中有一个东西叫做“事件相关电位”(ERP,event-related potential),它是指给予神经系统(从感受器到大脑皮层)特定的刺激,或使大脑对刺激的信息进行加工,在该系统和脑的相应部位产生的可以检出的、与刺激有相对固定时间间隔(锁时关系)和特定位相的生物电反应。简单来说就是外部刺激在大脑特定区域所造成的反应。EPR其实有很多种,其中被学术界认为最有意义,最能代表人类情绪波动的一类EPR又称为P300,也就是一种在刺激发生后300ms可观测到的EPR。它被广泛的应用于测谎,心理干预等领域。
P300有这么一个特性,如果你向同一感觉通道反复给予两种不同概率的刺激,那么小概率的刺激将激发更明显的P300。这一实验范式又被称为Oddball范式,具体操作标准如下:
之所以将小概率刺激的发生概率设置为20%左右是因为它能既频繁又明显的激发P300。现在你知道为什么大多数被动技能的触发概率都在20%附近了吧?知道为什么炉石传说一包5张卡必暴一张非普通了吧!
在游戏中平砍起到的就是标准刺激的作用,而暴击则代表偏差刺激。所以暴击激发效果较平砍要明显的多。这也就是为什么直接将伤害增加20%可以带来等价于暴击的伤害提升,却无法带来等价的兴奋感。
正是因为这种刺激,才让我们觉得游戏好玩,才肯为游戏掏钱。我们早已被资本家研究透了。在资本面前,我们都只是小白鼠而已。
为什么还要限制20%的暴击?
既然暴击这么好,为什么很多游戏又要精心的调整暴击发生的概率和伤害水平呢?你让我暴到爽不好吗?
这里就要说到我们为什么而玩游戏。对动物而言,游戏应该是一种生存技能学习的过程。虽然人类今天玩游戏已经和生存技能没什么太大关系了,但是我们对游戏与技能提升的关联需求是写在DNA里的。因此在游戏过程中玩家除了获得刺激,往往还需要感觉到成长。单人RPG游戏,你大可以通过技能数值系统或者装备装备系统来达到这种目的。问题是多人对抗类的游戏呢?此时游戏就需要兼顾游戏性和平衡性两方面的考虑。
因为只有平衡的游戏才能说明玩家的实力,才能让玩家的实力得到他人的认可,比如国际象棋,围棋。人们一局一局从相同的起点出发,整个过程毫无随机性可言,成王败寇没什么可争辩的。你可以凭借这类游戏登上人类鄙视链的巅峰,一个国际象棋世界冠军的头衔甚至可以提升到民族自信心的高度!
1991年,谢军击败保持世界冠军头衔达13年之久的格鲁吉亚棋手齐布尔达尼泽,成为中国第一个女子国际象棋世界冠军。也是国际象棋史上第一位欧洲以外的国际象棋女子世界冠军。有兴趣看看当年的报纸你就能感受到什么叫民族自豪感。
问题是这样的游戏别说游戏性了,就连观赏性都要打个大大的问号。如果不是为了升学加分,当年又有多少人是真心的因为喜欢而下国际象棋呢?
相反,倒是那些充满了随机性的游戏才是大众中最普及的游戏,比如斗地主,麻将。这类游戏在要求玩家的技巧的同时,又保留了极大地随机性。你就是牌技再高,能不能胡十三幺也只能拼运气。你就是牌技再差,俩王四个2在手,这地主你也敢叫。这样的游戏才会收获大量的玩家参与,因为无论水平高低,你都有赢的可能性。无论是游戏性还是观赏性都不错,问题是这平衡性就很成问题了。因为输赢很大程度上由运气决定,赢了不代表强,输了不代表弱。那你说还比个什么劲呢?就像一个人中了1亿的彩票,你顶多也就捶胸顿足感叹为什么这个人不是自己,但是你绝不会产生他比你强的感受。
此时不但不能给胜利者带来任何认可,甚至还会造成对方胜之不武的负面影响。
所以很多时候,游戏性和平衡性是有矛盾的。当游戏过多的依靠随机性来创造刺激感进而提升游戏性时,就会贬损游戏的平衡性。因为玩家的点滴的能力差距被掩盖在运气的波动中,玩家自身微小的成长也变得非常难以察觉。这样别说游戏的电竞化,就连排位机制都会变的缺乏说服力,这也是游戏公司所不想看到的。所以很多游戏设计中不但要添加随机性,还不得不想方设法的控制随机性。
这里举一个典型的例子,曾经魔兽世界为保证PVP的竞技性而增加了一个专门的属性。具体操作就是PVE中给你一大堆装备堆叠暴击,砍的boss数字飞溅。5万,10万随便暴,看上去那叫一个爽。(反正boss上亿的血……)但是等到了PVP,又给你加了一个专门的属性“韧性”来降低玩家受到的暴击率和暴击伤害。
在给人一种脱了裤子放屁的感觉同时,韧性确实极大地降低了随机性以达到PVP需要的基本的竞技公平性。
20%的暴击一般是如何实现的?
通常我们心理上认为的暴击应该是纯随机的,它需要计算机通过生成随机数来实现。但是游戏公司因为这样那样的原因又会刻意的对暴击进行控制,于是就出现了玩家语境中的真随机和伪随机。虽然之前已经有玩家讨论过,但是我还是想从概率论的角度唠叨几句。
我们所说的随机数本质上是一次“随机试验”中决定某个特定“随机事件”发生的决策方式。
听上去有点一头雾水是吧。还是说20%暴击的例子。技能上说**英雄的攻击有20%的几率造成额外100%的暴击伤害。于是我们在心理上就将“一次攻击”叫做一次“随机试验”,将造成暴击叫做一个(或者也可以叫一种)“随机事件”。(相对应的未造成暴击则是一种“随机事件”只不过大家不关心了而已)触发机制上我们可以想象每次攻击后,系统会给出一个1-10之间的正整数,如果结果是1-2,那么就暴击,如果结果是3-10就平砍。
在这个例子中,“随机数”指的就是指这个正整数,所谓真随机还是伪随机应该讨论的是这个数怎么来和怎么用。理论上真随机要求每次随机试验(每次攻击)都应该有独立的随机数,而且这个随机数应该是不可预判的。
但在大家的口语中所说的伪随机往往讨论的并不是同一个事情。下面我会反复使用这一个例子来解释若干种所谓伪随机的不同。
1使用随便什么预先存在的数字作为随机数,比如攻击发生时计时器上秒针的最后一位数作为随机数。那么理论上我们可以看着秒表操作,确保每次攻击都是暴击。只不过当所取数值变化非常频繁时(比如精确到0.001秒)给人的感觉就和不可预期差不多了。
这种方法几乎被所有的游戏使用。这种场景下大家口语上的真伪随机往往说的是同一个随机数是否会被用来判断多次攻击的结果。一般情况下,如果一个随机数没有让玩家感受到可预判或被反复使用,我们就会说它是真随机,如果被感受到了又会被称为伪随机。
比如wow,如果只是平A,那么感觉上暴击的发生确实是真随机;但是当我们发现同时发生的伤害总是同时暴击时,我们又会倾向于称它为伪随机……
从概率论学术层面来说,电脑中几乎就没有真随机数,因为实际上随机数的产生本身就需要一次随机试验。而目前电脑的硬件还无法独立进行这样的随机试验。你总不能在电脑里做一个机械结构扔色子吧?所以如果深究学术概念,所有游戏中的随机性都应该被称为伪随机。而在玩家的语境下,对于有每次攻击都由独立随机数判断,触发机制也没有经过人工调整的暴击就算是真随机了。
PS:当然我们也可以通过一些外接设备来获得真正意义上的真随机数,比如连接射电望远镜获得宇宙中某一狭小区域的实时辐射信息作为随机数。但是这成本太高,主要用于一些重要文件的加密使用,不太可能用于游戏中。
2粗暴的控制输入结果,比如我们可以限定随机数按照1,3,5,7,9顺序循环出现。这样我们看到的结果就是1次暴击跟着4次平砍的循环往复。这种方式可以说毫无随机性可言。这时候我们一定会毫无争议的说它是伪随机。
比如魔兽争霸混乱之治早期版本中剑圣的跳劈就是这么一个逻辑,我可以数着剑圣的攻击次数预测下一次攻击是否暴击。
3一次性生成若干个顺序的随机数,认定其中有且只有若干次可触发暴击。比如我们每次将1-10这10个数字进行随机排序,刚好1、2这两个数字被排在了第3和第8位,于是玩家的第3,8次攻击会暴击。然后每10次攻击系统就重新再排一次序。最常见的此类应用就要数扑克牌了,理论上每张牌都有1/54的概率抽到大王,但是实际上一副牌抽下来只会且一定会抽到1次大王,不同的仅仅是抽到大王的顺序而已。这种方法用的好给人的感觉就是真随机,比如扑克牌。用的不好被人钻了空子就变成彻头彻尾的伪随机了,比如盲盒抽卡(这一点等下细讲)……
这种方法下已经将暴击从一种概率问题变成了一种排列问题,输出的结果是固定的,只是输出的顺序不同而已。
4将方法1和3结合再加入复杂的公式。
依然使用上面的例子,但我们可以通过复杂的公式对每一次攻击暴击的概率调整一下,第1-2次攻击暴击的概率为10%,如果没有暴击第3-5次攻击提升为20%,6-8次提升为30%,第9次提升为50%,第10次提升为100%。在这个过程中如果出现暴击,下一次攻击就视为第一次攻击。这种方式可以有效地控制随机试验在各个方面的表现。因此被广泛的应用于各种对抗类游戏中。
这里最好的例子要数dota2中**英雄的暴击公式。(详见“云玩家hotspot”的文章《玄不救非,氪不改命:教你分清“伪随机”和“真随机”》,虽然我不是很认同他对于真伪随机的分类方式,但不妨碍这是一篇好文章)有很多朋友在评论里问C值是怎么算出来的,我只想说那得讲一节概率课才能说明白。
方法3,4实际上都已经改变了“一次攻击”这一随机实验的定义。3是将随机实验定义成了“10次攻击”,4则变为一直攻击直到暴击出现。这两种方法往往也会被称为伪随机,原因在于它带给玩家的感觉与技能描述给玩家的认知是不一样的。
其实这两种方法想被玩家在感性上认定为真随机也不难,只要把3的描述应该改为“**英雄的每十次攻击视为一组攻击,每组攻击在随机位次包含2次暴击。”,4的描述则应该改为“**英雄每两次暴击间随机间隔若干次平砍。最大攻击间隔是9次,最小间隔是0次,平均间隔大约为4次,详细数据太复杂请到游戏社区查阅。”这么说倒是清楚了,问题是这游戏玩的得多糟心呀……
所以,我们称方法1,2是伪随机主要是因为它破坏了“随机数”的不可预期性。而方法3,4被嫌弃则主要是它将多次攻击视为一次随机试验,与我们感情上理解的技能描述不一致。这也就是为什么既往的文章中,大家对于真伪随机的定义总是有很多争议的原因。因为在不同的语境下,大家认定伪随机的原因根本不是一个东西。通常情况下,只有方法1有可能在玩家的口语上被称为真随机。但是请注意,说一千道一万这四种方法造成的额外伤害都是20%,这一点其实都是一样的。
哪种20%暴击随机性更大呢?
听上去这些方法给出的暴击结果都差不多呀,那么这些方式的区别又如何体现呢?哪种方法更适合竞技公平,那种更拼运气呢?这我们就需要了解一下如何从概率论来评价一个随机事件的发生概率了。
一般概率论会使用均值和方差两个参数来描述一个随机事件的发生概率。还是以标准的一次攻击20%暴击为例,我们认为暴击造成的额外伤害为1,平砍为0,暴击伤害均值就是0.2。方差是20%*(1-0.2)^2+80%*(0-0.2)^2=0.16。请大家记住,这是真随机应有的状态。
如果我们以每10次攻击造成暴击的次数作为衡量标准,那么理论上我们是将随机实验扩展到10次攻击,如果保证每次攻击都是相互独立的,均值就应该是2(平均造成2次暴击),方差应该是1.6(这个就很难直观感受了)。
我们再来评估一下上述四种方式对于10次攻击中暴击次数的均值和方差。
1均值2,方差1.6。
2均值2,方差0。
3均值2,方差0。
4均值2,方差1.43(这里的方差计算并不正确,我只是将一次攻击的0.143乘了10,但是理论上在这种模式下这么算并不太合适,但是方差变小的趋势肯定是正确的。具体这个方差怎么算还请大佬指教)。
可以看到无论是那种方法,开发者都会保证均值不变,毕竟人家已经把20%写在技能说明里了,再改变这个就真是忽悠玩家了。所以开发者一般都只会在方差上做文章。而方差越大我们感受到的随机性越强,方差越小,输出结果就越稳定。开发者绞尽脑汁调整参数,其实无非就是要将方差控制在一个适当的区间,既保证一般玩家游玩时能够享受到大脑带来的刺激,又保证竞技中玩家个人能力不会被随机性喧宾夺主。
问题是心理上的东西很难用理性来解释,玩家有时候会被直观感觉所左右。所以相对于10次攻击的统计,大家有时候看到连续出现的两次暴击就会开始往运气上扯。那么如果以一次暴击出现后的下一次攻击作为随机试验(也就是是否会出现连续暴击),这四种方法的表现又如何呢?
1均值0.2,方差0.16
2均值0,方差0
3均值0.12,方差0.105
4均值0.1,方差0.09
大家不难发现,方法1的均值和方差依然和标准实验是一模一样的,这也就是它通常会被称为“”真随机“”的原因,因为变更随机试验的定义一般不会影响到它的表现。方法2因为毫无随机性可言就不讨论了。关键是方法3和4。从10次攻击的伤害来看,方法3带来了无与伦比的稳定性,但是造成连续两次攻击的概率反而比4还要高。也就是说方法三在牺牲掉极大随机性的情况下,仍然没有很好地解决玩家直观感受的问题。而方法4看似对随机性削减的不多,但是却更难造成连续地暴击。翻译一下就是两个英雄对砍,方法4即保留了一组攻击输出的随机性,又很大程度的削减了玩家感觉上的运气成分。这在电子竞技中可以说是非常重要的,两大哥对砍时既保留了最后输赢的悬念,又保证玩家在局势不利时有一定的机会做出反应。这也就是为什么对抗类游戏的参数设置往往牵扯到上述dota2中那种复杂到看不懂的公式。
因为只有这样的公式才能保证比赛中既有令人难忘的天命瞬间。
TI6决赛的第三局,在一波肉山团战中Wings众人分工明确。虚空果断跳下肉山坑紧跟白虎,随后双方对喽虚空天命被动五下晕三锤敲死白虎!这一幕也让众多玩家永远记住了这个虚空。
但无论多么天命,最后大家还是会承认选手输赢看的还是实力。
TI8决赛最后一局LGD基地被推掉的那一瞬间,导播将画面给到了LGD战队的四号位选手FY,FY面无表情让人无法猜到他的想法,背后绚烂的烟花升起可惜不是为LGD所绽放。
写了这么多只是想说作为一名普通玩家,我们只需要尽情的享受开发者为我们准备的大餐就好了,但是开发者所需要考虑的东西远比我们想象的要复杂的多。因为在我们自己都不知道自己想要什的么的情况下,开发者却要猜出玩家想要的到底是什么。这是相当艺术的。
所以请不要动不动就在Steam上对游戏开发者恶语相向。有时候你感觉上细微的差别,在代码层级真的是很难琢磨的。(比如歌曲的循环播放)这不仅仅是用不用心的主观意愿问题,也不是会不会代码的技术问题,更多的是感性与理性相关联的经验问题。它需要反复的试错和打磨才能实现,就是神仙来也不可能一次性做好。
最后说一下盲盒问题,这里要感谢“好大一团”的文章《如何成为一个游戏王实体卡片收集高手?这是一份无助提高竞技水平的买卡指南》,让我终于明白盲盒散包是如何骗人的了。盲盒本质上采用的是上述方法3的做法,将若干次抽取视作一次随机试验。而散包等于是将一次随机试验又分拆成了若干次相关联的随机试验。要保持分拆后的随机试验的均值和方差不变是有前提的,那就是不能知道之前试验的结果。而实际上商人为了追求利润,是在知道之前结果的情况下还卖给我剩下的散包。等于大佬抽的是概率,我抽的是大佬玩剩下的条件概率……大佬的均值永远高于平均水平,我的均值无限接近于零,除非大佬自己算错了才会留给我一些牙慧。这是赤裸裸的抢劫呀!
和媳妇去抽盲盒也是,一盒开了之后一群人上来又摇又捏,然后就看到热门形象纷纷被抽走了。我一开始还傻傻的以为是自己运气不好,现在我才知道是被人打劫了!消费者这么干也就算了,商家竟然还配合!这还有天理吗!
作者:mlwy
来源:机核
原地址:https://www.gcores.com/articles/116394
|
|