欢迎光临散文网 会员登陆 & 注册

圣遗物逻辑推导和逆推方法

2023-01-25 01:59 作者:Aebeu  | 我要投稿

原神副本圣遗物的抽取顺序是:
1.根据权重落点获取对应数量稀有度背景(指的是星级)
这里面有两种可能:
(1)按照权重落点直接获取稀有度及个数。
(2)给予基本保底个数后,按权重落点判断是否额外给予物品。(类似4的额外副词条抽取)
在这个过程后可能会运算一遍。
2.根据上述获取的稀有度背景个数,抽取圣遗物套装(已知圣遗物种类和部位其实包含在一个ID内,故可推测同一稀有度的不同种类圣遗物在同一个权重表里:如深林的记忆所在副本,其权重顺序为深林套的 杯 毛 头 花 沙 饰金套的 杯 毛 头 花 沙 按这个顺序,每个的权重所占500),最终抽取结果就是各套装的各部位都占10%,概率相等。(这个是由各套装ID推导得出的)同理,在这个本里,紫色圣遗物的顺序为 深林套 饰金套 奇迹套 赌徒套,(杯 毛 头 花 沙)因为占比的原因,所以权重是500/2。(总权重假定是5000,就是种子[伪随机数的生成范围是5000],宏观看均匀随机)
这样就获取到了一组圣遗物的品质和套装部位的ID了。(此时生成完成后ID会在自己所在稀有度自动排序,排序是固定的 按照套装排序,同一套装按 杯毛头花沙 排序)
3.通过已有条件(圣遗物部位,如杯子ID为XXX1X,毛为XXX2X,以此类推,获取这里的倒数第二位数字来选取主词条权重表),然后将我们现在的种子代入,通过种子数字在哪个ID对应权重范围就调用哪条主词条的ID。这样就有了这组数据 圣遗物种类套装ID 主词条ID
下图是三个部位的主词条权重表,按照ID排序的,而且和我近一年的数据推导结果接近。

不用在意上面那条,是原本打算做部位的因为金紫蓝不同要弄好麻烦就没做

(如对精通头的预测总是会落到治疗头,因此我一直认为这两个词条接近,事实证明确实,还有就是对元素杯的排序,我原本的推测是 雷火 水物 风岩冰 按照三层排序,攻击偏向是火物冰,防御偏向是雷水岩,风判断不出来,但实际情况一直让我不清楚物和冰到底哪个在我认为的上层,因为老在上层看见物伤杯,结果实际排序是 火雷冰水风岩草物,十分接近)

[在测试过程中,我的记录的数据量比较小,有幸存者偏差的味道]

4.最后就是副词条抽取了,首先根据已有词条获取副词条权重表,如已经有了大攻击,那就获取没有大攻击的权重表,根据种子落点获取副词条,然后将种子代入运算代码,重新运算一次(否则极富规律),然后再获取副词条、重新运算,直到抽取完成。

这里面还包含了另一项,额外副词条,有三种可能:

(1)赋予主词条的同时也用决定其副词条是否+1,然后通过种子和需赋予的副词条数量进行——权重表选择>副词条抽取>重新运算 这一循环;

(2)在副词条抽取开始时,先用种子决定是否赋予额外副词条,然后运算一次,再根据是否赋予额外词条和圣遗物稀有度获取循环次数,然后循环。

(3)在一个圣遗物的副词条抽取完毕后,即跳出循环,在此时用种子决定是否赋予额外词条或进入下一阶段,再通过是否已有额外词条判定结束,进入下一个过程。

这里我认为第三种可能性最低,因为有前面的系统可以用,再写一个不一样的实现相同效果感觉没必要。

最终得到的数据就是

圣遗物种类及部位ID Lv1 主词条ID 副词条ID 副词条ID 副词条ID

某个工具提供的物品调用代码就是用give指令后接对应ID。

把这次的结果赋予玩家,同时执行动画,就完成了一次圣遗物的刷取。


这里对于圣遗物的抽取我还有另一个猜想,过程是赋予稀有度及个数(和天赋本/武器材料本用的类似代码),然后进行以下过程:

单个圣遗物种类及部位抽取——主词条抽取——副词条抽取——完成-进行下一个圣遗物的抽取(循环)——完成-产出结束-执行动画赋予玩家相应物品-输出最终种子(下一次的初始种子)


根据以上逻辑,我们可以得到一种反推运算代码的方法。

1.制作各物品在各情况下相应的权重表(由已知的物品ID和实际抽取情况可以得出,权重总数是5000是听来的,来源说这是以前解包得来的,就暂且相信吧),于是上面那张表可以除以2,再根据已知数据获取其他部分如副词条的权重抽取表。

2.收集数据,包括所有概率抽取的信息,然后将各个数据套入权重表获取其所在的对应的权重范围。大量数据下,得到的实际数据逐渐精确,最终确定种子及每次运算后其变化情况,根据其变化情况,写出符合情况的函数模型,将各组精确数据代入,获取模型中的未知数(举例y=Ax+B,A和B就是我们要求的,y是运算结果也是新种子,x是现种子,实际上运算代码模型不会这么简单),得到运算公式。

【这里因为运算代码在运算到一定时会变化,获取不同物品如主词条和副词条抽取后的运算代码也可能不同,所以需要两个数据和公式分组协同进行运算】[感觉写个机器人,这似乎也是锻炼人工智能的途径之一,要用魔法打败魔法(doge)]

3.通过得到的公式,在下一次获取对应物品的时候,我们就可以利用前面一段获取的物品,代入模型获取对应运算公式和当前位置的种子,进而推导出接下来的物品落点,进行定向产出。


如果只是时间戳+用户信息等来控制物品掉落概率,游戏中的物品掉落概率就不会相互影响,也就是说违反了CN110917627A中的描述。同时,这类运算逻辑的逆推数据量会小很多,过程是:

初步收集数据,判断表征,反推种子的影响因素——进行定时定点的数据收集(这是最难的一步,因为现实中数据传输和运算有延迟,可能影响时间戳进而影响整体数据,有方法解决这里不多说)——建立数学模型,和上面的过程差不多了,就是反推运算过程什么的了,最终的应用逻辑就是,设计一个程序,收集对种子有影响的用户数据,结合各影响因素推算出所求物品的对应位置,然后定时定点进行获取。(缺点是有误差,可以改进,不多赘述)


到这里关于圣遗物刷取的基本讲完了。

接下来说强化的:

副词条补词条的抽取用的上面那套抽取副词条的,假设3词条的五星圣遗物升4级,这时检测到词条数不为4,所以获取未有词条的副词条权重表。

当判定已经满足4词条时,获取的是已有词条的权重表,然后进行抽取,权重表中,顺序从上到下依次为:

小生命 大生命 小攻击 大攻击 小防御 大防御 充能 精通 暴击率 暴击伤害

比如我们要强化的圣遗物副词条是:小生命 大防御 充能 暴击伤害 ,那么获取的权重表就是这么一个排序,实际还按档位(副词条数值)排序。

小生命 209 239 269 299 大防御 16 19 21 23 充能 4.5% 5.2% 5.8% 6.5% 暴击伤害 5.4% 6.2% 7% 7.8%

权重各占312.5 【这也是我之前将总权重设置成10000而不是5000的原因,因为怎么着都能得到整数,在运算上*2,在上述得到的运算公式不同,种子不同,但结果可以一样,所以设置倍数只要合理就行】


根据种子落在对应权重范围获取ID,然后在物品对应的代码上加上相应的副词条ID,这就是圣遗物强化部分的。

强化结果数据表达方法有以下:

(1)强化到相同档位副词条:在对应的副词条后加“,”和增加的数,如

强化前:圣遗物套装部位ID 主词条ID 副词条ID 副词条ID 副词条ID 副词条ID

强化一次:圣遗物套装部位ID 主词条ID 副词条ID,2 副词条ID 副词条ID 副词条ID

强化两次:圣遗物套装部位ID 主词条ID 副词条ID,3 副词条ID 副词条ID 副词条ID

(2)强化到不同档位副词条:在对应的副词条后加“,”和副词条ID

强化前:圣遗物套装部位ID 主词条ID 暴击率一档ID 副词条ID 副词条ID 副词条ID

强化一次:圣遗物套装部位ID 主词条ID 暴击率一档ID,暴击率二档ID 副词条ID 副词条ID 副词条ID

强化两次:圣遗物套装部位ID 主词条ID 暴击率一档ID,暴击率二档ID,暴击率三挡ID 副词条ID 副词条ID 副词条ID


以上就是全部内容,如有错误请指出。实际情况是我懒得去搞这玩意了,开摆就完事了,反正能玩就行,何必坐牢呢?玩原神体验的是剧情,因为一个圣遗物坐牢心情变差可太亏了,写这个其实就想着有人愿意去做就去做,我给个思路,后期如果能受益最好,不能就罢了。

另外,物品掉落概率验证过程中,如果发现玩家的某项行为会改变物品掉落,改变游戏初衷,必然会改的,做那么多事情没享受多久就被改了,难以接受,所以,开摆呗~

圣遗物逻辑推导和逆推方法的评论 (共 条)

分享到微博请遵守国家法律