最难接的故障报告是这种:游戏没有崩溃,只是卡住了,而玩家什么都没做错,他们只是按了重置——重置本来就是干这个的。ScruffyBrush 与 Noxid 的参赛作品 That's BU//S#!T 就遇到了这种情况,它拿了第 4 名和最具创意奖。在 2026 年 4 月 6 日发表于 itch.io 的参赛复盘与 1.2.2 更新日志里,作者描述了两处卡死:一是在对话中重置会触发对话卡死,二是第一关的尖刺坑里还有一处更奇怪的卡死。两处都不需要什么特殊操作,都是流程悄悄分叉成两条不同路径的结果,而修复办法不是继续给捷径打补丁,而是让它和正常路径共用同一条路。
快速信息
来源:参赛复盘与 1.2.2 更新日志,2026年4月6日由 ScruffyBrush 与 Noxid 发表于 itch.io。本文关于该游戏的事实均出自这篇复盘。
游戏:That's BU//S#!T,一款参赛作品,获得第 4 名和最具创意奖。
症状:在对话中重置可能让游戏卡死。更普遍地说,重生流程容易出怪问题:音乐不能正常循环,或者提供削弱选项的对话不能正常工作或根本不触发。另外,玩家还可能被困在第一关一个已被清空的尖刺坑里。
本文不声称的内容:来源没有给出引擎、代码,也没有超出死亡、接受死亡、再次死亡这一顺序之外的复现步骤,本文也不声称超出流程分叉之外的根本原因。对话修复只是作者的看法,原文写着 (I think?),不是已经确认的彻底解决,本文也不声称卡死已被完全消除。
最后核实:2026年11月2日。
封面图:本文自制标题卡。开发者 itch.io 页面没有截图画廊、无法引用经核实的游戏截图,因此封面为标题卡、不是游戏实机图。
重置是一个承诺,而捷径可能打破它
先说对话那一例,因为它最可能被玩家无意中撞上。复盘说,在对话进行中仍然可以用 QuickReset 重置,键鼠按 R,手柄按 NORTH。听起来无害,重置本该是逃生口,是某一局打坏了才按的按钮。可在这款游戏里,在错误的时机按它,会让游戏卡在一段无法脱身的对话状态里。作者在 1.1 版里能稳定复现它,步骤短得令人担心:死亡、接受死亡、再死一次,期间只点最少次数的鼠标左键。三步就能复现的故障,玩家不用刻意去找就能撞上,不需要速通玩家或拿着清单的测试员,只需要一个连续死两次、又尽量少点鼠标的普通玩家——而这正是受挫的玩家会做的事。
对话卡死不是孤立的小毛病。复盘说,重生流程总体上就容易出怪问题:音乐不总能正常循环,提供削弱选项的对话也不总能正常工作或触发。这一簇症状才是真正的线索:当好几种不同的症状都住在同一个流程里,问题通常不是某处的一行坏代码,而是一个流程长出了不止一种完成同一件事的办法,而这些办法已经彼此走偏了。尖刺坑则是从另一个角度讲了同一个故事:第一关有个尖刺坑,墙很高,玩家如果删掉全部尖刺、再跳进这个已经不再致命的空陷阱,就会被困住。理论上爬墙跳可以逃出去,但作者把设计原则说得很清楚:逃出第一关的卡死,不应该要求玩家会用高级操作。第一关是玩家学游戏的地方,不是要求他们已经掌握最难的身法、才能从一个正常游玩掉进去的坑里爬出来的地方。
先复现,再合并路径
这里诚实的表述很重要,因为来源没有给我们一个现成的机制解释:它没有给出引擎、代码,也没有说明对话状态为什么会卡住的内部原因。所以本文不会编造一个,这里不声称什么状态机竞态或时序故障,因为复盘根本没有这样说。复盘给出的是问题的形态和修复的形态,而这个形态已经够学了:作者说,几乎整个玩家重生流程都是从头重做的,并且让快速重生更多地使用常规重生流程。把这句话当作诊断来读:快速路径和常规路径已经变成了两条独立的流程,而修复办法是停止同时维护两条路,让捷径共用正常路线。这是一个设计决策,不是给某个对话框打补丁。打补丁的做法是禁止对话中重置、就此收工,却把两条路径之间的其他差异全留着,等下一个玩家去撞上。
复盘里的两项修复都符合这个判断。重生流程方面,作者清理了快速重生与重生流程,而对结果的措辞值得如实引用:按作者的原话,这次清理 (I think?) 应该能消除全部对话卡死。这个保留态度本身就是事实的一部分,不是藏起来的脚注:它表示作者相信这次重写解决了这一类故障,但并没有把它当作已经证实、已经结案的事,复盘还留着口子,欢迎玩家继续报告仍遇到的故障。在你自己心里也该这样看待它:共用一条路径的重写是很强的修复,但仍然是需要继续测试的修复,不是庆功。尖刺坑的修复则干脆得很物理:加了一小块 ledge,让玩家能从空坑里跳出来,不用新招式,不用教学弹窗,也不用玩家去学新规则,关卡本身就给出了出路。同一份更新日志里的相关清理也指向同一个方向:SuckerPunch 削弱选项原来有故障,高亮会出现在关卡下方,而且反直觉,现在改为在其飞行路径上的任何位置都可选,第一次削弱立刻显而易见,第二次削弱就直接摧毁而不是等到第三次。一以贯之的思路是:让玩家实际做的事,和游戏实际做的事对上号。
能复用的部分
下面的步骤不是开发者在已述修复之外做过的事,而是把这些修复推广到你自己项目的清单,全部只停留在你自己的项目里。能复用的思路简单得有点扎心:你加的每一个捷径,都是一个流程的第二份拷贝,而第二份拷贝是会走偏的。快速重置、快速重开、跳过对话、立即重试,加的时候都觉得只是小便利,可它们都可能悄悄变成一个你以为已经测过的流程的平行版本。能抓住这类问题的测试并不聪明,反而很无聊:先复现那个别扭的顺序,连续死两次,尽量少点鼠标,在一切能重置的中间都试着重置,然后检查游戏每次是不是都以同样的方式回来。如果你的快速路径和正常路径在音乐、对话或玩家状态上出现任何不一致,你拥有的就不是两个功能,而是一个人格分裂的流程,修复办法是在下一个差异变成下一次卡死之前把它们合并。
周一早上照着做
在你自己的项目里,先复现那个别扭的路径:在对话中重置、连续死两次、尽量少点鼠标,改任何东西之前先做这一步,这样你才知道修好是什么样子。
在你自己的项目里,列出每一条重置与重生路径,包括快速重置、常规重生、重试和跳过,逐一对照正常重生路径,检查音乐、对话和玩家状态上有没有差异。
在你自己的项目里,凡是能合并的地方,就把快速路径并进常规路径,让捷径复用正常流程,而不是维护第二份会走偏的拷贝。
在你自己的项目里,检查第一关的每一个陷阱和坑,确认逃出去不需要高级操作:如果清空一个危险物可能困住玩家,就在关卡本身里加一条普通的出路。
在你自己的项目里,从玩家的角度而不是设计师的角度测试卡死逃脱:像正常游玩那样掉进去,再试着在不用关卡还没教过的招式的情况下离开。
在你自己的项目里,流程重写之后,继续测试旧症状,并欢迎玩家报告仍出现的问题,而不是宣布这一类故障已被完全消除。

