跳到正文

确定性与种子

SysAdmin Crisis 中同一个种子为何在每台设备上都产生同样的一夜:模拟如何保持确定性,以及这对玩家意味着什么。

最后更新:

模拟中没有任何东西是真正随机的。这一夜做出的每个选择——哪个事件到来、何时到来、针对哪台机器、洪水是否为分布式——都来自一个带种子的伪随机数生成器。给它同一个种子,每次、在任何设备上,得到的都是同一夜。

它如何自洽

有两个性质让这一切成立。模拟以固定的 250 ms 步长推进,所以结果从不取决于帧率或机器的快慢。而引擎被禁止——由 lint 规则强制执行,而不是靠约定——调用系统时钟或平台的随机数生成器。

随机抽取还按使用方划分为各自独立的流。这意味着,在某处新增一个消耗随机性的功能,不会让别处的序列发生偏移,所以旧的夜晚仍能正确重放。

它带来什么

同一夜可以玩两次。 输掉的班次可以重放,遇到的事件和顺序完全相同——这正是练习与单纯重玩的区别。

如实续玩的存档。 存档记录了每个随机数流的位置,所以续玩不是近似还原。这一夜从原来的位置继续,而不是从某个看似合理的位置继续。

可分享的班次。 在 Web 上,种子可以通过地址中的 ?seed= 提供,因此特定的一夜可以按玩过的样子原样交给别人。

种子从何而来

在战役中,每一夜的种子都由本次游玩派生,所以某个战役的第 4 夜并不是另一个战役的第 4 夜。无尽模式每局抽取一个新种子,除非自行提供。