Dagger Industries 的游戏 Beyond 有这样一个怪现象:开发者每天玩的版本没问题,可玩家真正下载的版本却不行。2026年10月20日发表于 itch.io 的开发日志第 17 篇讲的就是这件事:打包版有的地方慢、有的地方坏、有一个地方甚至整座小镇都不见了,而在编辑器里看明明一切正常。开发者给打包版做了性能分析,从最大的开销查起,修掉了一整批只在打包版里出现的问题。这个案例讲的是编辑器与打包版之间的落差,以及为什么只有打包版才说真话。
快速信息
来源:Beyond 开发日志第 17 篇,标题为更快的帧率、一个真正的游戏构建与战利品的真实模型,2026年10月20日由 Dagger Industries 发表于 itch.io。本文关于该游戏的事实均出自这篇日志。
症状:独立运行版游戏很慢,而且在编辑器里能用的东西到了打包版里全坏了,其中包括一整座始终没有出现的小镇。
主要结果,按开发者自己的性能分析数字:每帧游戏逻辑从 22.1 毫秒降到 9.1 毫秒,车辆物理从 5.2 毫秒降到几乎为零,出生点的一整帧从 12.1 毫秒降到 9.8 毫秒。
本文不声称的内容:日志没有点名引擎,本文也不点名。所有性能数字都是开发者自己对独立运行版的性能分析结果,不是针对你的机器的跑分承诺。画面方面明确还没做完:草地与阴影是最大的剩余开销,而且画面风格的决定还没做出来。快速试了一下,捡起掉落物品仍然不行,日志也列为未完成,所以这个版本不能说已经完全修好。
最后核实:2026年11月2日。
先说慢的部分:六十辆停着的车,每帧都在检查
开发者先做了一件不显眼却关键的事:给独立运行版做性能分析,而不是只信编辑器,并且按开销从大到小排队。最大的意外是停着的车:每辆停着的车每帧都要检查自己有没有碰到东西,地图上大约 60 辆车,光这一项检查每帧就要花大约 6.5 毫秒,这是开发者自己的分析数字。现在,这项检查只对车辆真正需要的部位保留,其余全部关掉;而且远处的停着的车还会休眠:150 米内没人时就停掉物理,回到约 120 米内再醒来。这个故障的形状就是教训:一次很便宜的检查,摊到所有东西、每帧都跑,就贵了。一辆车查接触没人会在意,六十辆车每帧都查,就是另一回事,而这正是那种藏在眼皮底下、等你去盯花哨系统时才漏掉的开销。
做无用功的不只是停着的车。好几个系统每秒要把全世界的物体翻好几遍,现在它们只看自己那一类东西,问题变小了,开销也就便宜了。美术这边,纹理流送拿到了更多内存,世界纹理上限为 2K,于是出生点区域在加载后约 12 秒就能达到完整细节,而且加载画面现在会等它到位,不再把你丢进一片模糊的世界。两辆特别精细的车以前根本没有远景版本,现在有了,远处的车不再按近景的精细度花钱。合起来看,开发者自己的前后对比数字说明了变化的幅度:每帧逻辑从 22.1 毫秒降到 9.1 毫秒,车辆物理从 5.2 毫秒降到几乎为零,出生点的一整帧从 12.1 毫秒降到 9.8 毫秒。这些数字要按日志的原意去读:这是一个团队对自己独立运行版的分析结果,不是对你的项目能省多少的承诺。关键是方法——最大的开销先查、在玩家拿到的版本里实测,而不是奖品有多大。
然后,打包版开始一件件认账
速度只是故事的一半。打包版还有自己的一堆故障,在编辑器里从来不露面,而且会让测试的人怀疑自己的眼睛。按名字加载的文件,包括界面图片、建筑部件、战利品表和防毒面具的面罩,打包时没有被带上,现在一律会被包含,游戏到了玩家机器上不再缺零件。建筑预览的坏法格外容易让人糊涂:预览显示为实心块,每个位置都说不可放置,原因只是绿色与红色的预览材质只在编辑器里设置过,现在游戏自己会设置它们,预览就恢复了编辑器里的样子。还有那座小镇:汽车旅馆旁边的一整座镇子,由五个聚落部件组成,每个约含 98 栋房子、棚屋、电杆和道具,在打包版里根本没有出现过。开发者把它重建为 490 个单独放置的物体,小镇回来了。丢一整座镇子是响亮的故障,可同一个故障的安静版本要常见得多:一张图、一张表、一个部件,悄悄地没有发出去。
弓的故事是同一个道理的缩小版。两把弓都能拉弦却射不出去,后来按正在用的弓系统重建了,才能正常射击。弹簧弓还有第二个更怪的毛病:拉弦时上肢会穿过金属支架,现在只有弓臂会弯,弓身保持结实。弹药计数也在回答错误的问题:它显示的是弦上的箭,而不是携带的箭,现在显示的是箭的总数。这些主要修复旁边还跟着一串小修复,值得知道,因为它们说明打包版的走样能蔓延多广:重生会读回一个玩家已死的存档,现在改为在床或出生点重生;退出会进错菜单;主菜单角色拿弓的姿势像拿步枪;掉落物品按模型原尺寸渲染,出现了一米宽的方块和两米长的木板,现在按物品尺寸落地。还有两个诚实的尾巴没有收,本文也照实保留:画面方面还没做完,草地与阴影是最大的剩余开销,画面风格也还没定;快速试了一下,捡起掉落物品仍然不行。所以别以为这个版本回来就完美了,它是好多了,但还没做完,而这正是真实开发日志的常态。
能复用的部分
下面的步骤不是 Beyond 开发者在已述修复之外做过的事,而是把这些修复推广到你自己项目的清单,而且只停留在安全、不破坏项目的检查上。能复用的思路简单得有点让人谦卑:编辑器是车间,不是产品。在车间里便宜的工作,到了发售版里可能很贵;在车间里存在的东西,到了发售版里可能根本没发出去。所以操作顺序比任何单个修复都重要:给打包版做性能分析、把开销排队、先修最大的、再重新分析,因为第二大的开销往往就藏在最大的后面。同时要把打包版当成另一款需要自己通关一遍的游戏:菜单、加载、出生、放置、射击、退出,还有一个你不常检查的第二区域。日志里的故障都不稀奇,都是普通的检查、普通的文件、普通的设置,每一个都在悄悄假定编辑器会替它兜底。可在玩家的机器上,编辑器不会在场,所以你的测试必须去玩家真正待的地方。
周一早上照着做
在你自己的项目里,给打包版做性能分析,不只是测编辑器,并且在改任何东西之前先把每帧开销从大到小排好队。
在你自己的项目里,把打包版从头到尾冒烟测一遍:按菜单、加载、出生、放置、射击、退出的顺序,用一份新复制的版本测。
在你自己的项目里,列出游戏按名字加载的每一项资源,然后在发版之前逐一确认它们真的出现在打包版里。
在你自己的项目里,检查一切只在编辑器里设置过的东西,并且确认游戏自己会在运行时设置它们,而不是假定编辑器里的设置会跟着发出去。
在你自己的项目里,每修一项就重新给打包版做一次性能分析,并留好前后对比的数字,这样才知道到底是哪项改动起了作用。
在你自己的项目里,看看打包版里远处或闲置的物体每帧还在花多少钱,以及没人靠近时它们能不能休眠。

