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 置完成。
33 KiB
33 KiB
21b · 《守塔人》(keeper) 语音台词表(voice ids,录音依据)
26 号对齐(资产清单,不是交互宪法)
- 交互与新手手势以 26-audio-interaction-playbook.md 和对应游戏正文为准。
- 本表仍是 TTS id 事实源的登记副本(生成以
tools/gen_voice_dual.py为准)。含「双击重听 / 双击使用 / 双击格挡 / 单击循环菜单」的句子 停用或按游戏正文重录。- 写作:指令 ≤12 字,短句档 ≤6 字,叙事 ≤25 字;每句标
critical/content/hint/feedback。游戏主动提示不得原样重复;重听前加「再说一遍:」。- 键盘变体:新手期回车当空格(单击)。删除「按回车=重听」类旧口径,或仅在阶段 3 解锁双击后启用。
- 共用新句见 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;台词增量清单见
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),账目真实 ✓。