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

6.1 KiB
Raw Blame History

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。

关卡结果见 候选池扫描。排除单格后,第二池兜底为共 81 个主线关卡;第 68 关自身仍选择第一池(6 个普通候选)。主线共 13 关三池为空,按约定跳过。