配对码与认领(B): - POST /api/pair/start|join:6 位码 10 分钟单次有效、仅存内存零泄露面、5 连错 per-IP 封锁 10 分钟;join=新设备档案按桶 LWW 并入老档案+token 改绑(复用 claim-merge);日志脱敏 - 大厅:生成配对码(speechSynthesis 逐位朗读+aria-live+重听)/从其他设备转入(one-time-code 输入框)/从本机移除/401 过期自愈引导/aria 补全/玩家名可听化 - api-smoke 12/12(配对全流程/频控/封锁/过期自愈/移除/digitsToCn)+ CDP 真浏览器 E2E 22/22 键盘语音双套资产(A,路线 a): - 164 变体句(8 游戏 grep 实测,超出调研预估 153:含轻触/点两下/按住变体)×2 性别=328 生成 656 文件 36.9 分钟;触屏主资产零字节改动(PCM 逐样本比对后还原) - 引擎 _candidates 三跳路由 key→gender→平铺(inputMode 跟随);缓存键 mode|gender|id;engine-input 新增 K9 路由断言(72 条) - check_all_assets 增 key 列(两性别一致且 ⊆ 主集)8 游戏全绿;voice_text.json 增 __key__ 表;live control.mjs key 会话对照键盘措辞验收(集成) - voice-ids 文档:8 游戏键盘变体小节由 KEY_LINES 程序化生成(与台词表逐字断言一致);补齐 storyline/escape/simon 三个历史缺失文档;design README 增 new8 索引 - mock 适配:playtest persona 加 maxTouchPoints=1 保持触屏链断言语义零改动 回归:12 套件全绿(8 playtest + guide 122 + engine-voice 19 + engine-input 72 + api-smoke 12/12) 同批入库:批次 2/3 已完稿设计文档(17-abyss/18-detective/19-cipher 全套,20-22 在途)
节拍行者(RHYTHM)
跟随领奏的节奏游戏,纯音频。系统奏一句,你在下一小节原样跟打—— 音要对,拍点也要对。建议戴耳机(有线优先,蓝牙延迟由 Good 窗口吸收)。
玩法
- 每个乐句 = 领奏 1 小节 + 应答 1 小节:先听系统用打击乐器演奏 2-4 个音的节奏型,然后在下一小节的相同拍点用相同手势跟打。
- 判定:Perfect ±150ms(乐器音 + 亮音 accent)/ Good ±350ms(只播乐器音)/ Miss(手势错或错过拍点:该音符不出声 + 一声闷镲 + 震动提醒)。 判定时刻按真实触摸时刻算(引擎 immediateTap 按下即发 tap;滑动/双击按 识别延迟补偿回触摸时刻)。Miss 不中断不掉血,歌照唱完。
- 计分:Perfect=2 / Good=1 / Miss=0,评级 S≥95% / A≥85% / B≥70% / C。
- 连击每 16 次有震动鼓励;乐句全 Perfect 有额外震动。
- 3 首曲目解锁制:《启程》90 BPM → 《追风》105 BPM(反拍)→ 《星爆》120 BPM (切分密集)。曲目 n 拿到 B 级以上解锁 n+1,解锁状态本地保存并同步大厅。
手势 → 乐器音
| 手势 | 乐器音 | 声像 |
|---|---|---|
| 单击 | 底鼓 kick | 中央低频 |
| 双击 | 军鼓 snare | 中央偏上 |
| 左滑 | 闭合镲 hat | 极左 |
| 右滑 | 开放镲 hat | 极右 |
| 上滑 | 高通 tom | 升调感 |
| 下滑 | 低通 tom | 降调感 |
| 长按 | —(非演奏手势) | Miss 反馈音 + 震动提醒 |
你的每次出手都会实时奏响对应乐器音——跟对了,就能听到自己在演奏。
流程
- 首次进入:一句欢迎后进入 5 步交互教学(单击 → 左右滑 → 上滑 → 下滑 → 三音带双击),做错有纠正语音(早了/晚了/不是这个手势),同一步失败 2 次 自动跳过;全程零通过时收尾播中性句(不夸"很好");教学中下滑 = 跳过 教学(教到下滑步、临近下滑音符时除外——那时它是演奏)。
- 选曲(二周目起):左右滑切曲目(播曲目名/未解锁提示),单击开始, 上滑听规则,下滑回大厅。
- 结算:播报评级(含准确率档位)与连击纪录;单击 = 再来一遍(同曲), 右滑 = 下一首(需已解锁),下滑 = 回大厅(先播"回大厅"确认再跳转)。
菜单
演奏中下滑呼出(模态暂停:谱面、判定、BGM 全部冻结,BGM 断点续播)→ 单击循环选项(继续演奏/回大厅)→ 双击确认 → 上滑 = 帮助(规则 + 设置引导)。菜单打开后 1 秒去抖独占期:期内不收任何手势(防演奏途中被 弹菜单时,已在路上的手势直接穿透菜单误确认)。 注意:下滑同时是"低通 tom"的演奏手势——自下滑音符的领奏响起到判定 死线之间,下滑永远是演奏;音符刚被判定死线拖死的短窗内(识别延迟、手势 还在路上)同样按演奏处理,绝不弹菜单;仅当没有悬置、临近或刚拖死的下滑 音符时才呼出菜单。
运行
python3 -m http.server 8105 --directory /home/ubuntu/SoundGame/web
# 浏览器打开 http://localhost:8105/rhythm/ ,建议戴耳机