Files
xsl ee5d4d2544 feat(playbook): 26 号交互手册全量落地——剩余 12 款深度重构 + 语音全量重制
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 置完成。
2026-10-02 12:33:20 +08:00

128 lines
9.8 KiB
Markdown
Raw Permalink 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.
# 《围猎》26 号重构台词清单(hunt)
> 生成依据:`tools/gen_voice_dual.py` HUNT_LINES 段(变量名 `_HUNT`,全表同一 instruct
> 常量)。本清单为 HUNT_LINES 的**增量改造稿**:新增 / 修改 / 删除 / 键盘变体四节。
> 交互与写作规范:[26-audio-interaction-playbook.md](../../docs/design/26-audio-interaction-playbook.md);
> 设计单正文 [23-hunt.md](../../docs/design/23-hunt.md) 附录 C,施工接线
> [26-apply-hunt.md](../../docs/design/26-apply-hunt.md);登记副本同步
> [23-hunt-voice-ids.md](../../docs/design/23-hunt-voice-ids.md)。
>
> 写作检查:指令 ≤12 字;`_short` ≤6 字;叙事 ≤25 字;状态查询 ≤20 字;肯定 ≤4 字;
> 每句标类别(critical / content / hint / feedback);「重听」一律作「重新听」(多音字);
> 通用系统句与 storyline 文案逐字一致(sys_first_tap / sys_first_tap_short /
> sys_turn_teach 未用不录 / sys_say_again / sys_unlock_down / sys_unlock_dt)。
>
> 双性别:male=Uncle_Fu / female=Serena;instruct 沿用 `_HUNT`
> (「低沉醇厚的男声,像守夜猎人的领队,沉稳有力」/「清亮沉稳的女声,像守夜猎人的
> 领队,冷静中带着鼓舞」)。bot 喊话 HUNT_NPC(24 条平铺)与引擎资产**一字不动**。
## 1. 新增(25 句)
```python
HUNT_LINES += [
# ---- 系统层(26 号:开场动手句 / 重听前缀 / 阶梯解锁,文案与 storyline 逐字一致)----
("sys_first_tap", _HUNT, "点一下屏幕。"), # critical(教学 T0 首句)
("sys_first_tap_short", _HUNT, "点一下。"), # hint(intro 等待点 short)
("sys_say_again", _HUNT, "再说一遍:"), # hint(主动重听前缀)
("sys_unlock_down", _HUNT, "向下滑,可以打开菜单。"), # content(第 1 局 END 解锁教学)
("sys_unlock_dt", _HUNT, "没听清,就双击,再听一遍。"), # content(第 3 局 END 解锁教学)
("sys_recap", _HUNT, "上次那局没打完。点一下,重新匹配。"), # content(断点复述 §4.12)
# ---- 等待点三档提示(§4.4:full / short 两档;附录 C §5 表)----
("tut_hit_full", _HUNT, "朝叫声,滑。"), # critical(T1 指令 ≤3s)
("tut_hit_short", _HUNT, "滑一下。"), # hint
("tut_call_full", _HUNT, "点一下,喊人。"), # critical(T2 指令)
("tut_call_short", _HUNT, "点一下。"), # hint
("tut_help_full", _HUNT, "按住屏幕,听营地。"), # critical(T3 指令)
("tut_help_short", _HUNT, "按住。"), # hint
("room_wait_short", _HUNT, "单击。"), # hint(lobby 等待点 short)
("sys_menu_short", _HUNT, "左右滑,单击。"), # hint(菜单等待点 short)
("end_again_short", _HUNT, "单击。"), # hint(结算等待点 short)
# ---- 长按「我在哪」(原则 3:耐久档+波次档+一个动作,整句预生成不拼接)----
("lp_act", _HUNT, "朝叫声滑。"), # hint(帮助链尾:一个动作)
("lp_title", _HUNT, "围猎。点一下,进入匹配。"), # hint(TITLE 长按)
# ---- 阶段 4 专属教学(附录 C §3:大厅首次进入已识别双击档)----
("skill_teach", _HUNT, "双击,放出旋风斩。"), # content
# ---- 失败表归因 / 无效解释(§4.9 / 原则 7:每「状态×手势」一次)----
("atk_cd", _HUNT, "出刀还在冷却。"), # feedback(出击冷却首拦)
("call_cd", _HUNT, "呼喊要有间隔。"), # feedback(呼喊节流首拦)
("inv_swipe", _HUNT, "先朝声音滑。"), # feedback(T1 期点按)
("inv_rest", _HUNT, "下一波马上来。"), # feedback(休整窗滑/点)
("miss_side", _HUNT, "在另一边。"), # feedback(挥空归因,30s 台账)
# ---- 迷茫接管(§4.5:附录 C §7 迷茫行)----
("wave_only", _HUNT, "只朝声音那边滑。"), # hint(WAVE L2 只放行该弧)
# ---- 菜单(26 号:双击确认废止,左右滑换项单击确认;破坏性二次确认)----
("sys_home_check", _HUNT, "再点一下,确认退出。"), # content(回大厅二次确认,原则 6)
]
```
## 2. 修改(7 句;旧文案废止口径见 §3 与 23-hunt-voice-ids.md)
```python
# 旧 → 新(整句替换,id 不变)
("tut_kill_ok", _HUNT, "对,就是这样。"), # 旧「好,杀掉了。就是这样。」——肯定 ≤4 字口径收紧(§6 3~10s「对。」);feedback
("tut_done", _HUNT, "教学完了。围猎开始。"), # 旧「教学完了。真正的围猎,现在开始。」——15>12 字收紧到 8;critical
("net_back", _HUNT, "你回来了。朝叫声滑。"), # 旧「联系恢复了,接着打。」——附录 C §9 复述句原文(回来一句接上);content
("room_wait", _HUNT, "等同伴到齐。点一下,开局。"), # 旧「房间已开好,等同伴到齐。单击,立即开局。」——指令 16>12 字;hint(lobby full)
("gd_idle", _HUNT, "朝最响的滑。"), # 旧「听声音的方向,滑过去。」——附录 C §7 迷茫 L1 原文;hint
("sys_menu", _HUNT, "菜单。左右滑换项,单击确认。"), # 旧「菜单。单击切换,双击确认。」——双击确认废止(00 §5.4);content
("help_main", _HUNT, "朝声音的方向滑,就是出击。点一下呼喊,按住听状态。"), # 旧「……单击呼喊支援,双击旋风斩。上滑状态,下滑菜单。」——去双击旋风斩/上滑状态(旋风斩=阶段 4、状态=长按);content
```
## 3. 删除(9 句;音频随本轮 convert 后删除)
```python
# id:废止原因
("tut_rule",) # 规则总述(纯规则说明,§4.10 反模式 6)——规则由 T0-T3 做中学承担
("tut_attack",) # 旧 T1 长指令(17 字>12)→ tut_hit_full/_short 对替换
("tut_callout",) # 旧 T2 长指令(17 字>12)→ tut_call_full/_short 对替换
("tut_skill",) # 「双击,旋风斩」教学句——附录 C §3:新手期旋风斩口头不出现(阶段 4 改 skill_teach 大厅专属教学)
("tut_skill_cd",) # 「冷却中双击重新听威胁」教学句——同上;阶段 3 双击=重听由 sys_unlock_dt 承担
("tut_status",) # 「上滑听状态,下滑菜单」——状态查询移到长按(四向玩法裁定),菜单仅非 WAVE
("tut_breach",) # 突入规则讲解——breach 警报句自带归因(有野兽冲进营地了),做中学
("tut_skip",) # 教学跳过句——新教学每步有 L3 演示兜底,无手动跳过路径
("settings_hint",)# 「音色语速请回大厅修改」——菜单上滑帮助组合废止;设置只在大厅改(00 §1.2)
```
## 4. 键盘变体(12 句;KEY_LINES["hunt"] 增量替换稿)
> 规则同 KEY_LINES["storyline"]:向左滑→按左方向键(四向同理);单击→按空格;
> 双击→按回车;按住→按住空格。只改操作词,其余一字不动。旧 11 对中随 §2/§3
> 增删:tut_rule/tut_attack/tut_callout/tut_skill/tut_skill_cd/tut_status 删,
> sys_menu/help_main 改,room_wait/end_again/gd_idle 改(对齐新主表),新增 6 句。
```python
KEY_LINES["hunt"] = [
("sys_first_tap", "按空格。"),
("tut_hit_full", "朝叫声,按方向键。"),
("tut_hit_short", "按方向键。"),
("tut_call_full", "按空格,喊人。"),
("tut_call_short", "按空格。"),
("tut_help_full", "按住空格,听营地。"),
("tut_help_short", "按住空格。"),
("room_wait", "等同伴到齐。按空格,开局。"),
("sys_menu", "菜单。左右方向键换项,按空格确认。"),
("help_main", "朝声音的方向按方向键,就是出击。按空格呼喊,按住空格听状态。"),
("skill_teach", "按回车,放出旋风斩。"),
("end_again", "按空格,再猎一局。"),
("gd_idle", "朝最响的,按方向键。"),
]
```
> 沿用不重录:intro_1/intro_2/room_start/wave_*/hp_band*/st_wave_*/team_*/kill_band*/
> threat_*/breach*/danger_low/skill_ready/end_win/end_lose/grade_*/end_rank/net_*(无操作词,
> 触屏/键盘通用);sys_say_again/sys_unlock_down/sys_unlock_dt 等系统句键盘变体已在
> KEY_LINES["storyline"] 全项目共用(各游戏目录资产由生成脚本按表落盘,不重复登记)。
## 生成与验收口径
- 汇总主表 = 沿用 51(60 − 删 9)+ 修改 7 + 新增 25 = 76 句(双性别 152 条);bot 喊话
HUNT_NPC 24 条平铺不动;键盘变体 13 句。
- 生成:`.venv-tts/bin/python tools/gen_voice_dual.py --game hunt --gender both`
(flock .gpu.lock);检查 `--check`;转码 `--convert`;`--only-variants` 单独补键盘变体。
- convert 后删除废止 id 音频:tut_rule / tut_attack / tut_callout / tut_skill /
tut_skill_cd / tut_status / tut_breach / tut_skip / settings_hint(主资产双性别 18
文件;其中 6 个带 key 变体再删 12 文件;均 ×2 格式)。
- web/harness/voice_text.json 的 hunt 主表与 `__key__` 变体表同步本台词
(转写时长估算与 ASR 判定用)。
- playtest mock 不依赖真实资产(按 url 估时长合成 buffer),资产补齐前后均可跑。