Reversing Factorio's RNG
4 days ago
- Factorio使用taus88伪随机数生成器,这是三个线性反馈移位寄存器的组合,具有确定性和可逆性。
- 通过观察随机数输出(例如从回收维修包中每次结果产生一个比特),可以利用GF(2)上的线性代数恢复内部状态。
- 游戏内系统预测未来的随机调用,特别是品质判定,并通过跳过不理想的调用来操纵制造以获得传奇物品。
- 实施步骤包括采样随机数、使用预计算矩阵计算状态、预测未来状态以及利用废料回收跳过调用。
- 局限性包括游戏中存在多个随机数生成器、其他随机事件(如虫子移动、粒子效果)的干扰,以及Factorio 2.1中导致该方法失效的改动。
- 该项目是一个概念验证;在实时存档中实际应用因其他游戏机制产生的不可控随机调用而具有挑战性。