MatchMaster/docs/rainbow-old-implementation.md
WIN-GKKD951VVMJ\Administrator bd4984c909 老彩虹最新更新
2026-09-21 18:03:23 +08:00

51 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# C 老彩虹实现与验证
## 临时测试开关
`GameConfig.forceOldRainbowWinStreakC = true` 当前默认开启:强制使用 C 组,启动、登录、回首页、进关时设为十连胜,输赢或退出都保持十连胜;临时跳过连胜关卡解锁门槛。真实 AB 分组不被覆盖,候选池、空池跳过和帮助关限制不变。
测试完成后将此开关改为 `false`,重新启动即可恢复真实 AB 分组、解锁门槛和正常连胜增减规则。测试过程中保存在本地的十连胜不回滚,关闭后下一次失败会按正常规则清零。
## 行为
- `abTests.layer_two === 3` 启用 C;资格沿用连胜解锁、十连胜、主线限制。
- 1×1 单格块(`block === 0`)全局排除,不论普通块还是特殊机制块都不能进入三个候选池。
- 墙体和方块就绪后按三池优先级选择完整方块,待转场揭幕后播放独立的满瓶开场动画:从屏幕左侧外沿曲线飞入屏幕中心,短暂停留晃动,再从瓶子中心释放原有彩虹粒子到目标块。瓶子在释放后淡出;落地时转换,尾迹消散后开放操作,开场引导延后显示。保留真实 `color`、类型、附件及限制,以 `oldRainbow` 标记通色能力。
- 彩虹只能忽略门和单色地块的颜色要求;其他门、墙和方块机制照常判断。正常出门及锤子消除仍走原事件流程。
- 同局只发一次,复活不重发,重新开局重新判断资格。空池跳过,后续不补发;生产队列不入开局池。
- C 首页、胜负结算、连胜说明复用 B 展示,游戏底部使用 A 的四按钮居中布局;原底部瓶子与背景始终隐藏,只作为开场动画的图像模板。彩虹瓶只用于开场这一次动画,之后不收集、不再次施放,也不发放连胜锤子。空池直接跳过动画。
## 预制体
使用已有 `Block_Prop[25]` 的 `rainbow_old`。`bg` 使用对应形状的 `100color0~22`,`mask` 使用新提供的对应形状 `100color0_mask~100color22_mask` SpriteFrame;两组帧均在预制体内序列化绑定。保留两张大彩虹纹理并按整块尺寸适配。原底色隐藏,钥匙、花瓣及其他机制附件保留。
新遮罩接入及 0.5 秒入场/0.5 秒停顿调整后,35 项 C 彩虹回归通过。已核对 23 张遮罩引用和所有形状适配,并在浏览器第 1 关观察到新遮罩正常显示,控制台无警告或错误。
## 单格漏选修正(2026-09-20)
- 原 C 运行时和离线扫描共同漏掉了 B 已有的单格排除,因此一致性测试未发现需求遗漏。现将 `block === 0` 放在三池分类之前统一排除,覆盖普通块及所有特殊机制。
- 新增三个回归场景:各类单格均不入池、混合盘面只选择多格候选、全单格盘面跳过并释放操作且不补发。三项修复前均失败,修复后通过。
- 修正后五个 C 彩虹测试文件共 35 项通过,包含运行时与 2,030 份关卡静态扫描结果的一致性检查。
- 重新静态扫描 2,030 份配置,新增主线空池关卡:735、929、973、1103、1119、1646、1898、1915、1922、1950;遵循空池跳过且不补发规则。该检查没有恢复已取消的 100 关随机运行任务。
## 曲线入场改版验证(2026-09-20)
- 5 个 `tools/test-rainbow-old-*.cjs` 文件共 32 项通过;其中开场控制器 9 项覆盖屏幕外入场、变换后的父节点坐标、中央停留与发射、瓶子淡出、后台暂停、大帧间隔和中断清理。
- `test-first-game-entry.cjs` 的 78 项及底部布局的 5 项定向回归通过,确认 A/C 四按钮对齐、B 原布局和开场解锁时序。
- 动画控制器及其依赖的 TypeScript 语义检查 0 错误;`git diff --check` 通过。
- 参考用户视频第 9~13 秒,按最新要求调整为 0.5 秒曲线入场、0.5 秒中央轻晃停留、0.7 秒粒子飞行;瓶子在释放后 0.15 秒淡出,尾迹结束再解锁。入场到落地共 1.7 秒。
- 加速调整后,开场控制器 9 项回归通过;已刷新预览产物并在浏览器确认加速后的入场、中央释放、转换和尾迹结束,控制台无警告或错误。
- Cocos 预览的 Recompile 本轮未刷新缓存,使用当前两个修改脚本的 TypeScript 转译结果更新忽略目录中的预览产物,保留原 Cocos 模块注册后刷新。实际浏览器第 1 关观察到左侧入场、中央瓶子、中央发射、整块转换及瓶子消失;底部四按钮居中,动画期间倒计时未开始,结束后成功拖动彩虹块出门,控制台无警告或错误。尚未做手机验收。
- 用户要求的 100 关随机运行审查已终止,本轮没有继续该任务。
## 前一版底部固定瓶验证(2026-09-20,历史记录)
- 5 个 `tools/test-rainbow-old-*.cjs` 文件共 29 项通过,包括 2,030 份配置分类一致性、满瓶飞行、落地转换、尾迹结束后解锁、转场与前后台暂停、失败重试、单次转换、空池、门消除事件、23 种形状 × 10 种颜色及连续滚动覆盖。
- 本轮 `test-rainbow-streak.cjs`、`test-first-game-entry.cjs` 共 128 项:127 通过,1 项为已确认在 HEAD 上也失败的 B 彩虹能量旧期望,未调整原断言。新增 C 首入、后续进关的不同转场时序、销毁中断及满瓶隐藏不重排验证均通过。
- 修改的 TypeScript 转译检查通过;新视觉脚本语义检查通过;`git diff --check` 通过。
- 点击 Cocos 预览的 Recompile 更新缓存脚本后,在浏览器第 1 关观察到左下满瓶、飞行粒子、落地整块转换、尾迹结束后瓶子及背景隐藏,随后显示首关引导。动画期间倒计时未开始,结束后方块可正常拖动。未记录到警告或错误;尚未在手机上验收。
测试使用 Node 内置测试器;未安装本地 TypeScript 时,可将 `TYPESCRIPT_PATH` 指向编辑器附带的 `typescript.js`。
关卡结果见 [候选池扫描](rainbow-old-candidate-scan.md)。排除单格后,第二池兜底为共 81 个主线关卡;第 68 关自身仍选择第一池(6 个普通候选)。主线共 13 关三池为空,按约定跳过。