识别不受控制的输入
列出运行之间可能有所不同的任何内容:随机敌人位置、经过的时间、动画帧计时、保存的高分、视口尺寸和用户输入序列。确定哪些变量对被测行为很重要。对于碰撞检查,请使用固定的敌人位置和已知的玩家起点。对于生成模式检查,控制随机序列,但测试多个选定的种子,以便一种设置不会隐藏不良模式。
控制时间而不冻结玩家行为
对于计时器规则,提供明确的开始时间并检查在有意义的边界处发生的情况,例如剩余三秒且恰好为零。对于基于帧的运动,比较相同的经过持续时间而不是相同数量的渲染帧。 MDN 指出 requestAnimationFrame 回调频率通常遵循显示刷新率,并且在大多数浏览器中隐藏选项卡时回调会暂停;因此,动画代码在计算进度时应使用其时间戳或其他时间源。
关于确定性游戏测试的常见问题
确定性测试是否意味着消除随机游戏玩法?
不。这意味着在选定的测试中控制随机性来比较行为。您仍然可以对不同的种子进行单独的探索性测试,以检查游戏的范围。
为什么测试可以在本地通过而在浏览器中运行失败?
不同的时间、视口、保存的状态或随机序列可以改变设置。记录这些条件并控制与正在检查的行为相关的条件。
延伸阅读
发现信息过时了? 报告需要更正的内容