跳到正文
文档
本页内容

确定性

为什么种子相同的关卡在每台设备上都一样,随机性是如何工作的,以及这能带给你什么

关卡是时间的函数

关卡建立在时间轴上。每个物体存在于一段帧上,并沿着关键帧运动

关卡不会读取你的操作。所以无论你是活着、死了、正在冲刺,还是由机器人游玩,第1200帧看起来都一样

影响是单向的。关卡可以改变化身的尺寸、让它变慢、收走它的操控或关闭它的碰撞。但化身没有任何反向影响关卡的途径

没有触发器。开发者正在讨论以后的版本是否加入,但还没有定论

关卡按真实时间运行。帧率只决定屏幕重绘的频率。同一局在每秒30帧和144帧下完全一样

种子

种子取自第一个设置了种子的地方:

  1. 关卡界面上的玩家种子(随机化选择一个新的,清除将其移除)
  2. 关卡作者设置的关卡自身的种子
  3. 为这一局新生成的种子

0表示“未设置”。所以普通关卡每次加载都会使用新的种子

结果窗口会显示一局的种子,纪录也会保存它。这样就可以重放一局好成绩

随机性如何工作

关卡中的随机值并不来自一个记住自身状态的生成器,而是根据它的地址计算出来的:

Hash(seed, keyframe frame, layer, start frame, track, channel)

同一个地址总是得到同一个数,在任何设备上、以任何计算顺序都是如此。地址的每个部分都是作者可以编辑的内容。所以同样的布局会重现同样的一局

这能带给你什么

  • 机器人Warm Bot v1:在开始之前算出通过整个关卡的路线。这之所以可行,是因为实际运行的关卡正是它规划时所用的那个
  • 机器人Reflex Bot v1:构建当前帧之后的若干帧,并据此操控
  • 检查点倒回:重新构建目标帧,而不是撤销任何东西
  • 编辑器:可以从零构建任意一帧,所以拖动播放头是即时的
  • 纪录和统计:在每台设备上含义都相同

已知限制

关卡这一侧是确定性的。化身这一侧有一些开发者已经列出但尚未修复的缺陷:

  • 两个危险物在同一帧碰到化身时,由哪一个决定击退方向,在不同的局之间可能不同
  • 关卡开始时化身的时钟不会重置。根据关卡加载所用的时间,一次冲刺可能多持续或少持续一帧

在同一构建版本上重复同一局机器人游玩,测得的结果直到最后一位数字都相同。所以这些缺陷并不会在每个关卡上都出现。由于它们的存在,一局在实践中是可以重现的,但没有保证