Files
SoundGame/docs/design/22-bridge.md
T
xsl 4b39ae2e49 feat(new8/batch3-4): cipher/teahouse/keeper/bridge 全套交付——new8 八款全部可交付收官
四泳道并行全流水线(资产→开发→测试→玩家迭代闭环),双双 R1-R2 连续达标裁定可交付:
- cipher《暗码》223 断言:摩尔斯解码嵌叙事/四结局矩阵/暴露度逐NIGHT验算/三层兜底;R2 三修(链首标记音/预警震/结局计数句+4句补录)4/4 全满分档
- teahouse《深夜茶馆》205 断言:泡茶时机窗/经济逐晚对账/多晚弧线;连续 2 轮 4/4 愿意玩 P0=0
- keeper《守塔人》257 断言:时空签名教学-兑现/插叙触发回返/trust×truth 档位/4结局;R2 F1/F2 坐实(震型豁免/首播跳句锁)4/4
- bridge《星环舰长》336 断言:巡检节奏逐毫秒/危机×系统态矩阵/仲裁7场景/忠诚差分/评级验算;R1 当场修F1-F4、R2 F5 菜单顺延保护 4/4 上行

公共:index.html 四卡片+profiles.js 四桶+check_all_assets 登记(预接线)、00-program 八款进度账收账、
gen_voice_dual 四游戏段、README/HANDOVER 阵容更新(11 款)、voice_text.json 四游戏键、mureka 台账(累计$1.26/$2.00)

验证:四游戏 playtest 223/205/257/336 全绿 + guide 122/122 + 全项目 15 游戏资产终检绿
遗留:keeper 三代人声滤波人耳试听(最高优先,ASR 对滤波句失明)、bridge 音频 32MB 超软指引 2MB(压缩候选)
2026-09-14 05:48:13 +08:00

56 KiB
Raw Blame History

22 · 《星环舰长》完整设计(bridge / Star Ring Captain)

给开发者的实现要点摘要

  1. 舰桥指挥 RPG:核心动词=听声辨型后下令。四象限系统(引擎=舰尾低频/护盾=舰首中高/扫描=左舷 pan L/武器=右舷 pan R)各有专属 SYN 状态音(正常/受损/离线);危机事件(陨石群/海盗/求救/辐射云)以预 pan 签名音+固定模板方位句从四象限之一来袭,玩家在时限窗内左右滑听选项+单击下令(规避/迎战/硬闯/驰援/忽略 五个通用动词,选项句自带系统需求)。一局=4 巡航段(段=航线选择→巡航→危机→靠港整备),15-22 分钟。
  2. 常态静默/按需巡检的黄金折中(本作最大认知负荷风险):常态不播正常系统底噪(BGM 承担氛围),只有受损系统按仲裁规则发告警脉冲;正常系统状态由上滑巡检链按需播(四系统 2.0s 状态音固定顺序+固定间隔——SYN 合成,节奏逐毫秒可断言);离线=死寂+共用平线签名。
  3. 告警优先级仲裁+叠爆抑制(space 警报叠爆/R1 P4 被轰炸一分钟劝退教训):显式规则表 R1-R8——一次只响一条系统告警、轮转公平、600ms 叠爆去重、语音让路、危机窗静默无关告警、双危机 FIFO 排队、修复即止、菜单/结算全静默;§3.5 穷举 7 种并发场景(含双危机)。
  4. 手势宪法三件套全状态保留(上滑巡检/下滑菜单/双击重听);唯一豁免 E1=CRUISE 单击=重播最近告警(escape「检查」先例)。下令绑单击(非即时,12-20s 窗口无碍);无 immediateTap;长按非玩法输入,不开 E3 快进豁免(登记)。
  5. 账目真实三本账:忠诚(事件-忠诚影响表逐行差分,档位句=ledger band)、经济(每段采集/修理/奖励逐笔,档位句跨档才播)、评级(score 公式+一条完整巡逻剧本逐事件验算 §8.4-8.6)。REPORT 结算链 800ms 手势死窗+链锁(dungeon H1/detective VERDICT/teahouse CLOSE 同款)。
  6. 随机性全走 seed PRNG(mulberry32,opts.seed 注入):危机类型序(首局固定升难度序,之后洗牌+约束 S1≠辐射)、每场方位(方位还决定受殃系统)、求救陷阱 25%(首局恒无)、磨损系统、S4 双危机余波 40%(首局无)。同 seed 深相等。
  7. 台词表 22-bridge-voice-ids.md:旁白 142 ×2 性别 + 船员 NPC 平铺 12(3 音色,与两侧旁白零重叠)= 154 句 ≤160 上限;操作提示句键盘变体 _k 集中登记(V 组 10,gesture.inputMode() 选播)。全句 ≤40 字(实测 ≤38)。
  8. 规模对标 detective/teahouse:单文件 game.js 预计 1000-1200 行;bgm 3 + sfx 30(SA3 任务 4 个,pan 派生 8 文件)+ voice 296 条(×2 格式=592 文件)。断言清单住本文档 §12(13 号文档 §20-22 先例登记)。

1. 概述

  • 一句话:你是巡逻舰星环号的舰长,坐在舰桥里用耳朵指挥全舰——四个系统各守一方,危机从哪个方位来、是什么东西,全凭声音判断,然后下令。
  • 题材:舰桥指挥。核心命题「危机是从哪个方向、以什么声音来的」——纯音频天然适合:方位=预 pan 立体声+固定模板句,系统状态=可断言的状态音,指挥=听选项后下令;视觉游戏的仪表盘在这里是一套「异常才出声+按需巡检」的听觉状态层。
  • 玩法定位(方法论 §4.1 无现成行,状态层重点自定):状态即音色(四系统三态音+仲裁纪律,A1/A3 的本作落地)+ 方位降维 ≤4(左舷/右舷/舰首/舰尾,文献结论恰为上限)+ 抉择窗口标记(检测链→决策窗→下令)+ 账目真实(忠诚/经济/评级三本账播报值=运行值)。
  • 单局=一次巡逻:4 个巡航段,每段=航线选择→巡航(采集+磨损+告警管理)→危机→靠港整备,约 15-22 分钟(首局含教学 17-22);章程 15-25 分钟达标。巡逻结束结算评级(S-D),功勋入跨局舰船成长(星港改装 6 项,roguelite 轻元进度)。
  • 失败态:舰体归零=弃舰撤离(死亡归因链 ≤15s 必答三问,dungeon 先例);功勋按已完成段数折算,meta 不清档。
  • 与现有 12 游戏的关系:方位声学承接 space(pan+频率双轴,本作进阶为系统/危机统一方位语言);状态档位链承接 dungeon(上滑多段链);双轨看门狗承接 dungeon E0-1/E0-2;结算死窗承接 dungeon H1/detective VERDICT;NPC 群像+签名 earcon 承接 detective/teahouse;元进度承接 dungeon 遗产;「异常才出声」承接 rpg 血量档降档才播裁定。
  • 本作三大特有风险(均在 §3 显式预防):① 多系统并发告警听觉过载;② 状态音常驻的认知负荷;③ 忠诚度账目失真。

2. 手势映射与豁免登记

2.1 标题(TITLE)与星港(PORT,TITLE 子相位)

手势 TITLE PORT(右滑进入)
单击 继续(有档,播 sys_continue_ask 后)/ 新巡逻(无档) 执行当前项(购买/返回)
双击 重听 continue_ask 重听当前项句
左滑 error 上一项(循环)
右滑 进星港(功勋兑换) 下一项(循环)
上滑 舰船概况链(功勋档→已改装项逐项播其 upg_* 效果句→未改装则仅功勋档) 同 TITLE
下滑 菜单(§2.6) 菜单
长按/松开 error error

有档单击继续 → 恢复 run + 中断复述链(§11)。PORT 列表=未购改装项(armor2 仅 armor1 已购后出现)+返回(port_back);购买 → upg_buy / port_poor(真话)。

2.2 巡航(CRUISE;含 ROUTE 航线选择子相位)

手势 ROUTE(选航线) CRUISE 空闲 CRUISE 巡检链播中
左滑/右滑 切换航线选项(播 opt_route_*) error 震+gd_invalid(onceKey) 静默忽略(保护链播)
单击 选定航线 → 进巡航主体 重播最近告警(60s 内的告警脉冲/事件签名;无 → cruise_ping 柔和问询音,E1) 跳段(跳过当前巡检段进下一段,rpg 探索跳句先例)
双击 重听当前选项句 重听最近一句语音(宪法) 重听当前巡检段
上滑 巡检链 巡检链(§3.3) 重播全链
下滑 菜单 菜单 菜单(打开即停链)
长按/松开 error 快进(语音在播时,引擎默认)/error 快进/恢复常速

ROUTE 无倒计时:45s 无选择自动走稳妥线(不卡巡航);看门狗 12s/30s(gd_decide/null)。

2.3 危机(CRISIS:DETECT 检测 → DECIDE 决策两子相位)

手势 DETECT(签名+类型句+方位句,~8s) DECIDE(决策窗,倒计时)
左滑/右滑 静默忽略(纯聆听保护,simon/teahouse 先例) 切换选项(播 opt_*;循环)
单击 静默忽略 下令(选定当前预览选项;窗内非即时,300ms tap 延迟无碍)
双击 静默忽略 重听当前选项句(宪法语义保留)
上滑 静默忽略 巡检简链(tones→舰体档→最紧要异常,§3.3;决策窗不宜全链)
下滑 菜单(冻结检测链与全部计时) 菜单(冻结倒计时+告警;关闭→重播当前选项句后继续走表)
长按/松开 快进(引擎默认) error 震(选择语境不作输入,detective CONFRONT 先例)
  • 检测链:签名音(2.5s,预 pan/尾音)→ evt_(类型句)→ dir_(方位句)→ cr_decide → 自动预览第一选项 → 倒计时从 cr_decide 落声起算(信息先于计时,公平)。检测链顶断在播的巡检链(R4)。
  • 倒计时尾段 3s:tick_fast 每 0.5s + warning 震每 1s;到点 → cr_timeout + 该类型默认结局(§4.2 矩阵,超时=真话归因)。
  • 下令演出:pa_chime(全舰广播音)→ 选项执行音(eva_ok/wpn_fire/shield_bear/warp)→ 判定链(系统态不满足先播 sys_*_off 真话)→ 结果句+账目句 → 自动回 CRUISE 或段末。

2.4 靠港整备(DOCK)

非模态列表(rhythm 选曲范式:左右滑+单击确认):

手势 DOCK
左滑/右滑 上一项/下一项(循环):修理项(仅受损/离线系统,各一项)→ 启航(dock_go 恒为末项)
单击 执行:修理(升一级,扣 2 资源→rep_ok/rep_poor)/ 启航(evt_resume→下段 ROUTE)
双击 重听当前项句
上滑 巡检链
下滑 菜单
长按 error

全系统无异常 → 仅「启航」+dock_empty。修理两级:受损→完好一步(2 资源);离线→受损→完好两步(每步 2 资源)——rep_* 句「升一级,两资源」恒真。

2.5 结算(REPORT)

手势 链内(死窗+链锁 §6.4) 链完
单击 吞掉 返航 → TITLE(settle_hook「单击,返航」言行一致)
双击 吞掉 重听结算链
上滑 吞掉 重听评级段(rate_X→merit_档)
下滑 吞掉 菜单
左滑/右滑/长按 吞掉 error

死亡链(die_intro→die_cause→die_adv→rep_open→rate_d→merit→settle_hook)同死窗+链锁。

2.6 模态菜单(遵守 00 §5.2 全球约定,无豁免)

下滑呼出(冻结全部计时:危机倒计时/告警调度/巡航段计时)→ 单击循环 → 双击确认 → 上滑帮助 → 下滑关闭(关闭=回原状态+危机时重播当前选项句)。选项 4 项:回到舰桥 / 保存并回大厅 / 重新听帮助 / 放弃本次巡逻(run 清空保 meta,二次确认不设——菜单即模态)。

2.7 每状态手势映射总表(6 手势+长按松开,全状态覆盖)

手势 TITLE DRILL ROUTE CRUISE CRISIS-检测 CRISIS-决策 DOCK PORT REPORT链内 REPORT链完 MENU
单击 继续/新巡逻 步骤作答 选定航线 重播告警/跳段 忽略 下令 执行项 执行项 吞 返航 循环切项
双击 重听 重听教学句 重听选项 重听最近句 忽略 重听选项句 重听项句 重听项句 吞 重听链 确认执行
左滑 error 教学指定/err 上一选项 err+纠错 忽略 上一选项 上一项 上一项 吞 err 上一项
右滑 进星港 同上 下一选项 同上 忽略 下一选项 下一项 下一项 吞 err 下一项
上滑 概况链 巡检链(教后) 巡检链 巡检链 忽略 巡检简链 巡检链 概况链 吞 评级段 帮助
下滑 菜单 菜单/跳教学 菜单 菜单 菜单(冻结) 菜单(冻结) 菜单 菜单 吞 菜单 关闭
长按 error error error 快进/err 快进 error error error 吞 error error
长按松开 — — — 恢复常速 恢复 — — — — — —

无效手势一律 error 震;full 档 gd_invalid(onceKey 同局 1 次);idle-only(引擎 guide 已实现)。

2.8 豁免登记(必须显式)

# 豁免条目 理由(先例)
E1 CRUISE 空闲单击=重播最近告警(非「确认」) 「检查」类非即时操作(escape 单击=检查、dungeon 单击=脉冲同款);60s 内无告警播 cruise_ping(空态反馈,绝不静默);巡检链播中单击=跳段(12 号 rpg 探索跳句口径)
E2 CRISIS 决策窗长按=error(快进天然失效) 选择语境不作输入(detective CONFRONT 同款);决策窗内通常无语音在播,引擎快进无对象,无冲突

不设 E3:长按不是本作玩法输入,setRateBoostEnabled 全状态保持默认开启(登记,与 dungeon E3 相反的裁定依据)。无 immediateTap;下令绑单击(12-20s 窗口,非即时判定)。

3. 四象限系统信息设计(核心)

3.1 方位语言与预 pan 方位表(≤4 铁律)

全作统一一套方位语言,系统与危机共用(教一次通吃;04-space「pan+频率双轴」进阶):

方位 声学编码 资产工艺
左舷 port 能量只在左声道 预 pan 派生 _l(ffmpeg stereotools,dungeon mob_step 工艺)
右舷 starboard 能量只在右声道 预 pan 派生 _r
舰首 bow 中央+上行尾音 dir_bow(0.3s,600→1200Hz) center+SYN 尾音
舰尾 stern 中央+下行尾音 dir_stern(0.3s,1200→500Hz) center+SYN 尾音
  • 系统常驻方位(固定舰桥布局,intro_3..5 教学):引擎=舰尾(低频族)、护盾=舰首(中高频族)、扫描=左舷(pan L)、武器=右舷(pan R)。
  • 危机方位:seed 四方位均匀;方位有机制意义——未化解危机的「受殃系统」副作用落在方位对应系统(该系统已离线则顺时针下一系统:左舷扫描→右舷武器→舰首护盾→舰尾引擎)。intro_5「危机从哪边来,哪边先遭殃」承诺必兑现(playtest 锁定)。
  • 危机方位播报=固定模板句 dir_port/star/bow/stern(方位,X舷/舰首/舰尾),无连续角度、无数字。

3.2 系统状态音规格(全 SYN,节奏精确可断言)

三态:ok 正常 / dmg 受损 / off 离线。巡检链按固定顺序 引擎→护盾→扫描→武器 播放:每音 2.0s±50ms、间隔 0.4s;SYN 程序合成(参数写死在 gen 脚本,playtest 虚拟时钟逐毫秒断言)。

系统(方位/频带) ok(2.0s) dmg(2.0s 巡检用) off 告警脉冲(常态用)
引擎(舰尾/60-110Hz) 两记低鸣脉冲各 0.45s,t=0.0/1.05 三记断奏闷咳 0.25s,t=0.0/0.7/1.4,第三记加失真 死寂+平线签名 sys_offline(180Hz×3 慢平音各 0.15s,t=0.0/0.7/1.4,全系统共用) alm_engine 0.45s 单声闷咳,周期 8s
护盾(舰首/1.2-2.8kHz) 均匀薄雾嗡垫 2.0s 无起伏 同垫+8Hz 抖颤,两次熄灭(t=0.5-0.7/1.3-1.6) 同上 alm_shield 0.4s 闪烁哔,周期 6s
扫描(左舷/800-1600Hz pan L) 两声匀速扫掠各 0.6s,t=0.2/1.2 单声扫掠+尾部杂斑 0.3s(t=1.4) 同上 alm_scan 0.5s 失锁双哔,周期 10s
武器(右舷/400-900Hz pan R) 单音渐强充能 1.6s 满充收尾 两次短充中断各 0.5s,t=0.2/1.1,各带中断嘶 同上 alm_weapon 0.5s 欠充降调,周期 12s
  • 音量:巡检音 0.7 / 告警脉冲 0.8 / 平线 0.7 / 危机签名 0.9;四系统频带+节奏型零重叠(偶发瞬时叠听不糊,Brewster 指南)。
  • 四系统告警周期互质(6/8/10/12s)——双受损时脉冲落点天然错开,再叠加 R1 串行化,双保险防融合成噪音墙。

3.3 巡检链(上滑)——「常态静默/按需巡检」黄金折中

常态只播异常系统(rpg「降档才播」裁定的系统版):正常系统在巡航中零发声(氛围由 bgm/cruise 承担),受损系统按 §3.4 仲裁发告警脉冲;全部状态可随时上滑巡检。

全链(CRUISE/DOCK/ROUTE,~15-40s):
  4×状态音(固定序) →(全 ok → tut_all_ok;否则逐个 sys_*_dmg/off 异常句)
  → st_hull_档 → st_seg_段 → st_rp_档 → st_xo/st_eng/st_doc 三档 → 完
简链(CRISIS 决策窗,≤10s):4×状态音 → st_hull_档 → 最紧要异常句(仲裁榜首)
中断复述链(恢复存档,§11):st_hull_档 → 最紧要异常句(无则跳过) → st_seg_段 → recap_go
  • 巡检链可被危机检测链顶断(R4)、可被单击跳段(E1)、可被菜单停止——按需查询永远让位于游戏事件。
  • 最紧要异常=§3.4 仲裁榜首系统(与耳朵里正在响的告警同源——听到的与查到的永不矛盾,单源)。

3.4 告警优先级仲裁与叠爆抑制(显式规则表,R1-R8)

总优先级(高→低):voice 通道(下令/结算/归因) > A1 危机签名+方位链 > A2 决策窗尾段 tick > A3 受损系统告警(轮转) > 静默。声流预算恒 ≤2(BGM+1 条内容声流;voice 播出时 BGM duck→voice+≤1 sfx)。

# 规则 内容 先例/教训
R1 单告警纪律 同一时刻至多 1 条系统告警在响。多系统受损时按序取 1:① 危机关联系统优先(陨石→引擎/护盾/武器;海盗→武器/引擎;求救→扫描;辐射→引擎/护盾)② 无危机时威胁序 引擎>护盾>武器>扫描 「一次只报最要紧的」队列纪律;space R1 P4 被警报轰炸一分钟劝退
R2 轮转公平 落选告警排队不丢弃:榜首连响 15s 让位次位 5s(双受损 3:1 轮转;三受损 10/5/5s);周期到点恰逢他人时段 → 顺延一拍 低位告警不被饿死,也不抢话
R3 叠爆去重 同一告警 id 600ms 窗口内重复调度只响一次;不同 id 由 R1 天然串行 space F6 裁定原样移植
R4 语音让路 voice 播出期间(isVoicePlaying)A3 告警暂停调度(延迟不丢弃),voice 结束+0.5s 恢复;A1 检测链顶断在播巡检链(游戏事件>主动查询);A2 tick 不让路(voice+tick=2 声流) A3 信息分层;rpg「指令名礼让」同思路
R5 危机窗静默无关告警 决策窗内仅危机关联受损系统告警参与 R1;无关系统告警挂起至危机结算 决策窗认知带宽保护(P4)
R6 双危机排队 同一时刻至多 1 场危机占决策窗。第二场检测到点落在第一场决策窗/结算链内 → FIFO 顺延至第一场结算句落声+2s 再播检测链;其决策窗从自身检测链起算。绝不叠加两套签名音 结算死窗 H1 同源纪律
R7 修复即止 修理/支援修复使系统恢复 → 该系统告警立即截断、排队项移除,播 rep_ok/sup_eng 修复的听觉回报要干净
R8 菜单/结算全静默 MENU 打开 → 告警调度+危机倒计时+段计时全部冻结(恢复按当前榜首续响,不回放积压);REPORT/死亡链 → 全部告警清空(链独占) 00 §5.2 暂停语义;dungeon H1

3.5 双危机并发穷举(仲裁完备性自证)

S4 有 40%(seed)第二波危机(陨石余波,固定型)。全部并发场景 × 适用规则:

# 场景 适用规则 行为
S1 危机 A 决策窗内,危机 B 检测到点 R6 B 检测链顺延至 A 结算句+2s;窗内零 B 声
S2 危机 A 结算链(voice)播中,B 检测到点 R6+R4 B 等 A 链完+2s;期间 A3 全让路(R4)
S3 B 已排队,A 玩家下令前菜单打开 R8+R6 菜单冻结一切;关闭后 A 倒计时续走,B 仍排队
S4 双受损告警轮转中,危机 A 检测 R1①+R6 签名抢占 2.5s;窗内仅关联系统告警(R5),轮转按 3:1 在关联集内继续
S5 语音(结果句)在播,告警周期到点 R4 告警延迟至 voice+0.5s
S6 决策窗尾段 3s(tick)撞告警周期 优先级 A2>A3 tick 先响,告警顺延一拍
S7 REPORT 进入时仍有受损系统 R8 告警清空,结算链独占

七场景全部有确定性行为与 playtest 断言(§12.5);不存在「两套签名重叠」「双告警齐鸣」「B 计时偷跑」三条红线(§12 失败即不通过)。

4. 危机事件卡系统

4.1 事件类型表

类型 音频签名(SA3 2.5s) 方位 时限 选项(通用动词句) 超时默认
陨石群 碎石呼啸雨(多次掠空+碎击) seed 四方位 12s 规避/迎战/硬闯 ≡硬闯
海盗 敌船引擎轰鸣+充能啸音 seed 15s 迎战/规避/忽略 先挨打 hull−2
求救信号 断续三短求救码(背景杂讯) seed 20s 驰援/忽略 信号消失(无伤)
辐射云 盖革计数急响渐密 seed 10s 规避/硬闯 受照 hull−1+受殃系统受损
  • 每局=四类型各一场(§4.3 生成规则)——「危机全类型路径」每局自然全覆盖。
  • 陷阱变体:求救 25%(首局恒无)——签名尾部混入微弱引擎声,检测链播 trap_hint 提示(+doc_trap NPC 接播;「求救码后面,有引擎声,多留心」——先给线索再做决定,公平)。

4.2 选项-系统态结果矩阵(判定与账目单源;系统不满足先播 sys_*_off 真话再计结局)

陨石群:

选项 引擎/武器/护盾 ok 相关系统受损 相关系统离线
规避(引擎) res_clean 无伤 擦伤 hull−1(res_hurt) sys_engine_off→hull−2(res_bad)
迎战轰开(武器) res_mine +1 资源,大副+1 hull−1(res_hurt) sys_weapon_off→hull−2
硬闯(护盾) 无伤但护盾受损(sys_shield_dmg+工程师−1) hull−2(res_bad) sys_shield_off→hull−2
超时 ≡硬闯(含护盾 ok 时的工程师−1——被动硬闯同为真话账)

海盗:

选项 ok 受损 离线 附注
迎战(武器) 胜:战利+2 资源(res_plunder)、大副+1、基础 hull−1;大副信赖(≥2)→sup_xo 战果升一级 hull−0;大副离心(≤−2)→hull−2 胜但 hull−2、战利+2 sys_weapon_off→惨败 hull−3(res_bad) sup_xo 在下令瞬间按 band 判定
规避(引擎) 甩脱无伤、大副−1(loy_evade_pirate) hull−1 擦脱 没跑掉 hull−2
忽略/超时 先挨打 hull−2、医师−1 同左 同左

求救信号:

选项 扫描 ok 扫描受损 扫描离线 陷阱变体
驰援(扫描) res_reward +2 资源、医师+1 大副+1(loy_aid) 成功但残骸刮蹭 hull−1 sys_scan_off→找不到,无事发生(无惩罚无忠诚变化) 武器 ok→伏击反杀 res_plunder +2、大副+1;武器受损/离线→res_ambush hull−2、医师−1
忽略/超时 loy_ignore 医师−1,无其他惩罚 同左 同左 忽略=明智避开,零损益

辐射云:

选项 ok 受损 离线
规避(引擎) res_clean hull−1(res_hurt) 规避不动→受照结局
硬闯(护盾) 无伤但护盾受损一级、工程师−1 hull−2(res_bad) 同受照
超时 res_rad:hull−1+方位对应系统受损一级(已受损则离线;已离线则顺时针下一系统)

受创一律 hit_hull 音+hit 震;资源入账 res_pick+pickup 震;舰体跌档跨档播 st_hull(双向)。

4.3 seed 用法与生成规则

rng = mulberry32(seed)                     // dungeon/detective 同族
正式局 seed = Math.floor(Math.random()*1e9),开局掷一次存入 run
生成期一次性洗牌/抽取(存 run.plan,读档复用不重洗):
  ① 危机类型序:首局固定 [求救,陨石,海盗,辐射](难度递增+教学耦合);
     非首局 = Fisher-Yates 洗牌 + 约束 S1≠辐射(10s 窗不宜开局)
  ② 每场方位:uniform{左舷,右舷,舰首,舰尾}(决定签名 pan/尾音与受殃系统)
  ③ 求救陷阱:25% Bernoulli(首局恒 false)
  ④ 磨损:每段 1 次(S1 无;矿富航线 2 次),目标=当前 ok 系统 uniform
  ⑤ S4 双危机余波:40%(首局恒 false;第二波固定陨石余波+seed 方位)
复现断言:同 seed 两次构造 → run.plan 深相等(类型序/方位/陷阱/磨损/余波逐项)

巡航段长(固定,不随机):S1 90s / S2 100s / S3 110s / S4 120s(节奏曲线 §13)。

5. 船员忠诚系统

船员固定 3 人(大副/工程师/医师,开局全员 0,clamp −3..+3)。忠诚=抉择的长期回声:每一次危机抉择按表入账,档位句从同一 ledger 读出(播报值=运行值)。

5.1 事件-忠诚影响表(全量;与 §4.2 矩阵同源)

事件·抉择 大副 工程师 医师 即时句
求救·驰援成功(含陷阱反杀) +1 0 +1 loy_aid;NPC 接播:普通驰援→doc_aid、陷阱反杀→xo_aid
求救·驰援但扫描离线未遂 0 0 0 sys_scan_off(无忠诚账)
求救·陷阱受伏(武器不可用) 0 0 −1 res_ambush+loy_rad?——用 loy_rad(医师处理伤员)
求救·忽略/超时 0 0 −1 loy_ignore / doc_ignore(NPC)
陨石·迎战轰开 +1 0 0 res_mine+loy_fight_win
陨石·硬闯/超时(护盾扛) 0 −1 0 loy_breach / eng_gripe(NPC,≤−2 时)
陨石·规避 0 0 0 —
海盗·迎战(胜) +1 0 0 loy_fight_win / xo_win(NPC)
海盗·规避 −1 0 0 loy_evade_pirate
海盗·忽略/超时(受创) 0 0 −1 res_bad+loy_rad
辐射·硬穿(护盾) 0 −1 0 loy_breach
辐射·超时受照 0 0 −1 res_rad+loy_rad
辐射·规避 0 0 0 —

5.2 档位与措辞(逐值为真)

档 区间 句(每成员一句) 措辞↔账目
离心 ≤−2 st_xo_1「大副,离心。」等 ×3 成员 「离心」=band≤−2(支援缺席+NPC 撂话:xo_uneasy/eng_gripe/doc_ignore 首次各一句,每局 1 次)
平常 −1..+1 st_*_2 ×3 「平常」=band∈[−1,1]
信赖 ≥2 st_*_3 ×3 「信赖」=band≥2(关键支援激活)

档位只在巡检链播(跨档即时句由 5.1 的 loy_* 承担,二者并存不矛盾:loy 句说事件、band 句说状态)。

5.3 关键支援触发条件(档位的机制回报)

成员 触发点 条件 效果 播报
大副 海盗·迎战 下令瞬间 band≥2 战果升一级(hull−1→0;基础本就含 −1) sup_xo+xo_fight(NPC)
工程师 段末(DOCK 进入前) band≥2 且有受损/离线系统 自动修 1 级(受损最重者;R7 即止) sup_eng+eng_sup(NPC)
医师 段末(DOCK 进入前) band≥2 且本段 hull 净减 ≥1 舰体+1(不超上限) sup_doc+doc_care(NPC)
任一 支援条件不满足(本该触发) band<2 支援缺席 sup_none(每局限 1 次,之后静默)

大副离心(≤−2)附加:海盗迎战战果降一级(hull−1→−2)——与信赖对称,不引入新句子(数值账 playtest 锁定)。工程师/医师离心=支援缺席(无额外惩罚,avoid rep_* 句价目失真)。

6. 状态机

6.1 状态列表

TITLE / DRILL(首局教学态,寄生于 S1) / CRUISE(ROUTE+主体) / CRISIS(DETECT+DECIDE) / DOCK / REPORT + MENU(挂起 overlay,记录返回态);PORT=TITLE 子相位。

6.2 转移图

start ──> TITLE ──tap(有档)──> 恢复 run+中断复述链 → CRUISE/当前段
            │tap(无档) ├──────> DRILL(仅首局, meta.drillDone) ──完成/下滑跳过──> CRUISE(S1)
            │右滑=PORT(功勋改装)                          │
            v                                            v
       CRUISE(段n) ──段计时到──> CRISIS(类型=plan[n]) ──下令/超时结算──> (n<4) DOCK(evt_dock) ──启航(evt_resume)──> CRUISE(n+1)
            │S4 余波:结算后 2s 若有余波 → 再入 CRISIS(余波) → 结算                    │n=4
            └──任意时刻 hull≤0──> REPORT(死亡链)                                v
                                                                REPORT(巡逻结算链) ──tap──> TITLE
       任意正交态 ──下滑──> MENU(冻结计时) ──关闭──> 原状态(危机时重播当前选项句)

6.3 语音链推进契约

  • 检测链/结果链/结算链=onComplete 串行(句间 0.8s);单句 8s 无 onComplete(资产缺失)→ 告警续链(「屏蔽任意 voice 流程不卡死」契约;危机兜底=超时默认结局自动推进)。
  • 教学链 _speakGuarded 串行(radio/dungeon D0-1 引擎保险丝先例,杜绝同 tick 双调度抢占)。
  • REPORT/死亡链为独占链:链首停看门狗与全部告警(R8)。

6.4 REPORT 死窗与链锁(dungeon H1 内化)

进 REPORT 即盖 REPORT_GRACE_MS=800 戳(touchstart+450ms 长按+300ms 双击窗 ≈750ms,800 全盖);死窗内一切手势吞掉(ghost 手势不算输入、不碰看门狗)。链锁:链尾 settle_hook 落声前单击/右滑/长按一律吞掉;链完成后单击=返航(settle_hook「单击,返航」言行一致,simon round1-live 教训)。双击=重听链仅链完成后受理。

7. 教学编排(DRILL,首局寄生于 S1 求救)

每步=一句短旁白→等待实操→反馈;做错重教同一步(新短句 ≤2 次)后自动演示通过;下滑=跳过(tut_skip),meta.drillDone 持久化。首局 S1 求救恒无陷阱(tut_aid「我们的扫描,稳得很」承诺必兑现——S1 无磨损保证扫描 ok)。

步 旁白 等待动作 通过条件/反馈
D0 intro_1..5 → tut_d0 上滑 巡检全链(全 ok)+tut_all_ok。首输入 ≈t+25s(<60s ✓)
D1 tut_crisis (检测链自动)听签名+类型句+方位句 求救检测链播完(纯聆听)
D2 tut_decide → tut_aid 左右滑预览 → 单击下令「驰援」 pa_chime→执行→res_reward+loy_aid+doc_aid→tut_after。首正反馈 ≈t+2.5-3min(≤3min ✓)
D3 tut_loyal 上滑 巡检链(听到三档船员句)
D4 tut_done — 进自由巡航(S1 主体)
  • 学期零惩罚:S1 无磨损、求救超时=信号消失(无伤无资源损失,cr_timeout 真话);DRILL 内乱按不可能掉血掉资源。
  • 教学无进展轨(E0-2 先例):30s earcon→60s 短句→90s 自动演示通过(自动驰援)。

8. 数值与经济

8.1 资源经济(每局两本账:舰体 hull / 资源点 RP)

hull:初始/上限 6(armor1→7、armor2→8)。伤害单位 1-3/次。≤0 → 死亡链。
RP:段首采集入账(稳妥线 2 / 矿富线 4;采集协议改装后 3/5)+ 奖励(矿材 1/战利 2/报酬 2)
    − 修理(每级 2)。REPORT 时 剩余 RP ÷3 向下取整 → 折算功勋(资源不白攒)。
磨损:每段 1 次(矿富 2 次)随机 ok 系统受损一级(受损→离线)。
st_rp 档:0-2 紧张 / 3-6 够用 / ≥7 充足(跨档才播、双向播,播报值=运行值)
st_hull 档(按比例,兼容上限升级):≥75% 稳固 / 40-74% 带伤 / <40% 危急

8.2 评级公式(措辞↔账目一一对应)

score = 完成段数×2(满 8) + 舰体剩余(绝对值) + 驰援成功×2 + 击退海盗×2(含伏击反杀)
      + 全程无系统离线×1
S ≥18 / A ≥14 / B ≥10 / C ≥6(完成巡逻保底 8+0=8 → C 封底)
D = 巡逻失败(hull≤0 弃舰撤离)
功勋 = 完成段数 + 评级加成(S+8/A+5/B+3/C+1/D+0) + floor(剩余RP/3)

8.3 升级树(星港·功勋,跨局保留;dungeon 遗产模式)

改装 功勋 效果
upg_spare 备用零件 20 开局自带物资(RP +2)
upg_harvest 采集协议 30 每段采集 +1(路线句无数字,恒真)
upg_armor1 加装装甲 40 舰体上限 6→7
upg_vet 老兵船组 50 开局全员忠诚 +1
upg_armor2 重型装甲(需 armor1) 60 舰体上限 7→8
upg_aegis 应急护盾 70 每段首次舰体伤害 −1(减至 0 则无伤播报)

经济核算:S 局功勋 14-15 / B 局 7-8 / 失败局 3-4 → 早期改装 2-3 局一件、全套 18-25 局(dungeon 遗产 2-5 局一件同量级)。

8.4 剧本 A「教科书巡逻」逐事件验算(评级账目直证)

首局,全稳妥线,危机序 求救→陨石→海盗→辐射;开局 hull 6 / RP 0 / 忠诚 0/0/0:

# 阶段/事件 抉择与系统态 结算 账目(hull/RP/大副/工程师/医师)
1 S1 巡航 90s 采集 +2 res_pick 6 / 2 / 0 / 0 / 0
2 S1 求救(左舷,无陷阱) 驰援(扫描 ok,D2 教学) res_reward +2;loy_aid 6 / 4 / 1 / 0 / 1(RP 2→4 跨档播 st_rp_2 ✓)
3 DOCK1 全好 dock_empty+dock_go 6 / 4 / 1 / 0 / 1
4 S2 巡航 100s 采集 +2;磨损:扫描受损 alm+sys_scan_dmg+eng_wear 6 / 6 / 1 / 0 / 1
5 S2 陨石群(舰尾) 迎战轰开(武器 ok) res_mine +1;大副+1 6 / 7 / 2 / 0 / 1(RP 6→7 跨档播 st_rp_3 ✓;大副跨档→下次巡检 st_xo_3 信赖)
6 DOCK2 修扫描 −2 rep_ok(RP 7→5 跨档回 st_rp_2 ✓) 6 / 5 / 2 / 0 / 1
7 S3 巡航 110s 采集 +2;磨损:引擎受损 alm+sys_engine_dmg 6 / 7 / 2 / 0 / 1
8 S3 海盗(右舷) 迎战(武器 ok;大副 band 2 → sup_xo:战果升一级 hull−1→0) res_plunder +2;sup_xo;loy_fight_win 6 / 9 / 3 / 0 / 1(RP 7→9 跨档 st_rp_3 ✓)
9 DOCK3 修引擎 −2 rep_ok 6 / 7 / 3 / 0 / 1
10 S4 巡航 120s 采集 +2;磨损:护盾受损 alm+sys_shield_dmg 6 / 9 / 3 / 0 / 1
11 S4 辐射云(舰首) 规避(引擎 ok,已修) eva_ok+res_clean 6 / 9 / 3 / 0 / 1
12 REPORT score=4×2+6+1×2+1×2+1=19 → S;功勋=4+8+floor(9/3)=15 rate_s+merit_3 全档位句=ledger ✓

验算结论:每个跨档播报点的实值都在区间内;三次忠诚变动全落 loy 句;支援触发(大副)与 band 一致;S 级在含两次磨损的现实局内可达。

8.5 剧本 B「挂机超时」验算(受创路径+缺席差分)

全超时、全稳妥线:S1 求救超时(cr_timeout+loy_ignore,医师−1)RP 2 → S2 陨石超时≡硬闯(护盾 ok→护盾受损+工程师−1)→ DOCK2 修扫描 −2(护盾修不起,rep_poor 可达)→ S3 海盗超时 hull−2+医师−1(→−2 离心)→ DOCK3 修引擎? (S3 磨损=引擎受损)−2 → S4 辐射超时 hull−1+受殃系统受损(扫描再次)。 REPORT:hull 3、驰援 0、击退 0、无离线 +1 → score=8+3+0+0+1=12 → B;功勋=4+3+floor(4/3)=8。医师 band −2=离心(st_doc_1 真话;段末 hull 净减但 sup 缺席——与剧本 A 的支援在场形成差分断言对)。

8.6 失败路径(注入验算)

注入 hull=3、sys.weapon=off,S3 海盗选迎战 → sys_weapon_off→hull−3→0 → 死亡链:die_intro→die_pirate(最后伤害源=海盗炮火)→die_adv_sys(本局存在因离线失败的抉择)→rep_open→rate_d→merit_1→settle_hook;功勋=3 段+0+floor(RP/3)。die_cause 按 lastHit 真实来源、die_adv 按行为记录(超时≥2→die_adv_to;存在离线失败→die_adv_sys;否则 die_adv_to 泛化建议句)——三问归因真话律锁定。

9. 音频三层

9.1 BGM(3 首,Mureka instrumental,-20 LUFS,ogg+m4a,无缝循环)

id 状态映射 Mureka prompt(英文)
bgm/menu TITLE / MENU / DOCK / PORT / REPORT(结算 volume 0.5) "Quiet spaceport ambient, warm slow synth pads, soft beacon pings, dignified and calm, no drums, no vocals, seamless loop"
bgm/cruise DRILL / CRUISE(含 ROUTE) "Space patrol cruise theme, steady pulsing synth bass at 80 bpm, sparse bell melody, wide starfield ambience, watchful and hopeful, no vocals, seamless loop"
bgm/crisis CRISIS(检测链起,交叉淡入) "Tense starship bridge cue, pulsing low ostinato at 100 bpm, sparse alarm-like stabs, rising dread but restrained mix, no vocals, seamless loop"

切换全走引擎 crossfade;voice duck 20% 引擎自动。crisis 曲特意 restrained——给签名音/告警/语音让频带(§3.4 声流预算)。danger 不换曲(guide danger earcon+st_hull_3 承担)。预算:3 曲 ×2 候选=6 任务 $0.18(上限内)。

9.2 SFX(30 个基 id;SA3=Stable Audio 3,SYN=程序合成;双格式、真峰值 ≤-3dBFS)

类别 id 方式 说明
系统状态音 sys_engine_ok/dmg sys_shield_ok/dmg sys_scan_ok/dmg sys_weapon_ok/dmg SYN §3.2 规格(2.0s/间隔 0.4s/频带/节奏全部写死——playtest 逐毫秒断言)
离线签名 sys_offline SYN 180Hz×3 慢平音,全系统共用(死寂=统一语言)
告警脉冲 alm_engine alm_shield alm_scan alm_weapon SYN 0.4-0.5s 受损签名压缩单响,周期 8/6/10/12s(互质)
方位尾音 dir_bow dir_stern SYN 上行/下行双音 0.3s
危机签名 sig_meteor sig_pirate sig_distress sig_radiation(center)+ ffmpeg pan 派生 _l/_r ×4 SA3×4 "dense meteor swarm passing close, multiple rock whooshes and rubble impacts, dry, tight" / "hostile spacecraft engine roar with weapon charging whine, menacing" / "repeating three-short radio distress beeps through static, deep space" / "geiger counter clicking rapidly intensifying, eerie space ambience";派生工艺同 dungeon mob_step(stereotools sbal ±0.8)
下令/演出 pa_chime SYN 全舰广播双音 0.5s(下令前缀仪式)
eva_ok wpn_fire shield_bear warp SYN 侧推掠风/炮击低频+高吱尾/承击闷鸣/驰援跃迁滑音(各 0.7-1.2s)
hit_hull SYN 船体受创闷击 0.5s(120Hz+金属残响)
res_pick SYN 资源入账清脆双击 0.3s
wrench SYN 扳手两响 0.5s(修理)
seg_warp SYN 段间跃迁上行滑音 1.2s
计时/看门狗 tick_fast SYN 决策窗尾段 tick(1kHz,0.1s/0.5s 拍)
turn_tick SYN 880Hz 木鱼族(无进展轨 L1,dungeon 配方自存)
巡航问询 cruise_ping SYN 柔和 ping 0.4s(CRUISE 空闲单击无近期告警时)

SA3 任务 4 个(全部签名);其余 SYN 兜底——状态音必须 SYN(节奏可断言是硬要求,§3.2)。

9.3 voice(154 句:旁白 142 ×2 性别 + NPC 平铺 12)

  • 旁白=舰载系统音(系统/教学/状态/账目/结算宣读):female=Serena「清晰沉稳的女声,舰载系统音,冷静克制,句读干净」/ male=Uncle_Fu「低沉沉稳的男声,舰载系统音,冷静克制」——两常量全表统一,禁句级变体、禁语速词。数字全分档整句(hull 3 档/段 4 档/rp 3 档/忠诚 9 句/功勋 3 档),句内量词写死(「两资源」「资源加一」)。
  • 船员 NPC 平铺单音色(≤3,落 voice/ 根目录,引擎平铺回退命中;不做双性别):
角色 speaker instruct 常量 区分度风险
大副(XO 34) Dylan 干脆利落的年轻男声,星舰大副,令出必行,敬重舰长 低:与两侧旁白均不同 speaker
工程师(ENG 52) Eric 沙哑厚重的中年男声,轮机工程师,惜船如命,慢条斯理 低:同上
医师(DOC 38) Vivian 温和坚定的女声,舰载医师,轻声但不容置疑 低:同上(female 旁白=Serena,不重叠)
  • 本作 NPC 与旁白零 speaker 重叠(detective/teahouse 各有 2 处「中」风险,本作 0)——仍保留 loy_/sup_ 句前 NPC 语境锚点(第一人称船员 vs 系统音第三人称)。情绪写在句内文本(省略号引导),instruct 恒定。
  • 全表、触发、键盘变体、多音字自查见 22-bridge-voice-ids.md。

10. 向导层接入(engine/guide.js,不新增 earcon 词表)

10.1 状态签名(进入状态时播)

状态 guide.state() 时点
TITLE / MENU / REPORT menu 进标题、开菜单、进结算
DRILL / CRUISE explore 进教学、每段巡航
CRISIS battle 检测链起(检测+决策整段)
ROUTE / DOCK / PORT choice 进选择列表
danger danger 舰体跌至「危急」档当刻(每段 1 次)

10.2 turn cue 与看门狗(双轨——批次 1 教训固化)

等待点 机制 at say(full 档;第 2 级一律纯 nudge)
ROUTE/DOCK/PORT 入口、CRISIS 决策窗开 guide.turn — turn earcon + confirm 震
CRUISE 无操作 无操作轨 [10s, 25s] gd_cruise / null
ROUTE 无操作 无操作轨 [12s, 30s] gd_decide / null(45s 自动稳妥线兜底)
CRISIS 决策窗 无操作轨 [min(窗长×0.5,12s)] 单级 gd_decide(窗 <10s 不挂——tick 自承时机)
DOCK 无操作 无操作轨 [15s, 35s] gd_dock / null
DOCK 无进展 无进展轨 [45/90/150s] earcon→gd_dock→hint_dock3+自动预览启航项(不替玩家花资源)
DRILL 每步 无进展轨 [30/60/90s] earcon→短句→自动演示通过(§7)
  • CRUISE/ROUTE/CRISIS 均有硬计时兜底(段计时/45s 自动线/超时默认结局)——结构上不存在无限静默;无进展轨仅 DOCK/DRILL 需要(结构性密度,dungeon D0-3 教训的前置化)。
  • 纠错/提示 idle-only、过期丢弃;向导语音 queue:true 绝不顶句(引擎已实现)。

11. 存档设计(跨局舰船成长)

{
  "schema": 1, "game": "bridge", "updatedAt": 0,
  "summary": "第2巡航段 · 舰体带伤 · 引擎受损 · 资源5",
  "meta": { "drillDone": true, "merit": 26, "unlocks": ["spare", "harvest"],
            "patrols": 3, "bestRate": "A", "aids": 2, "kills": 1 },
  "run": {
    "seed": 42, "seg": 2, "plan": { "types": ["distress","meteor","pirate","radiation"],
      "dirs": ["port","stern","star","bow"], "trap": false, "wears": ["scan","engine","shield"],
      "echo": false },
    "hull": 4, "rp": 5,
    "sys": { "engine": "dmg", "shield": "ok", "scan": "ok", "weapon": "ok" },
    "crew": { "xo": 2, "eng": 0, "doc": 1 },
    "aidOk": 1, "kills": 1, "offlineEver": false,
    "hullLostSeg": 1, "timeouts": 0, "offlineFails": 0, "firstRun": false
  }
}
  • summary 规则:第{seg}巡航段 · {hull 档名} · {最紧要异常系统名|无异常} · 资源{rp};巡逻终局 run=null → 功勋{merit} · 最佳{bestRate} · 改装{n}/6。
  • 保存时机:危机结算后 / DOCK 项执行后 / 段末 / 菜单「保存并回大厅」/ REPORT 入 meta。localStorage + PUT 服务器。
  • 读取:有 run → TITLE 播 sys_continue_ask,单击继续 → 恢复到当前段 ROUTE(该段危机未结算则整段重走——存档粒度=危机结算点/段边界,登记)→ 中断复述链(§3.3:舰体档→最紧要异常→巡航段→recap_go,≤8s 回到可操作)。右滑=星港(meta 消费)。
  • 归因真话依据:timeouts/offlineFails/lastHit 持久化,死亡链选句从同源读取。

12. playtest 断言清单(登记 13 号文档新增 §bridge;mock 对齐 web/rpg/test/playtest.mjs;一律 guide:'off')

关键路径(seed=42 首局,≤200 手势):

  1. 启动→TITLE(无档)→单击→DRILL:D0..D4 逐步 voice 序与 drillStep 递进;D0 巡检全链+tut_all_ok;D2 求救驰援成功链(pa_chime→warp→res_reward→loy_aid→doc_aid);首局 S1 超时路径零损失(学期零惩罚);下滑跳过+meta.drillDone 二周目不再进。
  2. seed 复现:seed=42 两次构造 → run.plan 深相等(类型序/方位/陷阱/磨损/余波);首局约束(固定序/无陷阱/无余波/S1 无磨损);非首局 S1≠辐射。
  3. 巡检链节奏断言(SYN 硬要求):全链 4 音按 引擎→护盾→扫描→武器 顺序播出、每音时长 2.0s±50ms、间隔 0.4s±50ms;scan 音资产左声道能量占比>90%(pan 断言);全 ok → tut_all_ok、无异常语音;每系统 dmg/off 各注入 → 对应 sys_* 句恰在对应 tone 后播出。
  4. 危机全类型路径:四类型各自完整走 检测链(签名 pan/尾音与方位一致:左舷=左声道、舰首=dir_bow)→类型句→方位句→决策窗→逐选项×逐系统态(ok/dmg/off 矩阵 §4.2 全组合注入)→结果句+账目差分(hull/RP/忠诚);超时=默认结局真话(陨石超时含工程师−1)。
  5. 仲裁规则断言(R1-R8 + §3.5 七场景逐一注入):双受损 3:1 轮转时序;同 id 600ms 去重;voice 播出期间告警零调度、结束后 +0.5s 恢复;决策窗内无关告警挂起;双危机:B 检测落在 A 窗内 → A 结算句+2s 前零 B 声、B 窗从 B 检测链起算;REPORT 进入告警清空;菜单冻结期零调度零倒计时。红线:任意时刻系统告警 ≤1 条(tick 除外)、两套签名零重叠。
  6. 忠诚账本:§5.1 表逐行注入 → crew 差分断言;clamp −3..+3;band 句=ledger(9 句全覆盖含边界 −2/+2);支援触发三成员(大副=海盗下令瞬间 band 判定、工程师/医师=段末条件)与缺席 sup_none 每局一次;大副离心战果降级。
  7. 评级验算:§8.4 剧本 A 逐事件注入 → score=19→rate_s、功勋 15、每个跨档播报点实值在区间(含 RP 回落双向);§8.5 剧本 B → score=12→B、医师离心档+支援缺席;§8.6 失败注入 → 死亡链序+die_cause=lastHit+die_adv 选择与 timeouts/offlineFails 一致+功勋折算。
  8. 经济:采集(稳妥/矿富×2/采集协议改装)、修理两级(离线→受损→ok 两笔 2 资源)、rep_poor、REPORT 折算 floor(RP/3);upg 六项价格/条件(armor2 依赖、port_poor、upg_done 不重复购买)与效果(armor 上限→st_hull 档按新比例、vet 开局+1、aegis 首伤−1 减至 0 无伤播报)。
  9. 看门狗:CRUISE 10s/25s、ROUTE 12s/30s+45s 自动稳妥、DOCK 15s/35s、第 2 级纯 nudge;DOCK 无进展 45/90/150 三级(L3 不替玩家花资源);DRILL 30/60/90 自动演示。
  10. 中断复述:存档重进 → sys_continue_ask→单击→落在当前段 ROUTE→复述链序(st_hull→最紧要异常→st_seg→recap_go);无异常时跳过异常句;上滑全链可重放。
  11. REPORT 死窗+链锁:进 REPORT 同拍与 +300ms 各补一记在途 tap → 均被吞;结算链完整有序(rep_open→rate_X→merit→settle_hook);链完单击=返航 TITLE;死亡链同款。
  12. 菜单:模态循环-确认-关闭;危机中开菜单 → 倒计时冻结(快进虚拟时钟断言零超时触发)→ 关闭重播当前选项句续走;「保存并回大厅」PUT data.summary 命中生成规则;「放弃本次巡逻」run 清空 meta 保留。
  13. 键盘变体:settings.input='key' 后播 sys_help_k/tut_d0_k/cr_decide_k/dock_open_k 等 V 组(inputMode 联动);'touch' 回基础句。
  14. E1/E2 断言:CRUISE 空闲单击=重播最近告警(60s 窗)、无近期→cruise_ping;巡检链播中单击=跳段;CRISIS 决策窗长按=error;无 E3(全状态快进可用,rateLog 无豁免记录)。

边界断言:

  • 首局 FTUE:首输入 <60s(D0 ≈t+25s);首正反馈 ≤3min(D2 驰援 ≈t+2.5min)。
  • 学期零惩罚:DRILL+S1 乱按 → hull/RP/忠诚零变化(求救超时除外——其本身零损失)。
  • 求救陷阱公平性:陷阱局检测链必播 trap_hint(先线索后抉择);非陷阱局零 trap_hint。
  • 方位机制:辐射/余波受殃系统=方位系统(含已离线顺时针转移);陨石硬闯损护盾自身。
  • 上滑巡检随时可用(决策窗=简链);双击重听在声明处全状态生效。
  • 屏蔽任意 voice 资产:链 8s 兜底推进;危机超时默认结局自动落(永不卡死)。
  • guide=off:全静、零定时器(游戏层计时器:段计时/倒计时属内容层照走)。
  • 资产齐套:voice 双性别 142 id 集合一致+NPC 平铺 12+sfx/bgm 双格式(assetExists 口径)。

失败即不通过:归因假话(评级句/忠诚档句/超时句/死因句/支援句与 ledger 不符);同 seed 两次构造不一致;巡检链节奏断言失败;双危机并发出现两套签名重叠或双告警齐鸣;危机签名 pan/尾音与方位句矛盾;教学期产生任何损失;受殃系统与方位规则不符。

13. 节奏曲线

单局(一次巡逻 15-22 分钟;首局 17-22)

阶段 时长 内容 奖励点(≤60s 一个)
开场+教学 0:00-3:00 intro 五句+D0..D4(S1 求救=教学危机) D2 驰援成功(t+2.5min)
S1 收尾+DOCK1 3:00-4:30 巡航余段+整备 段结算/采集入账
S2 4:30-7:30 航线选择+磨损告警+陨石(12s 窗) res_mine 采矿/大副跨档
S3 7:30-10:30 巡航+海盗(15s 窗,支援演出高潮) sup_xo/res_plunder
S4 10:30-13:30 巡航+辐射(10s 窗,最紧)+(40% 余波双危机) 干净规避/余波胜
REPORT 13:30-15:00 评级链+功勋+星港钩子 rate_s+改装
  • 紧张度曲线:求救(20s 窗,教学温)→陨石(12s)→海盗(15s 但有战斗演出)→辐射(10s,最紧)+余波——窗长递减、S4 双危机为峰;DOCK 是每 3 分钟一个的「呼吸谷」(修理+听船员)。
  • 峰谷结构:巡航(低唤起·听+管理)⇄ 危机(高唤起·决策窗)⇄ 靠港(低唤起·养成)——P4 不疲劳;P2 追求 S 评级与矿富线风险决策。
  • 开环钩子:settle_hook「星港期待你的下一次巡逻」+功勋差一点够下一件改装(经济曲线设计使然);死亡局功勋照入(下一局更强的 dungeon 式拉重开)。

跨局(元进度)

首局教学→3-5 局解锁备用零件/采集协议→中期装甲/老兵船组改变 build(vet 开局信赖=支援更早到位)→重型装甲+应急护盾支撑 S 评级冲分;bestRate 与 patrols 记录长期目标。

14. 自检清单

# 硬约束/教训 自检
1 FTUE 首输入 <60s D0 巡检 ≈t+25s ✓(§7)
2 首正反馈 ≤3min D2 驰援成功 ≈t+2.5min ✓
3 学习期零惩罚 S1 无磨损、求救超时零损失、DRILL 乱按零账 ✓
4 失败三问归因+真话律 die_cause=lastHit、die_adv 按 timeouts/offlineFails、超时=真话默认结局、系统不满足先播 sys_*_off——§12 失败项锁定 ✓
5 手势宪法三件套不豁免 上滑巡检/下滑菜单/双击重听全状态保留;仅 E1/E2 登记且教学讲清;无 E3(登记)✓
6 教学承诺兑现 tut_aid「扫描稳得很」(S1 无磨损保证);intro_5「哪边先遭殃」(受殃规则锁定);settle_hook「单击返航」死窗+链锁后言行一致 ✓
7 结算链完整 REPORT 800ms 死窗+链锁(dungeon H1 内化)✓(§6.4)
8 档位措辞真实 hull/rp/忠诚/功勋/评级五本账播报值=运行值、跨档双向播;§8.4-8.6 剧本逐事件验算 ✓
9 告警仲裁表完备性 R1-R8 显式规则表+§3.5 双危机并发 7 场景穷举(检测排队/结算链撞车/菜单冻结/轮转抢占/语音让路/tick 优先/结算清场),每场景确定性行为+断言;红线三条(签名重叠/双告警齐鸣/B 计时偷跑)入失败项 ✓
10 状态音认知负荷(本作特有风险) 常态静默+异常才响(rpg 降档才播裁定系统版)+上滑巡检按需全查+四告警周期互质+R1 串行——常态并发声流 ≤2 恒成立;SYN 节奏逐毫秒断言 ✓(§3.2-3.4)
11 方位降维 ≤4 左舷/右舷/舰首/舰尾四象限(系统+危机统一语言);方位句固定模板 4 句;无连续角度 ✓(§3.1)
12 信息密度 选项逐项预览(≤3 选项/次);巡检简链 ≤10s(决策窗);检测链 ~8s 短窗;单次播报 ≤3 选项 ✓
13 向导层 签名 5 态(choice 用于三列表态);双轨看门狗+结构性硬计时兜底;纠错 idle-only/queue/onceKey ✓(§10)
14 seed 可复现 mulberry32+opts.seed+plan 生成期一次性+深相等断言;首局约束集 ✓(§4.3)
15 P1 视障 巡检链=status key 全状态可用(决策窗简链);双击重听/回车即时键;账目真实;NPC 零 speaker 重叠;2.2× 语速引擎既有 ✓
16 P3 通勤 中断复述(舰体/最紧要异常/巡航段 ≤8s);菜单冻结随时退出存档;段=3 分钟颗粒 ✓
17 P4 工人 零新手势;超时有保底默认结局(不卡死不挨骂);DOCK 不替花资源;命令式短句 ✓
18 P2 大学生 S 评级追求+矿富线风险决策+支援演出+星港 build;死亡局功勋照入拉重开 ✓
19 台词规范 154 句 ≤160;全句 ≤40 字(实测 ≤35);数字全分档/句内写死;「重新听」写法;同角色 speaker+instruct 恒定 ✓(台词表)
20 键盘通道 V 组 10 变体集中登记,inputMode() 选播;方向键/空格/回车全手势可达(00 §5.5 平行通道,游戏层零改动)✓
21 引擎能力边界 无实时节点(告警/倒计时=SYN one-shot+setTimeout 调度);sfx 无 loop 需求;预 pan=派生资产;tap 只用于非即时下令;资产缺失 8s 兜底;30MB 预算内 ✓
22 密度下限(dungeon D0-3 教训) 段计时/45s 自动线/超时默认结局三层硬推进——结构性无真空;每段 ≥1 危机+1 采集+(1-2)磨损事件 ✓
23 评级账目验算 §8.4 剧本 A 十二行逐事件(score 19→S、功勋 15、三次跨档播报点实值核对)+§8.5 B 档+§8.6 失败路径——一条完整巡逻剧本验算入文档 ✓
24 台词 ≤40 字 台词表逐句实测 ≤38 字(最长 sys_help / sys_help_k 各 38)✓

15. 修订记录(制作人自查裁定,2026-09-14)

按 hunt 先例:自查发现矛盾不改旧文,在此追加裁定。

# 事项 裁定
R1 §9.2 头注「sfx 30 个基 id」与实表不符 实表逐行计数 = 31 基 id(8 状态 + 1 离线签名 + 4 告警 + 2 方位尾音 + 4 危机签名 + 9 下令/演出/入账 + 3 计时/问询),头注 30 为漏计笔误;资产按 31 基 id + 8 pan 派生 = 39 文件执行
R2 §2.1 TITLE 双击「重听 continue_ask」在无档时无句可播 裁定为:有档 → 按表播 sys_continue_ask;无档 → 双击重听 intro_1..5 开场链(宪法双击重听语义,空态不静默)
R3 §9.1 BGM「3 曲 ×2 候选 = 6 任务 $0.18」超制作人 Mureka 份额(≤$0.15) 裁定为 3 任务 ×1 候选 = $0.09;候选取舍「拿不准原则」照常(单候选即选),台账照记
R4 台词表头注自查「全表无『处』」与 loy_rad「医师在处理伤员」矛盾 「处理」读 chǔ,发音安全,系自查表漏标,不改句;同理 res_bad「损失惨重」重=zhòng,安全
R5 §12 #13 键盘变体断言口径 游戏层恒播 base id(voice/sys_help 等 10 句),_k 资产由引擎 inputMode 候选链自动路由(voice//key/,hunt/detective 先例);playtest 断言游戏层选句路径 + check_all_assets 锁定 key 目录两性别一致且 ⊆ 主集
R6 多音字复查补充 「处置」无;全表另核「重(zhòng,惨重/敬重)」「处(chǔ,处理)」读音安全,与 R4 一并备案
R7 §4.2 求救陷阱矩阵「忽略/超时=明智避开,零损益」与 §5.1「求救·忽略/超时 医师−1」表面冲突 裁定为分 variant:非陷阱忽略/超时 → 医师−1(loy_ignore+doc_ignore NPC);陷阱变体忽略/超时 → 零损益(播 res_clean)——§4.2 矩阵为选项-结果权威源,§5.1 行按非陷阱语境理解
R8 §8.6「功勋=3 段」与「完成段数」口径 裁定为:功勋/评级段数口径 = run.seg(死亡局=死时所在段,如 S3 死=3;完成巡逻=4);score 的「完成段数×2」在非死亡局恒=8,死亡局评级恒 D、score 不入句——两口径不矛盾
R9 §11「PORT 列表=未购改装项」与 §12 #8「upg_done 不重复购买」可达性冲突 裁定为 PORT 列表=全部 6 项(armor2 依赖 armor1 已购才出现):未购→预览价格句,已购→预览 upg_done,已购项单击=error 震不重复扣费——upg_done 恒可达且账目不失真
R10 非陷阱驰援且扫描受损的「残骸刮蹭 hull−1」致死时死因句无对应 id(台词表无 die_distress) 裁定为归因族归并:刮蹭伤害物理同源于碎石/残骸撞击,lastHit 记 'meteor'(die_meteor「陨石撕开了船身」为最接近真话句);陷阱受伏记 'pirate'(§8.6「伏击者即海盗」已覆盖)
R11 §7 教学编排与「求救超时=信号消失(零损失)」路径的交互未定义:教学危机在 D2 前被超时/忽略结算时 DRILL 挂在 step1/2——drillDone 永不持久化(次局重进教学)、残留看门狗定时器在后段空响;且 D2 的 90s 自动演示不可达(决策窗 20s≪90s) 裁定为收束规则:教学危机结算时 step≥2 → 走 D3(tut_after/tut_loyal→上滑→tut_done→段末);step≤1 → 直接 tut_done 收束→段末(drillDone 照常持久化);收束期下滑跳过 → tut_skip 后补段末(段计时已停,不补会卡死)。D2 的 90s 自动演示登记为不可达条款(自动演示仅对 D0/D3 有效)。live R1 局 A 实测坐实原缺陷