武器配件和(伪)随机数

2021/10/05193 浏览元气杂谈
接下来的内容有:如何高效使用配件券游戏中时间的处理规则配件券与随机数
一、如何高效使用配件券
在上传好存档后,用需要的武器刷配件,如果用了很多张券,让你觉得太浪费了,我们当然会选择把存档下回来。
然后下一步很重要,如果我们不进行任何操作就直接去刷配件,你会发现每一次出的配件都一模一样,这样就相当于无效操作了,因为此后的每一次操作都只能得到第一次的结果。
而相应的破解办法就是在下载存档之后上传一次存档就行了。
总结一下就是:上传-- 刷-- 下载且上传-- 刷
二、游戏中时间的处理规则
从上个部分我们可以得知,单纯的下载并不能改变什么,但是上传后情况就发生了变化,所以可以猜测云端是静止的,但是本地的动态的,静止覆盖动态就是静止,而动态覆盖静止就变为动态。
在配件的案例中我们可以看出,如果不改变云端存档,云端就不会变,同时使下载后的本地存档也变成和云端一样。
那么问题来了,在推测的过程中我们猜测本地是动态的,那为什么在刷配件的时候出现了和云端一样静止的情况呢?
这里就要再引入一个猜想,就是:在游戏过程中,本地存档的时间虽然在不断流逝,但是并不会主动变化,直到我们改变关卡的状态(包括新建、读取和结算),时间才会主动刷新。这也就是刷雕像要进关卡的原因,因为雕像只和本地存档有关。
而在刷配件的时候就比较简单,因为我们可以认为出配件的顺序和本地的时间相关,我们要么进关卡,要么下载云存档,这样都能改变本地的时间。为了方便,我们就只需要上传再下载就行了,上传是为了改变云存档的时间,下载是为了用改变的云存档的时间改变本地的时间。
利用云存档,我们还可以刷奸商的物品,如果云存档的时间是今天00:00之前的,可以通过下载云存档改变商人卖的第一批货。
三、配件券与随机数
在上面的分析中我不断在强调时间,这是因为我猜想元气骑士中的随机事件与伪随机数有关。
首先我们知道游戏的核心是代码,而伪随机数就是编程中最常用到(甚至可能是唯一)的产生随机性的手段。
其实我们常用的随机数是伪随机数,就是说它并不是随机生成的,而是别人已经编写好的,如果不加任何条件调用0~32767内的随机数,生成的始终是:41、18467、6334......虽然看起来很随机,但是在实际应用中你就会发现问题,你可以想象你每次练的号都是一个样,甚至世界上所有的人的号都是一样的发展路径:什么时候会暴击、什么时候会抽到什么都完全一样。
为了防止这类事情发生,就得加强随机性,那么首先引入的就是种子,就像《我的世界》中,种子不同地图也就不同,为了使伪随机数产生不同,对应的方法就是使用不同的种子,那么种子之间的不同怎么处理呢?最好是用个动态的方法,以保证结果难以复制,所以用上时间就是最好的办法了,通常是用1970年1月1日至今所经历的时间(以秒为单位)。
这就是随机数完整的用法,我来举个例子让大家清楚随机数和随机事件的发生。比如我设置黄金狙击步枪出进阶配件的概率为1%,为了让爆率也为1%,我可以设置判断条件,如果生成的数在0~628之间,那么就是进阶配件,否则出其他的配件。
4
3
3