让 AI 实测游戏:输入链路决定测试可信度
作者用 AI Agent 在无头浏览器中运行真实 Phaser 游戏,通过键盘和触摸操作检查角色动作与连招。实践强调测试必须经过生产环境的输入链路,避免合成事件未实际触发游戏却产生错误判断。
AI 深度解读
AI 把动画改好了,测试全绿,手机上打开却跟原来一样。这是独立游戏开发者让 AI 搭档 Muse 测试 Phaser 浏览器游戏时踩过的坑:动画状态切换正确,只能证明程序走通了,不能证明玩家看到的画面变了。
作者后来把验收标准改成了屏幕上的像素测量,并补上真实输入路径、手机显示条件和横竖屏检查。这篇经验最有用的地方,是提醒我们:让 AI 验证自己的修改之前,得先定义什么证据才算改成功。
为什么动作都测对了,画面还是没变
作者开发的是一款幕末日本题材的横向卷轴清版动作游戏,使用 Phaser,角色阵容不断增加,涉及数百个精灵动画。每次修改都要检查角色是否贴地、刀刃是否够得着目标、手机上看起来是否正常,手工逐项回归很难持续。
Muse 因此承担了自动试玩:在无头浏览器中加载实际游戏,进入带训练假人的练习模式,再执行移动、攻击和连招。
问题出在一次动画重做。新帧已经生成并接入,测试也确认角色按正确顺序进入相应姿势,每个姿势持续的帧数符合预期。报告宣布修改完成,作者拿手机一看,动作却几乎没变。
排查后发现,新旧动画渲染出的轮廓近乎像素一致。测试检查的是姿势名称、转换顺序和持续时间,没有检查动作在视觉上是否真的拉开了差别。
状态机正确,是视觉修改成立的必要证据之一,却不能代替画面验收。
视觉修改要交出哪些像素证据
作者把检查拆到了资源进入游戏前和游戏实际运行后。
首先是精灵图集审计。测试直接读取图像数据,逐个姿势测量脚部宽度、角色高度和接地线。如果修改目标是「站姿更宽」,新姿势测出来就必须更宽,否则图集直接被拒绝,不再进入试玩环节。
这一步验证素材是否具备目标特征。接下来还要截图,测量游戏里角色实际显示的宽度和轮廓范围。声称「这次攻击伸得更远」,就得在屏幕测量中拿出对应的数字。
测量工具自身也可能制造假象。作者的测试装置中,一个 snapshot API 曾返回空白缓冲区,基于零内容像素计算出的比例,仍可能显示「1.000」,看起来像完美匹配。后来他们增加了有效内容像素数量的最低要求,满足后才允许测量结果参与验收。
先证明量到了东西,再讨论量出来的结果。
显示条件也进入了验收范围。桌面像素密度下的无头截图,曾漏掉实际手机上画布放大后出现的问题。现在截图会模拟手机分辨率与像素密度,并提供局部放大图。原文没有给出具体设备参数、像素阈值或测量算法,能借鉴的是检查层次,还不能直接照搬成完整方案。
自动试玩得先保证输入和时间可信
像素测量之外,作者还总结了两条测试装置必须遵守的规则。
第一条是走生产环境的输入路径。早期测试注入的合成键盘事件,看起来像按键,却没有按真实按键的方式到达游戏输入处理器,结果输入功能已经坏了,测试仍然通过。现在试玩覆盖键盘移动、攻击,以及按手机交互方式派发的触摸事件。
这里的关键不在于事件是否成功发送,而在于它是否经过了玩家实际使用的那条处理链路。
第二条是等待游戏状态,而不是固定时长。无头环境在负载下可能慢到每秒只有几帧,手机上够用的一段等待时间,在测试环境里未必够。判断「被投掷的敌人是否落地」,比睡眠固定时长更贴近测试真正关心的条件。
横竖屏则成为每个测试套件的硬要求。作者遇到过竖屏解释文字被其他面板挡住,也遇到过读取错误位置的 padding 值,导致按钮只剩文字高度的问题。他们又增加了覆盖检查器:扫描测试套件,只要有套件缺少横竖屏覆盖,整轮运行就失败。
最终,一次视觉修复的报告必须包含手机模拟条件下、两个方向的修改前后像素测量。姿势转换正确,仍然可以作为流程检查结果,但不再足以宣布画面修好了。
我的判断
我赞同作者把「完成」写成可检查的证据。AI 很容易围绕已有断言完成任务;断言只覆盖状态名称,报告自然也只证明状态名称。补充玩家可见的验收条件,比反复要求 AI「仔细一点」更有操作性。
不过,像素变化也有边界。轮廓变宽能证明站姿宽度变了,却不能直接证明动作更自然;刀刃伸得更远,也不能单凭截图证明命中判定同步改变。作者最后仍保留手机试玩,用来判断手感,这个分工是合理的。
和单纯截图差异比较相比,按脚宽、接地线、轮廓范围测量,更容易对应具体修改目标,但需要针对游戏定义指标。原文没有提供两种方法的误报率、漏报率或维护成本对照,也没有量化采用新流程后的收益。因此,这是一次有明确失败案例支撑的工程经验,还不是通用效果评测。
能拿来做什么
- 给 AI 下达视觉修改任务时,把「改好」写成可验证条件。例如这款游戏的站姿调整,需要比较修改前后的脚部宽度,并同时检查接地线。
- 检查浏览器自动化脚本是否经过实际输入处理链路,并把依赖动画进度的固定等待,改成等待落地、动作结束等游戏状态。
- 为截图测量增加有效内容检查。空白图、没有截到角色的图,都不应继续生成看似正常的匹配结论。
- 将手机分辨率、像素密度和横竖屏纳入视觉修复报告,同时保留人工试玩,判断动作观感与操作手感。