IN THE MAKING / 游戏

验收分层:哪些测试说明了什么

历史版本的开发资料。

返回项目资料

历史版本资料

本文对应标题中标注的版本;当前源码和适用范围请查看项目资料。

自动单元与构建检查

npm run game:test 检查读取到的原始 Bill 控制片段与新模块/桥接。包含 324 组瞄准输入、1,000 步固定随机序列、平台边界、组合键边沿、碰撞范围和异常清理。 构建与 HTTP 测试用明确标为 synthetic 的宿主环境包住真实控制片段;不是完整游戏。假锁仅在测试临时目录里使用,生产 baseline.json 不变,不存在生产 --force。

可选的真实浏览器状态对照

需你的完整游戏及素材、已安装 Python Playwright 与 Chromium。脚本不会自动下载依赖。 分别启动两个终端:game:dev(4180)和 game:reference(4181)。然后:

cd packages/mario-mix
python scripts/browser-compare.py

这会使用已在第一期实际源码中看到的 ?test=1、window.__test、window.__mixTest、window.__mixReady,对三角色执行 7 组步进序列。 它检查真实引擎返回状态;使用固定随机数和虚拟输入,不代表真实手柄、键盘事件、音频听感或完整关卡已通过。 缺资源、页面错误或状态不同会记录 failed-or-blocked 并非零退出。R05 历史记录未执行此项完整游戏验证。

维护者手工检查

原版与候选分别新开页面。首选比尔;至少试马里奥与洛克人的基本起步/跳跃,防止桥接影响其他角色。

场景预期
左右移动、正上、斜上、地面单下、空中单下和原始对照相同;八向瞄准优先级不改变
上下同按、左右同按和旧版一致,不私自“修正”优先级
空中先按住下+跳,落地继续保持不自动穿平台;释放后重按才产生新边沿
地表普通砖/问号平台下+跳允许既有下穿;hidden 或地面 row13 不可穿
敌人/弹丸穿过同一位置不得到玩家专有碰撞例外
死亡、换角色、进入与离开基地输入残留清理不退步
三角色死亡/暂停/胜利音频没有因重构出现额外变化;R05 未修改音频系统

记录浏览器、设备、角色、场景、候选 SHA-256、步骤、结果、录屏证据;有一项未测就写未测。

发布门槛

docs/RELEASE_REVIEW.json 默认为 pending。完整回归、键盘、实体手柄、音频、许可核验和维护者批准,分别需要 reviewer 与 evidence。candidateSha256 必须等于待审核候选。 game:release-check 仅验证记录与哈希匹配,不替人判断证据真实性。它不会发布。未通过时仍可以开展文档/测试贡献,不应谎称游戏已能正式发布。

返回项目资料