19 KiB
2026-10-23:过关音乐跨关续播与iOS切关排查
版本2026-10-23-jingle-through-next,基于dc83712(已发布A3,包含6abbc37与8f2263b)。独立包:../releases/NumberSwipe-main-A3过关音乐跨关续播-20261023.zip。保留旧发布包和解压目录,不上传、不推送。
- 用户真机对照:iOS中完成音/彩带播放期间立即点击下一关会卡一下;关闭音效后不卡。旧代码start→feedback.reset→audio.stop会向正在播放的完成音发出stop,并立刻finishComplete→BGM恢复。实际旧/新游戏包调用链对照见qa/jingle-next-trace-20261023.json,属于原生调用指令取证,不是iOS耗时测量。
- 按用户新要求,切关只取消旧关视觉、震动和过期落格音;保留正在播的3秒过关短音乐,既不stop、不改src,也不重播。BGM继续保持基础音量25%,由这首短音乐自身的自然结束回调恢复正常。
- 完成音占用第四路期间,新关卡移动、节点、指路和按钮音效借用原有三路普通池,保持四路音效上限,不抢占完成音;保持短音乐音量0.6375、基础BGM音量0.119及音高规则。
- 普通换关和重开保留正在播放的完成音。关闭音效、后台/音频中断、播放失败仍按原规则取消;再次完成新关卡维持完成反馈优先级。旧结束回调不能把新一轮完成音的BGM提前恢复。
- 检查包含117项模块测试、200关触摸回归及旧/新调用链对照。针对用例覆盖真实下一关按钮、规则/UI/节点不抢占、自然结束恢复、后台与静音、连续完成和异常分支。日志见qa/jingle-next-check-20261023.txt。
- 本版已移除“点下一关时停止正在播的完成音”的原生调用,但尚无本机iOS性能追踪;不能将浏览器或测试替身的结果称为真机卡顿已消除。请用新包真机复测这一明确时机。
2026-10-23:A3明亮软糖指路(包含6abbc37)
版本2026-10-23-soft-ribbon-a3-bright,以6abbc37为基础,包含iOS通关早点击负载优化、奇偶节点彩带、选关/规则/设置统一音效、设置冒号和“乐”字字重修复。独立包:../releases/NumberSwipe-main-A3明亮软糖指路-20261023.zip。旧包、旧解压目录不变;不上传、不推送。
- 按用户A3交接接入Canvas程序化软糖带,不使用PNG。保留0.235带宽比例(7–26逻辑像素)、圆润接缝、0.39pitch端点消隐;移除旧箭头、细白芯、双描边和目标圈。
- 原参数对照保存在docs/design/bright-classroom/concepts/hint-soft-ribbon-a3.tokens.json;有效提亮参数在同目录hint-soft-ribbon-a3-bright.tokens.json及正式tokens.json的hintSoftRibbon命名空间。杏橙主体提亮、柔冠由低透明暖白增至0.24、棕影由0.15降至0.09;尺寸、速度和呼吸周期保持设计值。
- 一段一个宽亮斑按真实弧长流动(60px/s,最短周期1800ms)。玩家落格不重置分段时钟;只过滤已走边,使用独立带面画布source-atop,帧帧从干净静态带面开始。
- 目标取真实单元轮廓,材质/桥→目标柔光→实际数字/规则符号/墙门依次合成;目标缓慢呼吸(2200ms,0.65–1),不缩放、不复制或写死目标数字。玩家已走格及外晕在软糖和目标光两层都排除。
- 弧长、合法圆角、静态带面和目标材质/符号层缓存;支持矩形、异形、孔洞和六边形。完成段、重开、换关和后台释放旧绘制状态;不支持离屏合成时保留静态带面。
- 新增6项A3模块测试,并更新旧箭头视觉断言。200关指路填色像素一致;完整测试/200关触摸记录见qa/a3-check-20261023.txt。浏览器尺寸与样张验收入口为qa/bright-classroom.html的“A3尺寸与动画验收”。微信/iOS/Android真机帧率与混合效果仍需上传后复测。
2026-10-23:iOS通关早点击与界面反馈修复
版本:2026-10-23-ios-clear-ui-fix,基于0cefce4。独立新包:../releases/NumberSwipe-main-iOS通关切换与界面反馈修复-20261023.zip;旧包及旧包解压目录保持原样,不上传微信,不推送远端。
- 用户真机复现条件为iOS微信小游戏,彩带播放后立即点击下一关会卡顿,稍后点击正常。上版通关时以“clear”新键重启下一关材质预热,与动画争抢时间。本版删除重复启动,通关停止预热;点击下一关先取消旧动画帧和预热,再执行切换。
- 通关静态背景在落格动画收束后保存一次,庆祝帧只合成背景和彩带,不反复绘制全部UI。设置、规则、尺寸变化、后台及换关会使背景失效;不等待2.6秒庆祝结束即可切换。
- 奇偶节点的有效落格现在开启原有局部彩带,方向节点仍保留音效、缩放与振动;最后一格只执行完成反馈,两组节点彩带上限不变。
- 游戏内选关、规则、设置和返回游戏统一使用现有audio/ui.wav。通关最初120ms内也允许按钮音效;不改变静音偏好。
- 设置统一为音乐:开/关、音效:开/关、振动:开/关。“乐”在旧Sans字体子集中缺失,已补齐500/600/700三个实际字重并保留原字库覆盖;数字和标题字形资源保持原样。
- 验收:104项模块测试;200关触摸回归;新增通关后0/40/110/300/3000ms切关及演出背景复用、统一按钮音效和字体覆盖测试。浏览器真实Canvas20组早点击切关记录见qa/ios-clear-browser-20261023.txt。
- iOS真机待复测。浏览器不替代真机性能验收;交专门打包上传会话上传后,重点验证连续过关立即切换、静音/后台恢复和不同密度关卡。
2026-10-23:回退音阶与流畅切关
版本:2026-10-23-descending-undo-fast-next;基于90d83b3的BGMA连续播放与节点缩放版。仅本地开发与打包,不上传微信,不开启开发者工具服务端口,不推送远端。
- 手势回退与撤销键按被撤销步号,使用前进同音色音阶逆序播放。例如7步回退播放7、6、5、4、3、2、1,最后一步清空仍发1;重开保持原音效。快速回退与前进共用三路声音池,过密声音只保留最新音高,不补播积压。
- 过关短音乐只调整播放增益:0.75→0.6375,降低15%。普通移动、节点、重开、BGM基础音量及通关压低/恢复逻辑不改;原WAV资源不变。
- 点击下一关不再现场求解:构建时准备并验证200关完整路线,源关卡哈希记录在src/prepared-routes.json。玩家仍按原公开规则自行操作,提示机制不变。移除start/showPlay的重复棋盘绘制。
- 下一关空棋盘的材质按空闲帧逐格预热,拖动暂停、超时取消;换关、选关、后台和尺寸变化终止旧任务。预热不产生声音、振动、进度或玩家反馈,缓存仍使用原有内存上限。
- 浏览器真实Canvas抽测第91/163/192关:62.3/130.5/152.6ms降为13.1/8.4/7.8ms;数据见qa/next-transition-browser-20261023.json。此为同机浏览器数据,不视为真机帧率验收。
- 验收:101项模块测试、200关触摸回归;原始关卡与上游快照不变,旧发布包保留。手势/按钮降序音阶、音量、BGM不中断、预热生命周期与单次绘制均有回归。
包:../releases/NumberSwipe-main-回退音阶与流畅切关-20261023.zip。交专门打包上传会话处理上传。
2026-10-23:居中标题与指定WAV音乐
版本:2026-10-23-centered-title-selected-wav。使用用户交付的NumberSwipe-BGM-LOOP-v1-20261023音频;旧版发布包保留。
- 标题保持原画并水平居中;设置移到总进度、关卡范围标签同一行。小屏仍为每页15关,按钮无重叠。
- 菜单30秒循环;每次进入关卡从67.2秒A、约65.455秒B中随机选一首循环。同关重绘、移动、静音恢复及后台恢复不重选,切关再随机。
- 通关短句替换原通关音,使用交付的3秒WAV,仅播放一次;通关之前先停止BGM,下一关恢复循环。短句沿用音效开关及实际起播同步,BGM沿用音乐开关,无动态压低或叠加。
- 原始44.1kHz/16bit立体声WAV原件保留于.audio-sources并记录哈希;运行BGM适配为22.05kHz/16bit立体声WAV,通关短句为同采样率单声道,完整时长与乐句保留。没有改用MP3或OGG。npm构建校验现成WAV,不依赖ffmpeg。
- 长BGM放入music分包,异步加载期间操作不阻塞;回调只播放当前场景,静音、后台、通关及加载失败均不会迟到播放。原始来源目录已从根工程与子工程上传配置中排除;music/CREDITS.md保留音源署名。
- 验收:89项模块测试、200关触摸回归;375及320×568浏览器布局,随机选择、分包取消、前后台与音效同步均有回归。微信真机音量、循环边界听感与分包下载仍需预览验收。
包:../releases/NumberSwipe-main-居中标题与指定WAV音乐-20261023.zip。工程仍为wechat-campaign-200-r2。
2026-10-23:参考图标题还原
版本:2026-10-23-reference-title-artwork。基于最新温暖无节拍BGM主版,本轮没有修改音乐、音效、震动、规则、存档或关卡。
- 移除普通字体描边模拟;使用参考图经imagegen提取的独立透明标题美术资源images/title-reference.png,保留定制橙紫字形、圆润奶油贴纸边、倒角高光及立体厚度。资源为2132×737,等比绘制,首加载完成自动刷新。
- 选关顶部按真实图片比例预留空间,小屏缩小网格间距,继续保持每页3×5关、触摸目标至少44px,进度与范围标签不被遮挡。
- 图片资源随发布包保存;浏览器预览与模拟宿主支持原生图片加载。
- 验收:83项模块测试、200关模拟触摸;375宽及320×568浏览器画面核对。最新温暖BGM资源哈希不变。真机显示仍需微信预览确认。
包:../releases/NumberSwipe-main-参考图标题还原版-20261023.zip,保留之前版本。
2026-10-23:温暖无节拍关卡BGM试听版
版本:2026-10-23-warm-ambient-bgm。用户选择试用温暖、无节拍、弱旋律方向;本轮仅替换关卡音乐,选关音乐保持原文件哈希。
- 原创32秒循环:低中音区柔和和声缓慢交叠,没有鼓点、规律敲击或突出旋律;采用周期波形与平滑交叉渐变,避免循环接缝。
- PCM均方根约0.035,峰值小于0.17,关卡播放音量0.14;选关音量仍为0.16。保留音乐/音效/振动独立开关及后台、中断恢复。
- 节点确认音、通关和弦、缩放、触觉、存档、选关标题及200关规则保留。之前节点跟手与立体标题发布包保留。
- 验收:80项模块测试、200关触摸回归;生成资源的接缝、包络突变、音量及开关恢复检查。实际听感与真机扬声器/耳机效果需用户试听。
试听资源:music/play.wav。发布包:../releases/NumberSwipe-main-温暖无节拍BGM试听版-20261023.zip。
2026-10-23:节点反馈与立体标题
版本:2026-10-23-responsive-nodes-sticker-header。开发分支:codex/node-feedback-responsive。以当前正式主工程为基线;没有从历史副本覆盖文件。
- 修复只有固定数字触发checkpoint的问题:合法到达数字、奇偶、方向节点均使用独立checkpoint-N确认音及中震;最后一格只触发完成和弦。错误不冒充节点,也不参照答案判断。
- 所有普通落格、回退落点(撤销最后一步时为被撤销格)、错误局部提示改为90ms小回弹,峰值1.025;特殊节点90ms峰值1.065。只缩放块体表面,文字锚点、规则线和命中区域保持稳定。
- 回退和撤销加入轻震。经用户选择保留轻/中强度,把普通震动最短间隔70ms改为61ms,连续触发密度约增14.8%;不宣称单次物理强度提高15%。短震降级、关闭开关、预览禁震及后台取消继续有效。
- 原数字节点彩带的触发、范围、最多两组及1500ms时长保留。新增奇偶/方向节点使用较大缩放和确认音,不额外扩大彩带。
- 选关标题按参考图使用橙紫双色、奶油描边和叠层立体处理;进度奶油标签、关卡范围橙色标签。保持每页15关及320×568安全区域。
- 选关与关卡BGM正常保留,音乐资源、音量及独立开关本轮没有更换;音效、震动和回退不停止音乐。
验证:78项模块测试通过(含200关每一步特殊节点音效断言),200关模拟触摸回归通过;375宽、320×568浏览器排版通过。200关提示填色像素复核记录见qa。真机音效起播、振动手感与高密度帧率仍待iPhone和Android验收。
BGM待选方向:①温暖无节拍氛围,低音区软垫与缓慢和声、弱旋律(优先推荐);②稀疏毛毡钢琴,少量低中音、长留白;③柔和木质环境音,去固定节拍、极少敲击,保留教具室气质。当前16秒循环暂留,未擅自替换。
包:../releases/NumberSwipe-main-节点跟手与立体标题-20261023.zip。之前主版本包保留。
历史开发记录
2026-10-23 本版本已提升为正式 main。以下独立实验版和不替换主版的说明仅描述提升前历史;当前入口以 README.md 和 release-info.json 为准。
本轮更新:音乐与流动指路(2026-10-22)
- 每页15关,3列×5行(末页5关左对齐);完成数字后绘制圆润勾。320×568仍保持44px以上格子。
- 选关按钮与指路启用分别播放新短音;选关、游戏各有一首原创16秒稀疏木琴循环,低音量独立播放器,不占用四路反馈池。
- 游戏右上角统一进入设置,只有音乐、音效、振动三个独立存储开关;旧减少动态存储不再限制本版表现。
- 数字节点经实际操作测试确认:小幅回弹、中震、checkpoint-N音;终点只用complete和弦,无节点叠加。方向格步号缩小保留线路。
- 指路箭头沿完整分段保留位置;前进一步旧箭头180ms冲向终点,新箭头65px/s出发;不按剩余路线长度重置相位。
- 后台、音频中断停止音乐和反馈;恢复后按场景播放。原版声音资源及上一版包保留。
验证:72项模块测试、200关模拟触摸通过;浏览器375宽与320×568排版、200/200关提示前后及撤销重画的玩家填色像素检查通过。iPhone/Android真机音量、触觉及帧率待验收。
当前独立包:NumberSwipe-campaign-200-r2-分层反馈二版-音乐与流动指路-20261022.zip。主版与历史包保持原样。
分层反馈独立版验收记录(2026-10-22)
当前主版本保持不变。本目录是独立开发副本,版本标记为 experimental-layered-feedback,基于 2026-10-22-resume-chapter-lessons。不回写 Variants 主目录,也不覆盖其他工作树及历史发布包。
使用与验证
解压独立包后导入微信开发者工具,重新编译并生成预览二维码。源代码目录运行:
node build.mjs
node --test feedback.test.mjs resume-select.test.mjs bright-classroom.test.mjs hints.test.mjs lessons.test.mjs audio-copy.test.mjs
node smoke.mjs
./package.ps1
浏览器验收页:
$env:NUMBERSWIPE_QA_PORT='17861'
node qa/serve.mjs
打开 http://127.0.0.1:17861/qa/bright-classroom.html,使用“反馈对照”选择原版/强化版。此页不发起触觉;原音效保存在 audio-original/,哈希记录在 qa/original-audio-sha256.json。正式设置只增加“振动”开关,没有强度滑杆。
实现与参数
| 内容 | 实现 | 验收依据 |
|---|---|---|
| 实际操作事件 | layered-feedback-build.mjs 在追加、回退、错误及完成处注入事件;每次原生触摸回调的插值批次统一提交声音和最高级触觉 |
高速单次移动跨三块得到 move、move、complete;序号与步号递增 |
| 数字节点 | 固定数字大于1、步号匹配且现有规则无冲突;终点只发 complete | 合法但偏离唯一解的移动仍按普通事件处理,不用答案判断反馈 |
| 回退确认 | backtrack.mjs 对原命中多边形并集的外边界计算距离,内缩 min(3,0.06u);剔除异形内部拼接边 |
方形、凹口、六边与真实拖动测试;起手和前进命中未扩大,按钮撤销即时 |
| 普通落格 | 120ms,最低缩放0.985;新桥100ms展开;数字、通道、墙门、命中轮廓不缩放 | landingScale 边界测试和原有200关几何回归 |
| 数字节点 | 回弹最高1.035,260ms结束;原局部彩带最多两组;回退节点取消其彩带 | 多个节点先到达、后绘制的测试;通关清空未结束节点 |
| 完成 | 即时完成章;庆祝沿用原2.6秒规模;实际 onPlay 在120ms内作为起点,否则锁定逻辑起点 | 迟到回调不重启;音频中断、后台、换关取消旧演出 |
| 音频 | 四路:三路移动、一路节点/确认;普通音超过20次/秒合并到最新步号;通关停掉残留音 | 最新步号、四路停止、静音取消、回调代际测试 |
| 触觉 | 独立键 number-swipe:haptics:v1,默认开;普通轻震70ms限频;节点中震替代轻震;完成中震后90ms轻震 |
关闭、预览、旧任务、迟到失败回调、短震降级测试;从不调用长震 |
| 选关 | 始终每行3关,每章10关;通关绿色、当前紫色 | 四档手机尺寸与三列断言;截图 qa/layered-feedback-three-columns.png |
集中参数在 src/feedback-params.mjs。反馈调度和生命周期在 src/feedback.mjs,触觉适配在 src/haptics.mjs。四份上游快照未修改;所有规则、关卡、顺序、续玩存档、提示和手动下一关继续保留。减少动态关闭块体缩放和彩带运动,音效和振动分别控制。
重开、换关、选关退出、后台和音频中断会取消旧音频、触觉延迟任务与表现事件。硬件不支持强度时只降级为一次短震;不可用静默跳过。一次原生触摸回调产生多个插值事件时,视觉事件逐个保留,音频与触觉采用最高优先级,不补播过期的低级触觉。
证据与结果
| 证据 | 结论 | 复现入口 |
|---|---|---|
| 67项模块测试通过 | 事件优先级、回退确认、触觉代际、原音效哈希、音画同步与已有模块回归通过 | 上述 node --test 命令 |
| 200关模拟触摸通过 | 关卡唯一解、合法移动、撤销重开、存档与分段指路未破坏 | node smoke.mjs / validation.json |
| 浏览器200关稳定画面填色采样通过 | 开启提示和撤销重画后,玩家填色保持一致 | qa/hints.html |
| 强化移动音第1/36步 RMS 约1503/555 | 高步号能量降低,36步逐半音关系仍在 | feedback.test.mjs、audio-copy.test.mjs |
| 主版源文件基线逐项哈希一致 | 独立开发没有改写当前主版 | 工作区同级 wechat-campaign-200-r2-layered-feedback-baseline.json |
真机验收:待完成
| 设备 | 状态 | 仍需确认 |
|---|---|---|
| iPhone | 未进行 | 轻/中震差别、90ms组合舒适度、高步号音色、密集关跟手、实际音画同步与帧率 |
| Android | 未进行 | 强度不支持时的短震降级、连续震动舒适度、同上音效与性能项目 |
浏览器和模拟器结果不作为真机通过。本轮没有可用的iPhone/Android设备会话,没有上传或发布小游戏。