8.3 KiB
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设备会话,没有上传或发布小游戏。