普通玩家的路线,恰好是最安全的路线

一款游戏的主流程通常被策划、程序和QA反复走过几十遍,出错的概率其实很低。玩家进入游戏后的实际行为分布却很宽:有人在Boss战中途拔掉网线,有人把背包塞满以后去接一个需要奖励道具的任务,有人在两个区域交界处来回跳跃。问题总是出在这些没有被人认真设计过的角落。

所以爱游戏测试AI的出发点,是把测试机器人当作一个“有目的的捣乱者”,而不是一个会通关的玩家。这一点和玩家Agent与测试Agent为什么要分开是同一条线:通关只是手段,暴露异常才是目的。下面按类别逐一说明机器人会做哪些奇怪操作,以及每一类通常能挖出什么问题。

类别一:异常顺序

游戏的任务和剧情都隐含一个“正常顺序”,代码里却常常只处理了这条主路径。机器人可以主动打乱:先杀掉任务目标再接任务,先进入Boss房间再触发前置剧情,先拿奖励再交任务。

假设有一个虚构任务“灰烬回廊的钥匙”:正常顺序是先与守卫对话,再进回廊,再取钥匙。机器人的做法是绕开守卫,从一个可以跳过去的缺口直接进回廊拿钥匙,再回头与守卫对话。典型问题包括:对话触发条件依赖一个从未被置位的标记,任务停在“进行中”无法完成,或者守卫在钥匙已经取走时重复发放钥匙。

类别二:边界区域

地图边缘、碰撞体的接缝、区域加载的交界、水面与陆地的交界,是物理和流送系统最脆弱的地方。机器人会沿着地图边缘走,反复尝试贴着墙角跳,在两个加载区域之间来回横跳。

它通常能碰到的是:角色卡进几何体、掉出地图、区域加载不同步导致敌人凭空消失,或者相机在墙角穿模。

类别三:重复操作

同一个动作连续做很多次,是状态机和资源计数的天然考验。连续拾取同一个宝箱、连续对同一个NPC对话、在冷却时间结束的一瞬间连点技能、反复进出同一扇门。

常见问题是:重复领取奖励、冷却被绕过、交互提示叠加、计数溢出。

类别四:中途退出

玩家不会等动画结束才退出。机器人可以在过场动画、战斗结算、存档写入、商店交易、传送加载的中途强制退出游戏或切到后台,再重新进入。

它要观察的是:重新进入后世界是否处于一致状态。可能出现的问题有:交易只扣了钱没给物品,战斗结算被打断导致奖励丢失,传送到一半退出后角色停在两个区域之间。

类别五:存档与读档

存档读档本身是复杂的序列化过程,很多状态并没有被完整保存。机器人可以在各种时点存档,再在另一个时点读回来,然后对比“存档前”和“读档后”的世界。

比较有价值的做法是在特殊状态下存档:Boss战血量只剩一点,任务阶段刚好切换,背包里有一件正在被使用的道具,角色处于某个增益效果中。常见的问题是增益效果消失或永久残留、敌人血量被重置、任务标记与场景状态不一致。

类别六:任务冲突

多个任务同时进行时,它们对同一个资源的要求可能互相矛盾。一个任务要求把某个道具带给NPC,另一个任务要求把同一个道具销毁;一个任务要求击杀某个敌人,另一个任务要求保护它。

机器人会同时接取所有互相有关联的任务,再按各种顺序尝试完成,最终检查是否出现无法完成的任务、无法推进的剧情或凭空消失的道具。这里需要图结构来知道“哪些任务共用同一个实体”,这也是测试Oracle能够判断“任务是否卡死”的前提。

类别七:装备切换

装备带来的属性加成、技能变化和外观替换,在切换的那一帧最容易出问题。机器人可以在战斗中、技能释放中、受击硬直中、载具上快速切换装备,或者反复穿脱同一件装备。

典型问题是:属性叠加而没有还原(穿脱一次涨一点攻击),技能栏残留旧装备的技能,切换时的动画取消让角色无敌,或者双手武器与盾牌的互斥关系被绕开。

类别八:极端资源状态

背包满、金币为零、金币接近上限、耐久度为零、生命值为一、法力为负。策划设计数值时默认“资源在合理范围内”,机器人则专门去越界。

例如让背包满载后领取任务奖励,让金币接近上限后再出售物品,让所有消耗品数量变成零后再触发自动使用。常见问题是奖励丢失、数值溢出变成负数、UI显示异常。

“乱按”和“有目的地奇怪”的区别

把以上八类全部交给纯随机输入,效率会低得可怜:绝大部分随机操作只是在原地转圈,或者被主菜单吞掉。爱游戏的做法是给探索策略加上目标:

  • 给每个动作标注它可能触碰的状态:这个动作会不会改变背包、任务、位置、存档。
  • 维护一张“已触碰状态”的记录,优先选择还没触碰过的组合,而不是重复已经跑过的路径。
  • 对高风险场景加权:有多个任务共用实体的区域,有存档点的位置,有装备切换入口的界面。
  • 每次操作都写入行动轨迹(地图、角色、状态、任务、装备、操作顺序、时间),一旦发现异常,可以直接整理出精简的复现流程。

成本与边界

对抗式测试并不便宜。每增加一类操作,都要给机器人补充对应的接口和观察点;深层状态组合的数量会爆炸,无法穷尽,只能靠优先级取舍。另一个现实问题是误报:机器人做出的奇怪操作,有的确实是BUG,有的只是设计上本来允许的行为,需要靠规则库和人工复核来区分。

它也不能替代真人。机器人可以发现“状态错了”,却判断不了“这一段手感是不是很别扭”“这个Boss打起来有没有乐趣”。爱游戏的定位是让机器人承担繁重、重复、容易疲劳的边界探索,把真人测试员的时间留给需要主观判断的部分。至于机器人连续跑很久之后才暴露的问题,则属于长时间运行测试要处理的另一个层面。