作者:某饺子
上班无聊,摸鱼写个帖子玩玩,本人非专业人士,对计算机的研究仅仅出于兴趣,欢迎大家一起讨论,真理总是越辩越明。
先说几个结论吧。
是否真的可以做到暗改
可以的。有很多手游都有类似的技术,或者说不叫暗改,叫做“在线更新”/“热更新”,即不停服、不更新APP,修改数据、几率甚至是机制等。这些手游一般使用一种叫lua的语言做服务器和客户端,特点就是可以不关闭底层服务器,不影响正在运行的线程,直接使改动生效。而DNF这些传统端游,虽然不太可能使用这种新模式,但仍然有办法做到在线修改数据。只需要把概率一类的数据存储在数据库中,对数据库进行修改,就可达成“暗改”数据的效果,当然受制于服务器架构,无法做到手游那种在线改代码的操作。
希曼暗改了吗
说实话,目前看不出来,感受不出来,要说变化,最开始两天只刷8PL图,一般一管PL只有一次希曼,现在经常2-3次。当然我刷的不多,每天刷主号+一个混团花+刃影,刷够5次共100硬币就停。
能不能找到随机规律,利用随机规律
很难,去烧香拜佛搞玄学都比你去找成熟游戏的随机规律有意义。
然后说说游戏中的一些随机机制吧,DNF作为一个充满了随机元素的游戏,去研究一下还是很有意思的。
先说计算机中的基本随机实现方式
随机分为真随机和伪随机。真随机,比如抛硬币后的硬币朝上一面,这类被自然界重力阻力,抛硬币时手的姿势、抛出角度、力度等影响,致使结果完全无法预测的,称为真随机。伪随机,目前我们日常使用的计算机无法实现真随机,而是通过一个复杂的计算公式,得出看似完全没有规律的数字,来达成一种随机效果,成为伪随机。如果这个公式很简单,则可以找出规律,也就称不上随机了。比如等差数列2,4,6,8......,他的公式就是2*n,其中n为1,2,3,4....。生成随机数的公式,一般在编程语言被创立时,就已经确定下来,那么这个公式被定死,按理说每一次计算都会得出一个既定数字,那么如何使结果出现差异的,此时编程语言会引入一个叫做“随机种子Random Seed”的数,以这个数字为基数,将其带入到随机数公式中,得出最终结果,以此来制造独一无二的最终随机数。在等差数列2,4,6,8...中,2*n即为随机数公式,而2就是随机种子,取2时结果是2468,取3则是369和12。这种得出随机数的方法,就像是我们在物理、化学中的“代入公式”,例如,已知速度,代入时间,得出路程。vt=s,vt就是随机算法,时间t则是随机种子,最终结果s就是计算机给出的一个随机数。而随机种子,一般取当前时间。
游戏中的随机
此处又要再一次引入真随机和伪随机,但区别于上面所说的自然界真随机与计算机伪随机。在此处所说的真伪随机,是指在计算机中,随机结果是否受到人为干预。由于此处的讨论范围仅限于计算机内,而计算机随机输出由于几乎无法得到规律,故将其当做自然界真随机进行讨论。真随机,指最终随机结果未被人工干预,简单粗暴地输出。例如一个有20%几率触发的特效,我获取一个1-100的随机整数,若这个随机数小于或等于20,则“触发特效”,否则,“不触发特效”,在这里,获取的随机整数出现1-100每一个数字的概率都相等,那么这个随机效果从结果上来看,确确实实是20%几率触发,并且纯粹地由最原始的随机算法决定,此时叫做真随机。真随机的特点就是绝对的公平,由无情的计算机直接给出结果。但是真随机也有缺点:由于计算机算法的原因,某些时候会出现极端情况:连续触发或连续不触发。为了解决这个问题,人们制造了一种伪随机,被广泛认可的强化增幅中的“垫一下”就是这种伪随机,它的特点就是,你每一次未触发的随机,都会使这个随机触发的几率得到提升,直到触发几率提高到100%,一旦触发,触发几率回归到较低的几率,虽然你每一次尝试的触发几率并不一定是20%,但是如果你进行几千亿、几万亿次尝试后,最终统计概率是无限趋近于20%的。这一种伪随机,可以说是“防脸黑,也防欧皇”,现在的夏日套打碟活动的4次普通礼物后必出特殊、骨灰盒能量满必出特产,就是非常明确的防脸黑伪随机机制。
伪随机中的进一步伪随机
上面说了最基础的伪随机,这种伪随机常见于竞技游戏中,LOL、DOTA2这些无对局外成长的游戏都有这类随机,主要为闪避、格挡、暴击,当然也有一些其他的概率类技能。而对于DNF、抽卡手游等随机因素直接影响玩家成长的游戏,随机的结果将被进一步控制。例如,回归buff、满级buff、新手buff、脱坑buff。例如脱坑buff,一个玩家近几天的在线时间不断走低,甚至出现几天不上线的情况,此时系统会认为该玩家放弃游戏的可能性很大,又结合该玩家的历史消费,决定让他“欧皇”一段时间,在基础的随机中,再增加几率,比如说,深渊连闪、增幅连上,以此试图挽留该玩家。再比如说,某玩家周年庆回坑,回来就充8万开盒子,系统觉得这个人人傻钱多,那就给一棍子给点糖,因为钱多,糖就多给点,比如土豪哥增幅被给棍子,上头冲8w接着上,然后糖到了,增幅连成上了个红18,土豪哥觉得充钱真有用,还会继续冲。又比如,某肝帝白嫖党,系统觉得这人只贡献在线数据,赚不到什么钱,那也给一棍子给点糖,但是糖就很少。脱坑玩家被干预过的随机系统挽留,就有可能留下来继续游戏;土豪玩家被糖甜到,留下来游戏的几率更大,会继续进行消费;白嫖肝帝虽然黑,但偶尔也会红,被“红”吊着,他会继续游戏,继续贡献在线数据。当然,还有强化增幅宠物、称号等明确影响几率的存在。总的来说,这类伪随机,能有效提高游戏的营收数据,提高用户留存和付费率,是被广泛使用的。
随机之外影响随机的要素
最为经典的便是“深渊史诗投放”论,即一个频道的深渊定期由系统投放,类似于有一池塘的鱼,鱼就是史诗,刷深渊等于用一个网在池塘里捞一下,系统刚刚投放史诗时,池塘内鱼比较多,捞一下捞到鱼的概率也比较大,很多人在捞鱼,把鱼捞少了,捞到鱼的概率也就随之变低了。这种投放表现得比较明显,我个人是比较相信的。还有反票多频道红,出狗眼、晶石劝退,不反票的频道赶紧跑,包括,新版本刚开深渊爆率高、新团本金牌多、新深渊出货多,都是一个“刚刚投放,池内货多”的状态。投放论,隔壁天刀还是剑灵也有一个活动,极其稀有的道具一个服务器每天只出一个,一但抽中,本日内本服务器绝不会出第二个。除投放外还有一个“传送带机制”,即一个角色会得到什么,已经被提前确定了,一个经典的例子就是炉石传说回档事件,开过的卡包再开,回档前橙卡的包还是出橙卡,但是橙卡不是相同的,仅仅是品质、卡包、位置完全相同。
其他随机
“号品”,前几年,有人在不可描述服务器的数据库里发现了一个lucky字段,因此有了号品一说,其实也不是不可能,不过我不认为这是一个lucky字段控制的。个人更倾向于,号品是由于角色的独立ID参与部分随机数计算出现的一个现象,类似于QQ号,每一个角色都有递增的ID,只不过这个ID玩家们看不到。ID甚至是QQ号参与随机数计算,造成有的号欧有的号黑。lucky字段可能仅仅是表示一个号近期的幸运程度。
总结
游戏中的随机极为复杂,且可以自由组合,相互影响,比如我们假设一下,新建一个角色,先根据ID和QQ号决定了“号品”随机数,再用“号品”随机数参与随机计算,回归buff、新手buff等同时参与,确定他强化增幅的一些几率,甚至预先确定了他打团出卡出什么卡、出什么品质的卡。想要破解一个游戏的随机规律,除了去获取服务器源码,可以说是完全不可能的,平时玩DNF,能利用的规律,大概也就是增幅强化锻造改造的垫子,和投放说了。还有就是,合理游戏,不要上头,晚上夜间感性大于理性,尽量不要碰一些概率相关的东西