下载 App
开发日志 05|怎样确认世界真的能走通:自动自检与浏览器试玩
《一念万物》的关卡依靠世界规则演化。水要往下游走,花要等环境合适,鸟要找到落脚处,天气还可能在时间线上变化。一次手动通关可以确认某条路线有效,却很难保证公共规则改动后,其他关卡与后续段都没有受到影响。
项目因此把验证与关卡数据一起维护,用自动自检检查规则,再用浏览器实操检查玩家面对的流程。

图 1|验证方法示意。自动自检、构建与实操分别提供不同证据,不能相互替代。
用已知操作路线重现结果
关卡数据中的 route 记录一条已知路线,部分关卡还包含 alt 和 alt2。动作可以是拖动、轻点、滑动或等待。自检创建世界,执行这些动作,通过 step(dt) 推进模拟时间,再检查是否进入预期阶段、最后是否收束。
第一关的路线包含移走溪中石头、等待水位变化,再把石头放入池塘并等待鸟落下。它验证的是同一世界里连续发生的两段结果,而不是分别创建两个已经满足条件的场景。
世界演化只通过 step(dt) 推进,使检查无需按现实时间等完所有变化。时间线、生物状态与水流也必须跟着这个入口推进,避免有些逻辑依赖界面帧或独立动画而被漏掉。
已知路线证明至少存在一条可走通的路径;替代路线扩大覆盖,但两者都不能证明所有可能操作都合理,也不能直接判断谜题难度。
还要验证“什么都不做”
有些段设计成等待就会自然过去,有些段必须由玩家改变条件。数据用 idle 标记预期,自检逐段创建对应状态,放着不操作,再比较结果。
这能发现两类问题:本应需要干预的段意外自行完成,或本应自然发生的变化一直无法成立。对以等待为一种操作的游戏,两类结果都必须明确。
稳定检测也不能过早。水头还在推进、气温还在变化,后果尚未显现,此时不能只因为某些生物暂时停住就宣告和谐。检查过程需要覆盖这些渐进状态。
通关之后的画面也属于结果
后续修正为关卡屏设置 World.hold = true,世界发出完成信号后停止演化,保留通关面板背后的和谐状态。否则,玩家刚读到收束文字,鸟又离开、环境继续改变,画面可能已经不再展示刚才的结果。
自检在已知路线收束后继续推进 90 秒,确认停住的世界仍然满足条件。这里验证的是收束冻结行为,并不表示同样的世界在不冻结时一定能维持 90 秒。自在园与终章继续演化,采用不同的结束体验。
把这项区别写清楚,能防止测试通过被误读为更强的承诺。
自在园与专项检查补足公共规则
没有通关目标的自在园,不能用“是否完成”作为验收标准。它的检查关注取放与因果:石头拿入能阻溪,放回能复流,灯能被移动并开关,相关环境变化继续使用公共规则。
布局也有专项检查。溪口在池塘最低水位与满水时都要保持连接,等待鸟必须有环飞对象,路径范围要合理。第一关另检查渐进水头,以及鸟不能在岸上的石头落脚、石头进入水中后可以落脚。
手势修复也增加了相应检查:长按能够显示名称且不消耗干预,轻点之后仍可拖动,有效操作才计次。自检不只验证最后通关,还需要验证这些容易被结果掩盖的过程。

图 2|2026-10-12 截图工具将架上物件按预设位置取入并推进世界后的实机画面。它展示自在园取放场景,不单独证明阻水与复流断言通过;规则结论仍以自检结果为依据。
导出成功之后,还要实际打开游戏
项目的 check 包括字体缺字校验、编辑器导入、广告桥接测试、启动检查与世界自检。export 生成 Web 包。构建成功能说明导出流程完成,但看不出按钮是否太小、提示是否难找、英文大字号是否溢出。
2026 年 10 月 7 日的实际试玩从新玩家入口完成第 1、2 关,并抽查其他关卡、自在园、终章及多个界面。完整自检通过,实际操作仍发现了轻点误扣次数与图鉴空状态等问题,随后修复并复验。这正说明两种验证各有作用。
画面实现变化则使用逐关截图比对;性能变化使用基准与浏览器测量。规则、视觉、输入和耗时需要各自对应的证据。
当前验证记录仍明确保留真机触控、声音听感、弱网与宿主环境的未覆盖范围。一个可信的开发结果既要记录已经通过的检查,也要说明检查没有回答什么。只有这样,下次改动才能知道该重复哪些步骤,以及哪些问题还需要继续到真实设备上确认。





