Files
SoundGame/tools/voice_lines_26/hunt.md
T
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

9.8 KiB
Raw Blame History

《围猎》26 号重构台词清单(hunt)

生成依据:tools/gen_voice_dual.py HUNT_LINES 段(变量名 _HUNT,全表同一 instruct 常量)。本清单为 HUNT_LINES 的增量改造稿:新增 / 修改 / 删除 / 键盘变体四节。 交互与写作规范:26-audio-interaction-playbook.md; 设计单正文 23-hunt.md 附录 C,施工接线 26-apply-hunt.md;登记副本同步 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 句)

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)

# 旧 → 新(整句替换,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 后删除)

# 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 句。

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),资产补齐前后均可跑。