Files
SoundGame/research/rhythm-drummer/round1/live-player.md
T
xsl ae850a4ce0 feat(rhythm): 鼓手模式重构——屏幕六区鼓组 + 无鼓伴奏合拍(用户裁定重构)
- 屏幕3列×2行六区鼓组(列=声像左中右/行=音高上亮下沉),六件程序合成打击乐,三重冗余蒙眼可辨
- 无鼓伴奏BGM上跟随领奏 call&response + 加花句;3曲90/105/120 BPM解锁制,BPM实测89.99/105.00/120.01
- 引擎后向兼容扩展:onGesture补{x,y}坐标(单参回调零感知,15游戏+3引擎测试全量回归零失败)
- 判定简化:全部音符=分区点按零延迟,旧双击补偿/下滑折中退役;键盘Digit1-6+空格=家区
- 教学摸鼓认区(摸哪报哪,8s无触摸自动进阶)+重教≤2+降速DDA+归因真话律
- 保留旧作好评:跟随领奏核心/S~C评级/解锁制/判定口径/guide工程遗产
- 语音49id双性别+8key;R1+R2连续2轮4/4愿意玩P0=0裁定可交付;live直证33 Perfect dt≈0.00s
- 03号文档仅文末加取代指针;新设计24号;档案research/rhythm-drummer/;Mureka累计$1.35
2026-09-14 20:17:10 +08:00

52 lines
3.5 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.
# 《节拍行者》鼓手模式 R1 全拟真试玩报告
两会话均真机跑完(live harness:真 chromium + SenseVoice ASR 听游戏实况,非 mock;
控制端口 8142,游戏服务器 8001)。驱动为事件流跟随器(vibrate 锚定真实发声时刻 +
谱序消费),节奏精度经多轮校准后 dt≈0.00s。
## 局 A(主线 · male 1.0× · guide=full · 教学+曲目一全 Perfect 弧线)
- 产物:`live/A/`(events.jsonl 40KB / mix.webm 4.7MB / transcript.md / verdicts.json)
- ASR 判定:**OK 11 / TRUNCATED 5 / MISMATCH 2**(SFX_BGM_ONLY 间隙探针 7)
- 完整弧线实录:摸鼓认区(zone_tl OK)→ T1 降速重演(gd_slow OK sim=1.0)→
T2/T3 通过 → tut_done(OK sim=1.0)→ 数拍 → gd_answer(OK sim=1.0)→
mid_song(OK sim=0.8)→ tut_fill(OK sim=0.92)→ **grade_a(A 级)→
unlock_song2(OK sim=0.93)→ restart(OK)**,全链无人为干预走通
- 演奏精度:**33 记 Perfect accent / 4 记 Miss**——跟随线程与游戏判定网格的
逐音配对(pop 日志 entry.when ≈ vibrate.ta ±0.02s)证明判定窗(±0.15/±0.35)
在真机触摸链路(CDP 合成触摸+HTTP)下准确兑现
- 归因(全部非游戏缺陷或已修级):
- TRUNCATED welcome/tut_map/tut_probe = 驱动故意三连跳旁白(kill)
- MISMATCH zone_tr / new_best_combo = 短句 ASR 同音近失(「右上吊镲」→
「有上调查」;「新连击纪录」→「新联机记录」),cipher 批次先例同款
- TRUNCATED zone_bl = 探针第三击触发进阶时 stopVoice 切断区名(P2)
- TRUNCATED gd_miss = 曲尾连 Miss 的向导句播 1.1s 后被结算评级语音顶掉
(半句「慢了半拍。」)——P1(F1)
- 曲终 4 记 Miss 系驱动 clearPending 误杀尾单补发(驱动侧 artifact,已修)
## 局 B(压力线 · female 1.7× · guide=standard · bgm 0.3 · 错区乱打+菜单+长按)
- 产物:`live/B/`(events.jsonl / mix.webm 3.3MB / transcript.md;verdicts 因驱动
超时未及落盘——control 层 artifact,非游戏问题)
- 关键机制实录:跳教学(tut_skip)→ 数拍 → **错区乱打全程 guide=standard
零向导语音**(gd_* vstart = 0,earcon/震动照发)→ 32 记 error 震 + grade_c
→ 曲中菜单(下滑→单击切选项→上滑帮助→下滑恢复,恢复后网格平移续播)→
长按死输入(闷镲+error 震,不判定不归属)→ 结算链
- 1.7× 语速下语音链无截断无风暴(保险丝零触发)
## 结论
- 教学 DDA(gd_slow)、归因真话律(gd_miss_none)、count-in 恢复(gd_count)、
模态菜单断点续播、错鼓闷镲反馈、长按死输入定义——全部实况兑现
- 判定网格精确性真机直证(33/37 Perfect 级命中,dt 均值 ~0.00s)
- 无死锁、无状态错乱、非资产类 console.error = 0
- 基础设施教训(沉淀,惠及后续 live 驱动):
1. 事件流驱动必须单飞拉取(并发 pump 同 since 窗口 → 事件重复入队错位)
2. start 事件带 `when` 字段:when>0=排程领奏 / when=0=即时(玩家击/闷镲),
玩家击会回声触发跟随循环,必须双重过滤
3. 发声时刻锚定用 vibrate 事件(setTimeout 按 ev.time 触发),不用 start 的
t(含 _load 时序噪声)
4. BGM 的 source.start(t0) 也是 when>0 的 start 事件,入队前必须按 layer 过滤
5. 视口坐标:control 默认 390×844,三区边界 130/260(驱动初版按 300×600
导致右列全部敲成中列)