金色脚本是我的一个长期项目,我已经花了十多年时间在上面来回开发。它积累了很多技术债:两个单独的仓库,一个用于引擎,一个用于游戏,过时的工具,以及对最难测试的部分没有真正的安全网,这就是渲染相关的部分。今年我终于完成了迁移,我避免了的迁移,最有趣的部分不是迁移本身,而是如何让它安全。
现在的结构是一个单一的仓库,引擎被分成十一个专注的包。 我对这些包进行了保护,防止它们之间的循环依赖,保持边界的真实性,不会悄悄地变回一个大的导入球。 使整个迁移可行的关键是视觉回归测试套件。它将引擎从一个可控的游戏时钟和一个种子的随机数生成器中切出,然后渲染并与提交的基准线进行比较。由于时间和随机性都可以注入,甚至粒子效果在每一帧上都可以重现,所以一个单独的像素偏移就可以使测试失败,而不是隐藏在“看起来差不多”的情况下。 这使一个可怕的重构变成了我可以在小的提交中完成并信任的过程。
几个设计决策是从这种确定性的工作中产生的。 我在粒子引擎三颗星云上建立了一个粒子抽象层,驱动战斗VFX,像魔法一样的效果,以及地图天气,带有漂移的雪和雨。 我还建立了一个效果设计器,连接了粒子编辑器到正在运行的游戏的websockets上,使效果可以在真正的地图上实时编写,而不是从一个单独的工具中导出为JSON。 我在这里写了一篇介绍性的文章,我将在未来几周对每个话题进行深入探讨,如果大家有兴趣,我将继续在这里分享;
https://projectgoldscript.com/thoughts/modernising-project-goldscript-for-2026/
对于已经完成类似迁移的人来说:如何处理渲染回归测试套件中基准图像的漂移,因为它们最终会随着真正的变化而漂移? 我很好奇人们是否将有意的视觉差异作为一个审查 artifact,还是发现基准漂移最终会变成噪声。
评论 (0)