用途:在 Phaser 4 游戏开发中做运行时验证。TypeScript 编译通过并不代表游戏能跑,资源路径拼写、场景未注册、create() 抛错、深度/透明度/相机错误、物理体未添加、粒子未限流等问题都能通过类型检查却导致黑屏或掉帧,因此改动场景生命周期、资源加载、物理或渲染后应运行该测试。
主要能力:检查页面 HTTP 状态、是否存在有尺寸的 canvas、能否在 window 上找到 Phaser.Game、isBooted 是否为 true、哪些场景在运行及各场景显示对象数量、空显示列表警告、真实帧的中位与 5% 分位 FPS、像素分析判断是否黑屏、未捕获异常与 console 错误、资源是否全部加载(含被开发服务器伪装成 200 text/html 的文件)。退出码 0 通过、1 检查失败、2 工具错误,并写入 .playtest/report.json 与 PNG 截图。
使用方式:运行 node "${CLAUDE_PLUGIN_ROOT}/skills/phaser-playtest/scripts/playtest.mjs" --project .,工具自行启动并关闭开发服务器。需先安装 Playwright:npm install -D playwright && npx playwright install chromium。可选参数包括 --project、--url、--mode dev|build、--scenario、--device iphone|android、--settle、--fail-on-warn、--json、--headed。为启用场景、FPS 与状态断言,可在开发构建中暴露实例:const game = new Phaser.Game(config); if (import.meta.env.DEV) (window as any).PHASER_GAME = game; export default game;。场景脚本支持 wait、key、press、click、screenshot、expect 动作,断言支持 equals、atLeast、atMost 或真值表达式。
适用场景与限制:适合本地验证与 CI(可复制 playtest.mjs 到项目 scripts/)。未暴露游戏实例时仍能捕获黑屏、异常与 404,但会跳过场景、FPS 和状态断言。若问题来自玩家反馈而非刚改动的代码,应先用 phaser-feedback 做分类。其他细节资料未提供。