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 置完成。
316 lines
33 KiB
Markdown
316 lines
33 KiB
Markdown
# 21b · 《守塔人》(keeper) 语音台词表(voice ids,录音依据)
|
||
|
||
> **26 号对齐(资产清单,不是交互宪法)**
|
||
> - 交互与新手手势以 [26-audio-interaction-playbook.md](26-audio-interaction-playbook.md) 和对应游戏正文为准。
|
||
> - 本表仍是 TTS id 事实源的**登记副本**(生成以 `tools/gen_voice_dual.py` 为准)。含「双击重听 / 双击使用 / 双击格挡 / 单击循环菜单」的句子 **停用或按游戏正文重录**。
|
||
> - 写作:指令 ≤12 字,短句档 ≤6 字,叙事 ≤25 字;每句标 `critical` / `content` / `hint` / `feedback`。游戏主动提示不得原样重复;重听前加「再说一遍:」。
|
||
> - 键盘变体:新手期回车当空格(单击)。删除「按回车=重听」类旧口径,或仅在阶段 3 解锁双击后启用。
|
||
> - 共用新句见 [14-guide-layer.md](14-guide-layer.md) §7(`sys_first_tap` 等)。各游戏 `_full` / `_short` 在游戏正文设计单里点名,补进本表后再进生成脚本。
|
||
|
||
|
||
> **给音频总监的录制说明**
|
||
> - **双性别组**(守塔人 KEEPER + 岸台/系统 SHORE,121 句):落 `web/keeper/audio/voice/female|male/<id>.{ogg,m4a}`,两性别 id 集合完全一致(含全部 `_k` 变体)。
|
||
> - **KEEPER(守塔人=玩家)**:female = `Serena`,instruct 常量 `沉静克制的年轻女声,孤岛守塔人,低而稳,藏着心事`;male = `Uncle_Fu`,instruct 常量 `沉静克制的男声,孤岛守塔人,低而稳,藏着心事`。
|
||
> - **SHORE(岸台值班员/系统音/向导 gd_*)**:female = `Vivian`,instruct 常量 `清晰平稳的女声,海岸电台值班员,隔着无线电的温和干练`;male = `Dylan`,instruct 常量 `清晰平稳的男声,海岸电台值班员,隔着无线电的温和干练`。
|
||
> - 区分度设计:守塔人(塔内近讲,不滤波)与岸台(无线电清晰人声,不滤波)共用 speaker 池但**不同 speaker 配对**——female 侧守塔人 Serena / 岸台 Vivian、male 侧守塔人 Uncle_Fu / 岸台 Dylan,同场景高频对话的两者永不同 speaker。
|
||
> - **NPC 平铺组**(27 句):单音色、**不做双性别**,平铺落 `web/keeper/audio/voice/<id>.{ogg,m4a}`(引擎平铺回退命中),转码时按 §滤波表 加带通。NPC 共 3 人(≤5 约束),同一角色 speaker+instruct 恒定,区分度风险逐个标注:
|
||
> | 角色 | speaker | instruct 常量 | 滤波 | 区分度风险 |
|
||
> |---|---|---|---|---|
|
||
> | 阿澈(22 岁渔民,现在线·电台) | `Dylan` | `年轻男声,二十二岁渔民,海风养出的嗓子,风暴里喊话,慌而不乱` | 电台 350-3200Hz | **中**:与 male 岸台同 speaker——靠电台滤波(岸台不滤波)+ 年龄感 instruct 区分,二者相邻句出现(c1_holdo→c1_holde),请试听确认 |
|
||
> | 父亲(回忆·十二年前) | `Uncle_Fu` | `温和低沉的男声,四十岁守塔人,隔着老唱片,疲惫而坚定` | 唱片 300-2800Hz | **中**:与 male 守塔人同 speaker——插叙内锚句(不滤波)与父亲(唱片滤波)相邻,靠音质差+年代感 instruct 区分,请试听确认 |
|
||
> | 祖父(回忆·四十年前) | `Eric` | `苍老缓慢的男声,七十岁老守塔人,隔着更老的唱片,字字压秤` | 唱片 250-2600Hz | **低**:三代人里唯一 Eric,频带最窄最「远」 |
|
||
> - **三代人音色分配总账**:你(玩家,双性别随 settings.voice)+ 父亲(Uncle_Fu,仅插叙)+ 祖父(Eric,仅插叙)+ 阿澈(Dylan,仅现在线电台)。**任何时刻同场景说话的人声 ≤3 种质感**(近讲/电台/唱片),音质即身份。
|
||
> - **时空音质规则(本作命门)**:现在线=近讲(KEEPER/SHORE 不滤波)+电台(阿澈滤波);回忆线=唱片滤波(父/祖父)+**锚句恒为守塔人不滤波**(「现在的你」在回忆里旁白——干净人声 vs 唱片人声,强化时空感);唱片噪底由 `sfx/amb_vinyl` 常驻承担,人声滤波只做带通+轻压缩(`acompressor threshold=-20dB ratio=3`),不做失真(宁窄勿脏)。试听不可读的句子回退未滤波原声。
|
||
> - **称呼规则**:阿澈对玩家一律称「塔 / 守塔人」,**全表禁用**「姑娘/小哥/大哥/大姐/叔叔」类性别化称呼(玩家性别随用户设置变化);父亲在插叙中只对塔台/家人说话,无性别指向称谓。
|
||
> - **键盘变体(PC 键盘通道,P1 机制)**:带 `_k` 后缀的 id 为键盘措辞版(「按空格」「回车」「左右方向键/上箭头/下箭头」),与触屏版**成对生成、成对落盘**(`check_all_assets` 校验 `_k` 配对);运行时由 `gesture.inputMode()` 选择:`key` → `<id>_k`,`touch` → `<id>`,`auto` 跟随最近使用通道,`_k` 缺失回退无后缀版。变体共 **8 对**(7 对在下方 §G0.a 操作提示句区 + 首个抉择 p1),以粗体标注。
|
||
> - **数字规避**:幕次/信任/真相全部分档整句(prog_m1..3、tr_*、tru_*);句内数字(四十年前/十二年前/第七级台阶/十级/两百米/一刻钟/半个时辰/七个人/两艘/第三级/三遍/半里/三个浪头/三刻)写死在整句里,禁止运行时拼接。
|
||
> - **禁语速词**:instruct 不含任何语速描述(引擎 SoundTouch 变速);NPC 句靠短句+逗号停顿实现「风暴里喊/老唱片里缓」听感。
|
||
> - 管线:`tools/gen_voice_dual.py` 照录(SPEAKERS 表需新增 keeper 行);多音字自查见文末注记。
|
||
|
||
## G0 组 · 系统/向导/状态(SHORE 双性别 ×34)
|
||
|
||
### G0.a 操作提示句(含键盘变体,7 对 14 句——键盘玩家听这一区就够)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `gd_brief` | 单击,继续值守。要选择时,向左或向右滑。 | 开场链最前(full 档,F8 先例) |
|
||
| **`gd_brief_k`** | 按空格,继续值守。要选择时,用左右方向键。 | 同上(inputMode=key) |
|
||
| `gd_continue` | 单击屏幕,继续。 | 叙事链末看门狗第 1 级(full 25s / standard 13s) |
|
||
| **`gd_continue_k`** | 按空格,继续。 | 同上(key) |
|
||
| `gd_again` | 还在吗?单击继续。 | 看门狗第 2 级(50s / 30s),新句不逐字重播 |
|
||
| **`gd_again_k`** | 还在吗?按空格继续。 | 同上(key) |
|
||
| `sys_help` | 单击继续,双击重新听。上滑听状态,下滑开菜单。选择时,左右滑。 | 上滑帮助 / 菜单内上滑 |
|
||
| **`sys_help_k`** | 空格继续,回车重新听。上箭头听状态,下箭头开菜单。选择时,左右箭头。 | 同上(key) |
|
||
| `sys_menu` | 菜单。单击切换选项,双击确认。 | 下滑呼出模态菜单 |
|
||
| **`sys_menu_k`** | 菜单。空格切换选项,回车确认。 | 同上(key) |
|
||
| `sys_skip` | 想跳过这句,单击就行。 | 开场每局一次(skip_hint 先例) |
|
||
| **`sys_skip_k`** | 想跳过这句,按空格。 | 同上(key) |
|
||
| `sys_continue_ask` | 检测到你的值守记录。单击继续上次,右滑开始新的风暴夜。 | 有存档进游戏 |
|
||
| **`sys_continue_ask_k`** | 检测到你的值守记录。空格继续上次,右箭头开始新的风暴夜。 | 同上(key) |
|
||
|
||
### G0.b 状态/系统句(无手势词,无变体)
|
||
|
||
| id | 台词全文 | 触发 |
|
||
|---|---|---|
|
||
| `gd_invalid` | 这个手势,塔里用不上。 | 无效手势(error 震,idle-only,同局限次) |
|
||
| `gd_prog1` | 滑动这里用不上。想想岸台刚说的话。 | 无进展轨 60s(第 1 级,乱按抢救) |
|
||
| `gd_prog2` | 别乱。停一停,再听一遍。 | 无进展轨 120s(第 2 级) |
|
||
| `sys_menu_resume` | 回到值守。 | 菜单项 |
|
||
| `sys_menu_restart` | 重新开始今夜。 | 菜单项 |
|
||
| `sys_menu_lobby` | 保存并回大厅。 | 菜单项(确认后跳转前播) |
|
||
| `sys_settings` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内设置提示 |
|
||
| `sys_new_night` | 新的风暴夜,开始了。 | 新夜开始 / 菜单重开 |
|
||
| `prog_m1` | 风暴起来了。今晚第一程。 | 上滑状态链首段·时位句(now,按当前幕选播) |
|
||
| `prog_m2` | 风暴到顶。第二程。 | 同上 |
|
||
| `prog_m3` | 风在退。最后一程。 | 同上 |
|
||
| `prog_mem_g` | 这是回忆:祖父的年代,四十年前。 | 上滑状态链首段·时位句(memory=插叙1/3 期间) |
|
||
| `prog_mem_f` | 这是回忆:父亲的最后一晚,十二年前。 | 上滑状态链首段·时位句(memory=插叙2 期间)+ 恢复链时位句先行 |
|
||
| `tr_deep` | 他把命,交给了你的声音。 | 信任 3-4(跨档时挂 CALM 链尾;上滑状态链) |
|
||
| `tr_half` | 他信一半,疑一半。 | 信任 1-2 |
|
||
| `tr_thin` | 今晚,他只信自己的手。 | 信任 0(各播报位附 warning 震) |
|
||
| `tru_zero` | 旧账压在灯底,你一页没翻。 | 真相度 0(上滑状态链,逐值为真) |
|
||
| `tru_one` | 灯下的旧账,你翻开了一角。 | 真相度 1(仅插叙1) |
|
||
| `tru_two` | 祖父和父亲的事,你都翻到了。 | 真相度 2(插叙1+2,缺页未读) |
|
||
| `tru_full` | 三代人的账,今夜见底了。 | 真相度 3(插叙1+2+3) |
|
||
|
||
## G1 组 · 开场(双性别 ×4)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `b_open` | 守塔人 | 白角灯塔,风暴夜。我是今晚的守塔人。 | INTRO(配 sfx/amb_storm+amb_room) |
|
||
| `b_rain` | 守塔人 | 浪拍到第七级台阶。雾角两长一短——塔在,我也在。 | INTRO(**教「雾角=塔报平安」,配 sfx/foghorn**) |
|
||
| `b_rule` | 岸台 | 岸台的规矩就一条:风暴夜,灯不能灭。 | INTRO(一句规矩,P4;与灯三态兑现一致) |
|
||
| `b_goal` | 岸台 | 今夜两艘货轮过境。守住灯,也守住频道。 | INTRO(货轮/频道双目标承诺),随后 C1 |
|
||
|
||
## C1 组 · 幕一·风暴起(双性别 16〔含 p1_k〕+ 阿澈平铺 5 + 祖父平铺 2 = 23)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `c1_tune` | 岸台 | 频道里有动静。很轻,像隔着整片海。 | C1 起始(配 sfx/radio_tune) |
|
||
| `amo_a` | 阿澈 | ……有人吗……顺发号……船进水了…… | 呼救渐近(垫 sfx/static_burst+amb_engine) |
|
||
| `amo_b` | 阿澈 | 白角塔!是你吗?求你,回个话! | 通话主干(配 sfx/radio_beep 接通) |
|
||
| `p1` | 岸台 | 他的声音在抖。向左滑,先接住这个人。向右滑,先要他的船位。 | 抉择提示(播完即可选) |
|
||
| **`p1_k`** | 岸台 | 他的声音在抖。左箭头,先接住这个人。右箭头,先要他的船位。 | 同上(key;首个抉择的键位绑定) |
|
||
| `c1_hold` | 守塔人 | 别慌。我在白角,哪儿也不去。慢慢说。 | p1 左 |
|
||
| `c1_holdo` | 阿澈 | ……好,好。你在。我听见了。 | p1 左·反应(正反馈:声音稳住) |
|
||
| `c1_holde` | 岸台 | 他喘匀了。先接人,再办事。 | p1 左·收(trust+1) |
|
||
| `c1_ask` | 守塔人 | 顺发号,报你的方位,报进水的速度。 | p1 右 |
|
||
| `c1_asko` | 阿澈 | 方位……仪表进水了,我,我看不清…… | p1 右·反应(慌) |
|
||
| `c1_aske` | 岸台 | 他更慌了。人没接住,数字也乱。 | p1 右·收(即时纠偏,非惩罚,不扣分) |
|
||
| `amo_c` | 阿澈 | 我爷爷,四十年前也是在这片海没的。他说,白角的灯灭过一下。 | 通话主干(**回澜号伏笔,p9 回环**) |
|
||
| `p2` | 岸台 | 他提到四十年前。向左滑,去翻灯座下的暗格。向右滑,先专心守灯。 | 抉择提示 |
|
||
| `c1_open` | 守塔人 | 父亲的钥匙,就在抽屉里。灯座第三级,开了。 | p2 左(配 sfx/hatch_open;随后 rev_teach+插叙1) |
|
||
| `rev_teach` | 守塔人 | 听到唱针落下、风声退后,是回忆。风声回来,就是现在。 | **时空签名教学句**(首插叙前,全局一次) |
|
||
| `rev_g1` | 守塔人 | 唱针落下。四十年前,也是这盏灯下。 | 插叙1·锚入(**配 sfx/memory_in + bgm/memory + amb_vinyl**;首播不可跳) |
|
||
| `rev_g2` | 祖父 | 手稳住。灯罩擦到第三遍,才算干净。 | 插叙1(少年父亲为无台词角色——沉默擦灯声由底噪承载) |
|
||
| `rev_g3` | 祖父 | 记住,灯下压着的东西,比灯重。守塔人,替它守一辈子。 | 插叙1(层1 秘密:灯下有东西) |
|
||
| `rev_g4` | 守塔人 | 风声回来了。爷爷,我听见了。 | 插叙1·锚出(**配 sfx/memory_out + bgm/storm 回切**;首播不可跳) |
|
||
| `c1_diary` | 守塔人 | 暗格里是祖父的日志。缺了最后一页。 | 回返后 now 句(truth+1;缺页悬念) |
|
||
| `c1_focus` | 守塔人 | 先守住这盏灯。旧账,天亮再算。 | p2 右 |
|
||
| `c1_focuse` | 岸台 | 灯转得稳。可那句「灭过一下」,留在了你耳朵里。 | p2 右·收(错过的重量,不扣分) |
|
||
| `lull_1` | 岸台 | 岸台通报:风加到十级。第一程,过去了。 | CALM(1) 幕间(配 sfx/foghorn;跨档 tr_* 挂链尾) |
|
||
|
||
## C2 组 · 幕二·风暴顶(双性别 16 + 阿澈平铺 8 + 父亲平铺 3 = 27)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `c2_back` | 岸台 | 频道又响了。顺发号的引擎,时断时续。 | C2 起始(信号重连,配 sfx/radio_tune+static_burst) |
|
||
| `amo_d` | 阿澈 | 塔……听得到吗?水,到膝盖了。 | 通话主干(垫 amb_engine) |
|
||
| `p3` | 岸台 | 他快撑不住了。向左滑,用守塔人的口诀带他稳船。向右滑,把船位报给岸台。 | 抉择提示 |
|
||
| `c2_song` | 守塔人 | 跟我念:浪头过,船头抬。浪头退,船头落。 | p3 左(家传口诀;随后插叙2) |
|
||
| `c2_songo` | 阿澈 | 浪头过,船头抬……真的稳了些!这口诀,谁教你的? | p3 左·反应(trust 铺垫;问父) |
|
||
| `rev_f1` | 守塔人 | 唱针又落下了。十二年前,也是这样的风。 | 插叙2·锚入(memory_in+bgm/memory;首播不可跳) |
|
||
| `rev_f2` | 父亲 | 白角塔,我是老陈。接驳艇上两个人,都活着。 | 插叙2(父亲最后一次值守·电台腔) |
|
||
| `rev_f3` | 父亲 | 守塔人听见了求救,就不能装没听见。等我回来。 | 插叙2(家训,与家规相抵的主题句) |
|
||
| `rev_f4` | 父亲 | 塔上的机械上满发条,能自己转一夜。给我留着门。 | 插叙2(**发条知识=rev_teach 型承诺,p7 差分兑现**) |
|
||
| `rev_f5` | 守塔人 | 风声回来了。那扇门,留到今天。 | 插叙2·锚出(memory_out+storm 回切;首播不可跳) |
|
||
| `c2_key` | 守塔人 | 父亲桌上那支手电,尾盖里卷着一页纸。 | 插叙2 后 now 句(truth+1;缺页线索,p6 钥匙) |
|
||
| `c2_shore` | 守塔人 | 岸台,记下他的船位。请渔政天亮前到。 | p3 右 |
|
||
| `c2_shoreo` | 岸台 | 船位落在图上了。渔政的船,最快也要天亮。 | p3 右·收(留白:那一夜要他自己撑) |
|
||
| `amo_e` | 阿澈 | 守塔人……塔里就你一个人?家里人不拦着你干这行? | 通话主干(问父铺垫) |
|
||
| `p4` | 岸台 | 他问起你的人。向左滑,告诉他真话。向右滑,轻轻带过。 | 抉择提示 |
|
||
| `c4_true` | 守塔人 | 我父亲也是守塔人。十二年前风暴夜,他出海救人,没有回来。 | p4 左(〔插叙2 未触发 ? 先播插叙2+c2_key : 直进〕) |
|
||
| `c4_trueo` | 阿澈 | ……对不起。难怪今晚,你一直都在。 | p4 左·反应(trust+1) |
|
||
| `c4_pass` | 守塔人 | 家里人?都在大陆。这行当,习惯了。 | p4 右 |
|
||
| `c4_passo` | 阿澈 | 哦……你也是一个人守夜。我们俩,隔着一道海。 | p4 右·反应 |
|
||
| `c2_crack` | 岸台 | 听!他那边,船板裂了! | **危机拍1**(sfx/hull_crack 前置 2s 渐强+danger 签名/震同窗) |
|
||
| `amo_f` | 阿澈 | 裂了!水进得更快了。塔,告诉我怎么办! | 危机后通话主干 |
|
||
| `p5` | 岸台 | 船在漏。向左滑,让他回舱堵漏,守住电台。向右滑,让他穿救生衣,上甲板。 | 抉择提示(双活路) |
|
||
| `c5_patch` | 守塔人 | 拿堵漏垫顶住裂缝。人守在电台边,我一直在。 | p5 左 |
|
||
| `c5_patcho` | 阿澈 | 顶住了!水慢下来了。我不走,守着电台。 | p5 左·反应(trust+1) |
|
||
| `c5_suit` | 守塔人 | 穿上救生衣,带上信号灯,站到甲板上去。 | p5 右 |
|
||
| `c5_suito` | 阿澈 | 穿好了。要是船散了,我就抱着它漂。 | p5 右·反应 |
|
||
| `lull_2` | 岸台 | 风眼凌晨过境。第二程,到顶了。 | CALM(2) 幕间(配 sfx/foghorn;跨档 tr_* 挂链尾) |
|
||
|
||
## C3 组 · 幕三·风歇前(双性别 23 + 祖父平铺 3 + 阿澈平铺 4 = 30)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `c3_eye` | 岸台 | 风眼过了。最后的浪墙,就跟在后面。 | C3 起始(amb_storm gain 降至 0.7 档) |
|
||
| `c3_page` | 守塔人 | 手电的尾盖旋开了。那页纸,在灯下摊平。 | **条件 rev2=true**(配 sfx/flash_click;随后 p6) |
|
||
| `m6_seal` | 岸台 | 那些旧东西,你今晚没碰过。缺页的事,你一无所知。 | **p6 封锁句**(rev2=false:播出后自动走右,不摆假选项) |
|
||
| `p6` | 岸台 | 祖父的最后一页。向左滑,今晚就读完它。向右滑,合上,塞回灯底。 | 抉择提示(仅 rev2=true 时播) |
|
||
| `rev_c1` | 守塔人 | 唱针落下。缺的那一页,自己开了口。 | 插叙3·锚入(memory_in;首播不可跳) |
|
||
| `rev_c2` | 祖父 | 我写下这些,等一个敢看的人。那晚,我的儿子,偷了接驳艇。 | 插叙3(层3 秘密·上) |
|
||
| `rev_c3` | 祖父 | 我去追他。灯,离了人。半个时辰,回澜号,七个人。 | 插叙3(层3 秘密·中:**祖父之夜真相**) |
|
||
| `rev_c4` | 祖父 | 儿子回来了。这页我撕下来,压进灯底。守塔人,不能离灯。 | 插叙3(层3 秘密·下:家规由来) |
|
||
| `rev_c5` | 守塔人 | 风声回来了。原来那道家规,是这么来的。 | 插叙3·锚出(memory_out;首播不可跳) |
|
||
| `c6_reade` | 岸台 | 四十年,两代人,一条规矩。今晚,轮到你选了。 | p6 左·收(truth+1,随后 p7) |
|
||
| `c6_shut` | 守塔人 | 合上。守塔人的事,守塔人自己扛。 | p6 右 |
|
||
| `p7` | 岸台 | 浪墙压过来了。向左滑,给灯上满发条,驾接驳艇去接他。向右滑,守着灯,用声音引他过礁。 | 抉择提示(**核心宿命抉择**;35 字全表最长) |
|
||
| `c7_go` | 守塔人 | 机械上满发条,灯能自己转到天亮。等着我。 | p7 左·**rev2=true**(配 sfx/lamp_mech;发条知识兑现) |
|
||
| `c7_go2` | 守塔人 | 发条……我只上了半卷。快去,快回。 | p7 左·**rev2=false**(无插叙2 知识,灯灭伏笔) |
|
||
| `c7_hold` | 守塔人 | 顺发号,听我的。灯照着的那条道,跟我念,一步一步来。 | p7 右(守灯引渡) |
|
||
| `c3_wall` | 岸台 | 浪墙起来了!就是现在! | **危机拍2**(sfx/wave_wall 前置 2s 渐强+danger 签名/震同窗;p7 两路共用) |
|
||
| `p8_boat` | 岸台 | 海上没有灯。向左滑,循着他哼的渔歌找他。向右滑,按推算的坐标,直线搜。 | 抉择提示(**p7=左 形态**) |
|
||
| `p8_reef` | 岸台 | 礁缝两道口。向左滑,走老航道,稳但绕远。向右滑,钻新缝,近但冒险。 | 抉择提示(**p7=右 形态**) |
|
||
| `c8_song` | 守塔人 | 他爷爷传下的渔歌……在哪?再唱一遍! | p8_boat 左 |
|
||
| `c8_songo` | 阿澈 | 海风那个吹呀——塔!是你吗?我在这儿! | p8_boat 左·反应(循歌找到) |
|
||
| `c8_math` | 守塔人 | 坐标向东两百米。灯光扫过去,看见救生衣了! | p8_boat 右 |
|
||
| `c8_matho` | 阿澈 | 塔!你的灯扫到我啦!我在这边! | p8_boat 右·反应 |
|
||
| `c8_old` | 守塔人 | 走老航道。多绕半里,绕开所有的暗礁。 | p8_reef 左 |
|
||
| `c8_oldo` | 阿澈 | 老航道……我爷爷念叨过这条道!稳了! | p8_reef 左·反应 |
|
||
| `c8_new` | 守塔人 | 数三个浪头,借着风的角度,钻新缝! | p8_reef 右 |
|
||
| `c8_newo` | 阿澈 | 一个,两个,三——过去了!塔,我过来了! | p8_reef 右·反应 |
|
||
| `c9_return` | 岸台 | 接驳艇回来了。两个人,一身水,一盏灯。 | p7 左·汇合 |
|
||
| `c3_dark` | 岸台 | 你离塔的时候,发条走到了头。灯,灭过一刻钟。过境的货轮,平安。 | **p7 左 + rev2=false** 插播(复刻祖父之夜;归因真话;800ms 死窗) |
|
||
| `c9_land` | 岸台 | 顺发号过了礁缝,搁上背风湾的滩。人,站上了岸。 | p7 右 + trust≥3(自渡成功) |
|
||
| `c9_found` | 岸台 | 他在半路改了主意。天亮时,渔队找到了他。活着,湿透了。 | p7 右 + trust<3(克制措辞,零死亡) |
|
||
|
||
## D9 组 · 签收抉择(心结)(双性别 9 + 阿澈平铺 2 = 11)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `g9_in` | 岸台 | 风,一层一层退下去。天边,有点灰了。 | 签收引入(bgm 淡向 dawn 前的静默拍) |
|
||
| `g9_knot` | 守塔人 | 十二年了。这一晚,我总算替父亲,站完了他的班。 | 心结自述(玩家背景) |
|
||
| `p9a` | 岸台 | 他问起四十年前的灯。向左滑,把缺页的事,连根说给他。向右滑,就说,那晚风太大。 | 抉择提示(**truth=3 全真相版**) |
|
||
| `p9b` | 岸台 | 他问起四十年前的灯。你知道的,只有碎片。向左滑,把碎片给他。向右滑,说风太大。 | 抉择提示(**truth<3 碎片版**,cipher p9_known/blind 先例) |
|
||
| `d9_tell_a` | 守塔人 | 四十年前守塔的,是我爷爷。他离灯去救自己的儿子。灯灭那刻,回澜号……对不住。 | p9 左·truth=3 |
|
||
| `d9_tell_b` | 守塔人 | 我只知道,那晚守塔的是我爷爷,灯灭过一下。剩下的,我也不敢说全。 | p9 左·truth<3(句句为真:家族常识+阿澈原话回声) |
|
||
| `d9_keep` | 守塔人 | 那晚风太大,灯出了点故障。别再问了,孩子,回家吧。 | p9 右 |
|
||
| `amo_g` | 阿澈 | ……我爷爷,就在那七个人里。难怪他到死,都念着白角的灯。 | p9 左·反应(**回环闭合:amo_c 伏笔兑现**) |
|
||
| `amo_h` | 阿澈 | 风太大……嗯。那晚的风,一定很大。 | p9 右·反应 |
|
||
| `d9_telle` | 岸台 | 他听完,沉默了很久。天,亮了。 | p9 左·收(措辞 truth 无关:全真相/碎片两版通用) |
|
||
| `d9_keepe` | 岸台 | 这个话题,沉回了海里。天,亮了。 | p9 右·收 |
|
||
|
||
## EP 组 · 结局与尾声回响(双性别 19;结局 8 + 回响 11)
|
||
|
||
| id | 声部 | 台词全文 | 触发 |
|
||
|---|---|---|---|
|
||
| `e1_a` | 守塔人 | 天亮了。他在门厅睡熟,那页纸攥在手里。灯,亮到了最后一刻。 | 结局 e1(trust≥3 且 p9=左)主句 |
|
||
| `e1_b` | 守塔人 | 回澜号的账,翻开了第一页。这座塔,等了四十年。 | e1 收(钩子) |
|
||
| `e2_a` | 守塔人 | 他走的时候,天刚亮。我送到码头,什么也没说。 | 结局 e2(trust≥3 且 p9=右)主句 |
|
||
| `e2_b` | 守塔人 | 缺页放回灯底。有些东西,再压一代人。灯,还转着。 | e2 收(钩子) |
|
||
| `e3_a` | 守塔人 | 我把知道的,都说了。他望着海,半信半疑地点头。 | 结局 e3(trust<3 且 p9=左)主句 |
|
||
| `e3_b` | 守塔人 | 碎片也是真话。剩下的,让海自己讲吧。 | e3 收(钩子) |
|
||
| `e4_a` | 守塔人 | 天亮,各自归位。他回他的港,我守我的灯。 | 结局 e4(trust<3 且 p9=右)主句 |
|
||
| `e4_b` | 守塔人 | 隔着一道海,两座塔,谁也没再提那晚。 | e4 收(钩子) |
|
||
| `ep_lead` | 岸台 | 风停了。岸台给你记一笔——这一晚,后来怎样了。 | 结局链后尾声引入 |
|
||
| `ep_amo_home` | 岸台 | 阿澈:那晚之后改跑日班。他说,夜里的海,有守塔人听着。 | 尾声(p7=左:被你接进塔) |
|
||
| `ep_amo_solo` | 岸台 | 阿澈:自己把船开上了背风湾。船主骂了船,没骂人。 | 尾声(p7=右 且 trust≥3:自渡) |
|
||
| `ep_amo_dawn` | 岸台 | 阿澈:抱着冷藏柜漂到天亮。打那以后,出海带两台电台。 | 尾声(p7=右 且 trust<3:渔队找到) |
|
||
| `ep_lamp_full` | 岸台 | 灯塔记录簿:你离塔三刻,灯自己转着。父亲的发条,说中了。 | 尾声(p7=左 且 rev2=true;rev_f4 兑现) |
|
||
| `ep_lamp_dark` | 岸台 | 灯塔记录簿:凌晨两点,灯灭一刻钟。那一行,你写得格外用力。 | 尾声(p7=左 且 rev2=false;复刻祖父之夜回响) |
|
||
| `ep_lamp_hold` | 岸台 | 灯塔记录簿:转灯整夜未停。你一步,也没离开过它。 | 尾声(p7=右) |
|
||
| `ep_log_told` | 岸台 | 灯下的旧账,今夜见了光。 | 尾声(p9=左 且 truth≥1) |
|
||
| `ep_log_kept` | 岸台 | 灯下的旧账,又压回了黑暗里。 | 尾声(p9=右 且 truth≥1;truth=0 两句皆不播——日志未出场) |
|
||
| `ep_dad` | 岸台 | 值班表上,你替十二年前那个班次签了字。老陈,收工了。 | 尾声(rev2=true 选播) |
|
||
| `ep_shore` | 岸台 | 岸台晨报:风暴过境,航道平安。白角灯,正常。 | 尾声恒播收尾(**b_goal 货轮承诺闭环**,配 sfx/foghorn) |
|
||
|
||
---
|
||
|
||
**合计:148 句**(GPU 预算 ≤160 ✓)
|
||
- 双性别 121 句(KEEPER 守塔人 42 + SHORE 岸台/系统 79,含 `_k` 键盘变体 8 对)×2 性别 = 242 文件;
|
||
- NPC 平铺 27 句(阿澈 19 / 父亲 3 / 祖父 5)= 27 文件;
|
||
- 合计 269 条音频 ×2 格式(ogg+m4a)= **538 文件**。
|
||
- 键盘变体 8 对:gd_brief / gd_continue / gd_again / sys_help / sys_menu / sys_skip / sys_continue_ask / p1(成对生成,`check_all_assets` 校验 `_k` 配对与双性别集合一致)。
|
||
- 每结局专属台词齐备:e1/e2/e3/e4 各 2 句 + 尾声回响 11 句(p7×trust / p7×rev2 / p9×truth / rev2 条件选播)。
|
||
- 每局到达全部 9 个抉择点(p1..p9 及 p8 双形态变体 p8_boat/p8_reef、p9 双变体 p9a/p9b),实选 8-9 个(p6 在 rev2=false 时被 m6_seal 自动走右)。
|
||
|
||
## R2 增量节 · 26 号深度重构(2026-10)
|
||
|
||
> 交互重构施工单见 [26-apply-keeper.md](26-apply-keeper.md);台词增量清单见
|
||
> `tools/voice_lines_26/keeper.md`(管线路径两表一致铁律)。**系统/交互层新句全部
|
||
> SHORE 组**(radio PROD 同型);本表头注的 26 号对齐口径(含「双击重听」的句子
|
||
> 停用或重录)在此落地。
|
||
|
||
### 新增(24 句 × 双性别,SHORE 组)
|
||
|
||
| id | 台词全文 | 类别 | 触发 |
|
||
|---|---|---|---|
|
||
| `sys_first_tap` | 点一下屏幕。 | critical | 开场第一句(0~3s 动手,§4.10;抢拍 busy) |
|
||
| `sys_first_tap_short` | 点一下。 | hint | intro 等待点 _short 档 |
|
||
| `sys_turn_teach` | 听到这个声音,就是轮到你了。 | content | 「轮到你」状态声首现教学(挂 amo_a 链尾,全局一次) |
|
||
| `sys_praise` | 对。 | feedback | 首抉择结果链头肯定句(原则 11) |
|
||
| `sys_hint_continue_full` | 单击,继续。 | hint | continue 等待点 full 档 + 上滑状态链动作尾巴 |
|
||
| `sys_hint_continue_short` | 单击。 | hint | continue/settle 等待点 _short 档 |
|
||
| `sys_hint_choice_short` | 左右滑,选。 | hint | choice 等待点 _short 档 |
|
||
| `sys_hint_again_full` | 单击,重新开始。 | hint | settle 等待点 full 档 / 结算滑动解释句 |
|
||
| `sys_hint_menu_short` | 左右滑,点一下。 | hint | menu 等待点 _short 档 |
|
||
| `sys_only_choice` | 现在,只要左右滑。 | hint | 迷茫 L2 抉择点缩小选择 |
|
||
| `sys_demo_continue` | 听我做一次。 | hint | 迷茫 L3 演示前缀(intro/continue 替玩家走一步) |
|
||
| `sys_demo_choice` | 左右滑,都可以。现在你来。 | hint | 迷茫 L3 抉择点演示(不替玩家选) |
|
||
| `sys_say_again` | 再说一遍: | hint 前缀 | 主动重听(engine/hints.js 播出,全项目一句) |
|
||
| `sys_unlock_up` | 想知道自己在哪,就向上滑。 | content | 手势阶梯阶段 1 教学句(挂首抉择后链尾;engine/novice.js) |
|
||
| `sys_unlock_down` | 向下滑,可以打开菜单。 | content | 手势阶梯阶段 2 教学句(挂首局结局链尾) |
|
||
| `sys_unlock_dt` | 没听清,就双击,再听一遍。 | content | 手势阶梯阶段 3 教学句 |
|
||
| `menu_help` | 左右滑换项,点一下确认。 | content | 菜单说明(menu 等待点 full 档 + 菜单内上滑重听) |
|
||
| `status_choice` | 正在抉择。左右滑。 | hint | 抉择等待点上滑「我在哪」 |
|
||
| `sys_mem_back` | 听完,自动回到现在。 | hint | MEMORY 上滑状态链动作尾巴(§4「听完就回到现在」拆句兑现) |
|
||
| `inv_nosel` | 现在不用选。单击继续。 | feedback | 非抉择点滑动首次解释(原则 7) |
|
||
| `inv_mem` | 现在不用选。听完就好。 | feedback | 插叙中滑动首次解释(插叙无选择) |
|
||
| `inv_generic` | 这个操作用不上。单击继续。 | feedback | 其余无效格子/长按首次解释 |
|
||
| `inv_up_locked` | 上滑还没解锁。先单击继续。 | feedback | up 未解锁首次解释(管道触发) |
|
||
| `inv_down_locked` | 菜单,玩完一局解锁。单击继续。 | feedback | down 未解锁首次解释(管道触发) |
|
||
|
||
(含操作词的键盘变体 18 + 1 句照 KEY_LINES["storyline"] 措辞,见清单第四节。)
|
||
|
||
### 修改(1 句重录,id 不变)
|
||
|
||
| id | 旧 → 新 | 原因 |
|
||
|---|---|---|
|
||
| `sys_menu` | 「菜单。单击切换选项,双击确认。」→「菜单。左右滑换项,点一下确认。」 | 菜单改 00 号 §5.4 左右滑换项+单击确认(旧「双击确认」= 26 §7 反模式 5;key 变体重录) |
|
||
|
||
### 删除(8 句停用,游戏零引用;key 变体随主句下线)
|
||
|
||
`gd_brief`(开场操作念白,§4.10 零规则念白)、`gd_continue` / `gd_again`(旧看门狗
|
||
两档,三档提示取代)、`gd_invalid`(旧无效解释,inv_* 取代)、`gd_prog1` / `gd_prog2`
|
||
(旧无进展轨,迷茫检测取代)、`sys_help`(帮助溢出废止,含「双击重新听」旧口径;
|
||
手势阶梯取代)、`b_rule`(开场规矩念白,§4.10 砍掉)。
|
||
|
||
### R2 后总账
|
||
|
||
148 − 8(删除)+ 24(新增,SHORE 组)= **164 句**(双性别 137 = KEEPER 42 +
|
||
SHORE 95;NPC 平铺 27 不变)。键盘变体:新增 19 对 + 修改 1 对(sys_menu)+
|
||
既有保留 4 对(sys_menu / sys_skip / sys_continue_ask / p1)= 24 对。
|
||
|
||
## 多音字 / 发音风险自查注记
|
||
|
||
| 风险词 | 处理 |
|
||
|---|---|
|
||
| 重听 | 全表写「重新听」(sys_help / sys_help_k),无「重听」字样;「比灯重」zhòng 为唯一「重」,正确读法保留 |
|
||
| 落(luò/là/lào) | 「唱针落下 / 浪头落 / 那扇门留到今天」均为 luò 常用读法,保留,试听确认 |
|
||
| 数(shǔ/shù) | 「数三个浪头」(c8_new)为 shǔ 动词正确读法,保留,试听确认 |
|
||
| 缝(féng/fèng) | 名词「裂缝 / 礁缝 / 钻新缝」恒 fèng;全表无动词「缝」用法 |
|
||
| 卷(juǎn/juàn) | 「尾盖里卷着一页纸」(c2_key)为 juǎn 正确读法,保留 |
|
||
| 转(zhuǎn/zhuàn) | 「灯转得稳 / 自己转一夜 / 转灯整夜未停」恒 zhuàn 旋转义,正确;全表无 zhuǎn 用法(「转告/转述」未使用) |
|
||
| 塞(sāi/sè) | 「塞回灯底」(p6)为 sāi 口语正确读法,保留,试听确认 |
|
||
| 钻(zuān/zuàn) | 「钻新缝」(p8_reef)为 zuān 动词正确读法,保留 |
|
||
| 发(fā/fà) | 「发条」fà、「天边发灰」fā,均为固定词正确读法 |
|
||
| 长(cháng/zhǎng) | 「两长一短」(b_rain)为 cháng 正确读法;全表无 zhǎng 用法 |
|
||
| 教(jiāo/jiào) | 「谁教你的」(c2_songo)为 jiāo 口语正确读法,保留 |
|
||
| 壳 / 巷 / 挣 / 血 / 露 / 降(jiàng 外义)/ 率 / 传(zhuàn 义)/ 曾 / 宿 / 泊 | 全表未使用 |
|
||
| 了(le/liǎo)、还(hái/huán)、得(de/děi)、着(zhe) | 常规句式常见读法,逐句人工试听项(「我听见了」「风声回来了」未用还 huan 义;「撑不住」「稳但绕远」为常用读法) |
|
||
| 数字 | 句内数字全部写死(四十年前/十二年前/第七级/十级/两艘/三个/两百米/一刻钟/半个时辰/七个人/三遍/半里/三刻),幕次/信任/真相用分档整句(prog_m1..3、tr_*、tru_*) |
|
||
|
||
## 台词侧自查
|
||
|
||
- 单句 ≤40 字:全表最长 = p7(35 字),次长 p9a/p9b(各 32 字)、d9_tell_a(31 字)、p3(30 字)✓;NPC 句最长 amo_c(25 字)、rev_c2(23 字),平均 ≤20 字(P4 靠短句+逗号停顿,不用 instruct 语速词)✓。
|
||
- NPC ≤5 人(3 人)、speaker+instruct 恒定、区分度风险逐个标注(阿澈/父 亲两处「中」均有滤波+语境缓解方案)✓。
|
||
- 称呼合规:阿澈对玩家只用「塔 / 守塔人 / 你」,性别化称呼零出现;父亲插叙只对塔台/家人说话 ✓。
|
||
- 每个结局(e1..e4)专属主句+钩子各 2 句齐备;尾声按 p7×trust(阿澈三态)/p7×rev2(灯三态)/p9×truth(日志两句+truth=0 不播)/rev2(父亲签字)选播,双线齐备 ✓。
|
||
- 归因真话律:负向收尾句(c1_aske / c3_dark / c9_found / d9_tell_b / ep_lamp_dark / ep_amo_dawn / e4_b)全部指向玩家实际选择或真实处境,无「运气不好」类假归因、无惩罚性措辞 ✓。
|
||
- 时空签名:插叙锚入/锚出六句(rev_g1/g4、rev_f1/f5、rev_c1/c5)措辞固定成对(「唱针(又)落下……」/「风声回来了……」),教学句 rev_teach 的四要素(唱针落下/风声退后/风声回来/就是现在)逐句兑现 ✓。
|
||
- 向导 gd_* 6 句(gd_brief/gd_continue/gd_again 各带 _k 变体,gd_invalid/gd_prog1/gd_prog2 无变体)符合 14 号 §6 台词规范(一句一义、无重复句式、单句 ≤18 字)✓。
|
||
- 信任档位句与数值一一对应(tr_deep≥3 / tr_half=1-2 / tr_thin=0);真相度四句逐值为真(tru_zero=0 / tru_one=1 / tru_two=2 / tru_full=3),账目真实 ✓。
|