storyline/escape/simon 首批之后的推广收官:15 款全部按 26 号模式运行 (发言权/回执/三档提示/迷茫接管/手势阶梯/断点复述),旧「双击重听/格挡/ 菜单确认」等反模式口径全线废除,开场零规则念白(首句即动手)。 游戏层(12 款):rpg(格挡=前摇窗口内再单击)/ rhythm / space / radio / dungeon / abyss / detective / cipher / teahouse / keeper / bridge / hunt(联机切片): - 每款 game.js 接引擎六模块 + makeInputPipeline(doubleTapWindow:0); 四向玩法类 swipeCore + 长按帮助;双击是玩法的(space 护盾 / hunt 旋风斩)按手势阶梯阶段 3 分档恢复双击窗口(doubletapCore) - 每款 playtest 重写:玩法断言 + §6.2 乱点机器人(无声操作 / 被动 原句重复 / 打断失败 = 0);15 款 3900+ 断言全绿 - 12 份 docs/design/26-apply-*.md 施工单 + tools/voice_lines_26/ 台词清单 + voice-ids 文档同步 + 转写会话剧本按新口径重写 引擎层(web/engine/,6 处修复):pipeline 增 doubletapCore;novice teachLine 带 voice/ 前缀(此前教学句被静默丢弃);confusion.record 前置到新手门(锁定手势的乱点也计信号);InvalidHints 播完恢复解释前 状态(根治孤儿 BUSY);WaitPoint takeover(2) 台账去重;台账只在 speak 真正播出时登记。遗留引擎债登记 roadmap §3.1。 语音资产:台词表合并(新增 ~250 系统句 / 改 ~50 旧口径 / 删 ~110 废止句;合并器 tools/merge_voice_lines_26.py + 引用校验器 tools/validate_voice_refs.py),GPU 重录 1536 wav → 4204 ogg/m4a 落地,check_all_assets + validate_voice_refs 双绿;键盘变体同步扩表。 大厅/文档:15 款统一新交互口径(「新交互」徽标退役);README / HANDOVER / rpg README 旧口径修正;roadmap P0-P3 置完成。
11 KiB
11 KiB
26-apply · 《节拍行者》重构设计单(26 号文档落地)
按 26 号文档附录 C 填写。交互规则权威来源:26-audio-interaction-playbook.md。 玩法权威来源:24-rhythm-drummer.md(谱面 / 判定窗 / BPM / 解锁 / 评级 / 音色全部不动)。 台词清单:tools/voice_lines_26/rhythm.md;登记副本同步 24-rhythm-voice-ids.md。
1. 一句话核心动作
屏幕是一面 3×2 鼓组。领奏敲一小节,你在下一小节同一拍点敲同一面鼓。
2. 玩家可感知的状态(3 个)与声音身份
| 状态 | Floor | 听感 | 来源 |
|---|---|---|---|
| 演奏(摸鼓 / 教学跟打应答窗 / 正片) | ACTION |
无鼓伴奏 + 鼓声音色(声像+音高)就是状态;点按即敲,无等待声 | §4.1 |
| 演出(开场指令后探针之外无;教学指令 / 数拍 / 领奏示范 / 结算评级链) | SPEAKING / BUSY |
语音链(教学指令 critical);数拍与示范小节只有内容音,手势给 busy 回执 | §4.1 |
| 等你(选曲 / 结算 / 菜单 / 续玩问询 / 教学跟打等待点) | YOUR_TURN |
交接提示音 → 等待声;教学跟打等待点关等待声(演奏语义,24 号 A27) | §4.1 |
首次教:sys_turn_teach「听到这个声音,就是轮到你了。」在曲目一第一个应答窗前随交接提示音一起出现(每账号一次)。
3. 新手手势表与解锁阶梯
| 手势 | 演奏 ACTION | 选曲 / 结算 / 菜单 | 解锁 |
|---|---|---|---|
单击(分区坐标,immediateTap) |
敲该区(判定 / 自由演奏出声) | 开始 / 再来 / 确认菜单项 | 阶段 0 |
| 左 / 右滑 | invalid 回执(非音符,不出声) |
切曲(每项报名)/ 结算下一首 / 菜单换项 | 阶段 0 |
| 上滑 | 状态查询一句(同长按) | 状态查询 / 帮助一句 | 阶段 1(第一次成功跟打,ladder.onGoal()) |
| 下滑 | 阶段 2 前回执 invalid;阶段 2 后无条件暂停菜单 |
菜单 / 回大厅 | 阶段 2(一首曲子打完,ladder.onGameDone()) |
| 长按 | 状态查询(曲目 / 段落 / 连击一句 ≤20 字;setRateBoostEnabled(false) 豁免快进) |
帮助 / 重听最近播报 | 阶段 0(本作核心手势,longpressCore) |
| 双击 | 当单击(同区两记连续点按本来就是两次 tap,doubleTapWindow: 0) |
阶段 3 后重听最近播报(sys_say_again 前缀) |
阶段 3 |
键盘平行通道:Digit1–6 / 小键盘 1–6 = 六区,按下即发零延迟(tapcancel 撤销认领同步适用);空格落 BC 家区;选曲 / 结算 / 菜单态数字键不生效。
4. 状态 × 手势矩阵(新手期)
| 状态 \ 手势 | 单击(分区) | 左 / 右滑 | 上滑 | 下滑 | 长按 | 双击(未解锁) | 连点 / 乱滑 |
|---|---|---|---|---|---|---|---|
| 开场指令(SPEAKING,critical) | busy 回执 | busy 回执 | busy | busy | 状态句 | 折算单击→busy | busy |
| 摸鼓探针(ACTION) | 敲区出声 + 首摸报名(silent-ok) | invalid 回执 |
invalid 回执 |
invalid 回执 |
状态句 | 敲区 | 每下都出声(探索礼物) |
| 教学指令 / 数拍 / 领奏示范(SPEAKING critical / BUSY) | busy 回执 | busy 回执 | busy | busy | busy | busy | busy |
| 教学跟打应答窗(YOUR_TURN,无等待声) | 敲区判定(silent-ok;错鼓=invalid+归因) | invalid 回执 |
状态句 | invalid 回执 |
状态句 | 敲区 | 合法连击(hold) |
| 正片(ACTION) | 敲区判定(silent-ok;窗外自由演奏出声) | invalid 回执 |
状态句 | 阶段2=菜单 / 回执 | 状态句 | 敲区 | 合法连击 |
| 选曲(YOUR_TURN) | 开始当前曲(未解锁=invalid+song_locked) | 切曲报名(30s 台账去重后只给提示音) | 帮助一句 | 阶段2=回大厅 / 回执+解释 | 帮助一句 | (阶段3)重听 | 400ms 防连点 busy |
| 暂停菜单(YOUR_TURN) | 确认当前项 | 换项报名 | 重听菜单说明 | 关闭菜单恢复 | 重听菜单说明 | (阶段3)重听 | 400ms 防连点 busy |
| 结算(YOUR_TURN) | 同曲再来 | 右=下一首(未解锁=invalid+song_locked;末位=restart 句) | 重听评级 | 阶段2=回大厅 / 回执 | 重听评级 | (阶段3)重听 | 只处理第一下 |
| 续玩问询(YOUR_TURN) | 继续上次曲目 | 右=重新选曲 | 帮助 | 回执+解释 | 帮助 | (阶段3)重听 | 400ms 防连点 busy |
无空格:每一格都有回执或内容音;invalid 在演奏态只给回执不解释(应答内零语音,24 号 §0.5),在等待态首次附一句解释(原则 7)。
5. 等待点配置表
| id | 期待 | full | short | 静默阈值 | L2 | L3(onDemo) |
|---|---|---|---|---|---|---|
select |
tap | select_full「单击,开始。」 | select_short「单击。」 | 18s/40s | 只留 tap | 提示音 |
settle |
tap | settle_full「单击,再来一遍。」 | settle_short「单击。」 | 20s/45s | 只留 tap | 提示音 |
menu |
tap/left/right | menu_help | menu_help | 20s/45s | 只留三手势 | 提示音 |
reopen |
tap/right | sys_continue_ask | select_short | 18s/40s | 只留两手势 | 提示音 |
tut_0(家区跟打) |
tap | tut_kick_full「家区在下中。点一下。」 | tut_kick_short「点下中。」 | 8s/16s | 只留 tap | 演示:游戏把本步音符敲一遍再交回 |
tut_1(左右下跟打) |
tap | tut_sides_full「左下,再右下。」 | tut_sides_short「左右下。」 | 8s/16s | 同上 | 同上 |
tut_2(上排跟打) |
tap | tut_top_full「上排三个,挨个敲。」 | tut_top_short「跟上排。」 | 8s/16s | 同上 | 同上 |
- 教学跟打等待点在应答窗开时
yieldTurn且bedEnabled=false(交接提示音响、等待声不响)——演奏语义(24 号 A27);窗到期评估完成/失败即摘点。 - 摸鼓探针(T0)不是等待点:ACTION 自由探索,任意敲出声 + 首摸报名,摸 ≥3 区或 8s 无触摸自动进 T1(探索是礼物不是门槛,24 号 §6)。
- 正片全曲 ACTION,不挂等待点、不挂等待声;应答小节内零语音(hint/feedback 播不出就丢,§4.6)。
6. 首 3 分钟逐秒脚本
| 时间 | 游戏说 / 播 | 期待玩家做 | 没做 | 做错 |
|---|---|---|---|---|
| 0~3s | 「点一下屏幕。」(critical)→ 摸鼓探针开(ACTION) | 任意敲 | 8s 自动进 T1(不卡流程) | 滑动:invalid 回执 |
| 3~10s | 区音色 + 区名(第一次成功=第一声鼓);首摸后「摸到三个不同的地方,我们就开始。」 | 摸 ≥3 区 | 同上 | 重复摸:只出声不报名 |
| 10~30s | T1「听我敲下中,你跟着敲。」→ 木鱼数拍 + 领奏示范(BUSY)→ 交接提示音 → 应答窗(YOUR_TURN 无等待声) | 敲家区 BC | 8s:tut_kick_full → short → 提示音 | 错区:区名归因 + 错鼓句 |
| 30~60s | 「对了。」→ T2 左右下、T3 上排各一步(教一个马上用) | 跟打 | 三档 + 迷茫接管 | 2 败降速 25%;3 败跳步 |
| 60~90s | 「很好,演出开始。」→ 选曲(select_hint + 曲名,等待声) | 单击开始 | 18s:select_full → 「单击。」 | 滑动切曲报名 |
| 90~100s | 四下底鼓数拍 + 无鼓 BGM 起(ACTION);首应答窗前 1 小节「听到这个声音,就是轮到你了。」+ 交接提示音 | 听 → 跟敲 | 曲目继续(不掉血不中断) | 早/晚/错鼓分档归因 |
| 100~180s | 曲目一前半(Perfect 叠亮音、连击 16 震、mid_song 过半播报) | 敲对区 | 连 2 Miss 才 gd_miss 一次(曲尾 3s 不插) | Miss=闷镲 + 归因 |
节奏检查 ✓:3s 内动手(第一句就是指令);首成功=第一声鼓(≤10s);每 30s 有可听进展(区名 → 教学步 → 曲目句)。
7. 失败表(24 号 §0.7 数字保留,归因口径 26 号化)
| 失败类型 | 判定 | 归因句(feedback,2s 内) | 回到哪里 | 新手期代价 |
|---|---|---|---|---|
| 没出手 | expected+GOOD+0.10s 无应答 | 教学:gd_miss_none + retry_listen;正片:闷镲(连 2 才 gd_miss,同曲一次) | 教学该步重演;正片歌继续 | 不中断、不扣 |
| 早 / 晚 | 同区超 Perfect 仍在 Good | 教学:retry_early / retry_late + gd_miss_early / late;正片 Good 出声不纠 | 教学该步重演 | 无 |
| 错鼓 | 异分区音符半窗内被敲 | 教学:retry_wrong + gd_miss_wrong;正片错区音色本身(配额内不叠语音) | 教学该步重演 | combo 清零 |
| 教学 2 败 | 同一步失败 2 次 | gd_slow「我放慢一些。」×0.75 重演(每教学局 1 次) | 该步 | 再败跳过不卡死 |
| 长按演奏期误触 | 按下≥450ms | 状态查询句(不判定、不归属) | 原地 | 无 |
归因真话律:没出手不说「慢了半拍」;归因句 feedback 类,应答小节内播不出就丢(§4.6);曲尾 3s 内不插 gd_miss。
8. 台词表(类别标注)
critical:sys_first_tap(开场指令 <3s)、tut_z_kick / tut_z_sides / tut_z_patt(教学指令各 <3s)、tut_ok+下一条教学指令链、结算承诺段 restart(+解锁教学 sys_unlock_*)content:welcome_back、tut_done、tut_probe、zone_(首摸报名)、song_name、song_locked、unlock_song2/3、grade_s/a/b/c、new_best_combo、mid_song、tut_fill、sys_turn_teach、sys_continue_askhint:select_full/short、settle_full/short、menu_help、tut_kick/sides/top_full/short、st_p1a..p3b、st_c1..3(长按状态查询)、rules、sys_say_againfeedback:retry_early/late/wrong/listen/skip、inv_generic、inv_down_locked、inv_up_locked- 沿用向导层 9 句(已在库):gd_answer、gd_count、gd_miss、gd_miss_early/late/wrong/none、gd_slow
- 完整清单(新增 32 / 修改 7 / 删除 5 / 键盘变体 22):
tools/voice_lines_26/rhythm.md。
9. 断点复述句
- 保存:进曲即写
progress.lastSong(曲目粒度,schema 1 加字段);一曲打完清除。 - 回来:tutorialDone 且 lastSong 有效 → 先播状态声与
sys_continue_ask「上次的曲子没打完。单击继续,右滑重选。」再yieldTurn(reopen);单击=继续该曲(从头起拍,count-in 进场),右滑=重新选曲。 - 暂停(菜单):泵停、BGM 记 offset;恢复全网格平移 = 暂停时长 + 4 拍 count-in(guide full 先播 gd_count,每曲 1 次)。
10. 测试记录
- 无头 playtest:
web/rhythm/test/playtest.mjs(判定窗 / 错鼓 / 超时 / tapcancel 撤销 / 双击两连击 / 数拍 / 加花 / 评级解锁 / 进度 summary 等玩法断言保留适配;新增 26 号断言:开场首句 critical 动手、演出期 busy 回执、ACTION 无等待声、等待点台账、§6.2 乱点机器人:无声操作 0 / 被动原句重复 0 / 打断失败 0)。 - 真人冷启动:待测。