Files
SoundGame/docs/design/18-detective.md
T
2026-10-01 23:26:47 +08:00

170 lines
8.5 KiB
Markdown
Raw 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.
# 18 · 《雨夜专案》(detective / Rainy Night Case)
> **给开发者的实现要点摘要**
> 1. 交互权威:26 号手册。听证词找矛盾,**不是**四向空间玩法:帮助=上滑。废除长按=指证、双击=重听当前句。
> 2. 核心:案卷条目左右滑切换,单击听取/停止。指证改为案卷上的一项,滑到「指证」再单击进入。结案陈词仍有确认闸。
> 3. 判定=两句同轴异值,与矛盾表单源。无惩罚性失败,案子保底必结。
> 4. 台词 [18-detective-voice-ids.md](18-detective-voice-ids.md):旁白 104×2 + 键盘变体 14×2 + NPC 53 = **171 句**(上限 176)。
> 5. 单局 15–25 分钟;seed/pack 可注入;VERDICT 800ms 死窗。
---
## 附录 C · 设计单
### 1. 一句话核心动作
**左右滑换卷宗,单击听取;滑到「指证」点一下,对比两句矛盾。**
### 2. 玩家能感知的状态(3 个)
| 状态 | 听感 | Floor |
|---|---|---|
| 听讲 | 证词/旁白,BGM 整链压低 | SPEAKING |
| 翻卷宗 | 条目签名 earcon + 等待声(空闲 BOARD) | YOUR_TURN |
| 指证/结案 | choice 签名 + 选项句 | YOUR_TURN |
雨声烤进 BGM,不单开第四态。
### 3. 新手手势与解锁
| 手势 | 含义 | 解锁 |
|---|---|---|
| 单击 | 播放/停止当前条目;列表里确认;指证两段确认 | 阶段 0 |
| 左/右滑 | 换条目 / 换句 / 换结案选项 | 阶段 0 |
| 上滑 | 我在哪(已问几份。疑点几处。滑到指证或再听。) | 阶段 1(听完第一份证词后) |
| 下滑 | 菜单 | 阶段 2(结案后) |
| 双击 | 按单击(停止或再播)。阶段 3=重听当前句 | 阶段 3 |
| 长按 | 新手 invalid。播放中以后可加速 | 不绑指证 |
BOARD 播放中左右滑:打断并切条目(滑动有明确意图),不「静默忽略」。
### 4. 状态 × 手势矩阵(新手期)
| 状态 \ 手势 | 单击 | 左/右滑 | 上滑 | 下滑(未解锁) | 双击 | 连点 |
|---|---|---|---|---|---|---|
| 证词在播 | 停止 + ok | 打断,切条目 | 打断,我在哪 | invalid | 按单击=停止 | 400ms busy |
| 板上空闲 | 播放当前项;在「指证」=进 CONFRONT;在「结案」=进确认闸 | 换条目 + 签名+报名 | 我在哪 | invalid | 按单击=再播 | busy |
| 结案闸 | 进 FINISH | 滑走撤闸 | 我在哪 | invalid | 按单击 | busy |
| 指证选条目/句 | 确认进入下一阶段 | 预览下一项/句(每条目记忆上次位置) | 「正在指证。左右滑。」 | invalid | 按单击 | 迷茫 |
| 指证确认 | 定下这句 | 取消回预览 | 简状态 | invalid | 按单击 | busy |
| 结案三问 | 确认/答题(真凶两段确认,中性「就指认这位?」) | 换选项(真凶问播纯人名) | 重听问句 | invalid | 按单击 | busy |
| 裁决链 | 吞掉(死窗+链锁) | 吞 | 吞 | 吞 | 吞 | 吞 |
| 结算 | 接新案 | invalid | 评级一句 | 菜单(阶段2) | 按单击 | 第一下 |
| 菜单 | 确认 | 左右切项 | 重听说明 | 关闭 | 按单击 | busy |
### 5. 等待点
| id | 期待 | full | short | 静默 | L2 | L3 |
|---|---|---|---|---|---|---|
| intro | tap | 「点一下屏幕。」 | 「点一下。」 | 6s/15s | tap | 替点 |
| board | tap 或 L/R | 「左右滑换卷宗。单击听取。」 | 「左右滑。」 | 18s/40s | L/R | 替滑到下一份 |
| listen | tap 停或听完 | (不催听) | 「点一下,停。」 | 播放中不静默惩罚 | — | — |
| confront_item | L/R+tap | 「左右滑,选一份证词。」 | 「左右滑。」 | 15s/30s | L/R | 演示选第一份 |
| confront_line | L/R+tap | 「单击,定下这句。」 | 「单击。」 | 15s/30s | tap | 替确认 |
| finish | L/R+tap | 当前问句 | 「左右滑,选。」 | 20s/45s | L/R | 演示正确项(保底) |
| settle | tap | 「单击,接新案。」 | 「单击。」 | 20s/45s | tap | 提示音 |
无进展:疑点 0 且 90s → L1 暗示矛盾轴 → L2 缩小到可指证条目 → L3 直接给出一对可指证句(保底必结)。
### 6. 首 3 分钟
| 时间 | 播 | 期待 | 没做 | 做错 |
|---|---|---|---|---|
| 0~3s | 雨声 →「点一下屏幕。」 | 单击 | 「点一下。」 | 滑:invalid |
| 3~8s | 极短案情一句 → 签名+「老葛的证词」→「单击,听取。」 | 单击 | 「单击。」 | |
| 8~10s | 老葛真实首句(第一次成功=听到证词) | 听 | | |
| 10~25s | 听完或点停 →「向右滑,下一份。」 | 右滑 | 「向右滑。」 | 点=再听 |
| 25~50s | 再听一份 →「想知道查到哪了,向上滑。」 | 上滑 | 「向上滑。」 | |
| 50~90s | 「滑到『指证』,点一下。」 | 滑+点 | 短句 | 练习指证不计入 miss |
| 90~180s | 自由听证;练习判定一律 tut_cf_ok | 查 | 接管 | 零惩罚 |
### 7. 失败表
| 类型 | 判定 | 归因 | 回到 | 新手期 |
|---|---|---|---|---|
| 指证同句 | a.id=b.id | cf_self | 板 | 无 |
| 不同轴 | 无共享轴 | cf_diff「说的不是一件事」 | 板 | 无 |
| 同轴同值 | | cf_same「说得一致」 | 板 | 无 |
| 指认错人 | | 该证人 alibi + fin_clear + st_wrong | 板,无限再试 | 无 |
| 凶器/动机错 | | fin_wp_wrong / fin_mv_wrong | 下一问,不重答 | 记账评级 |
| 迷茫 | | 保底提示矛盾对 | 板 | 无 |
禁止「再想想」无信息归因。
### 8. 台词类别
- `critical`:开场点一下;fin_pre 结案闸
- `content`:intro、证词 NPC、现场/法医、z_break_*、rate_*
- `hint`:tut_*(改词)、hint_c*、st_asked/st_doubt、lp 改为 up 帮助句
- `feedback`:cf_hit/miss/same/diff/self、acc_*、fin_wp_wrong
- 停用:tut_replay「双击」、tut_confront「按住屏幕指证」、tut_skip 旧词。新 tut_confront:「滑到指证,点一下。」
171 句账目不变(改词重录,尽量不增条)。
### 9. 断点复述
保存 heard/doubts/pack/seed/layout。回来 sys_continue_ask + 上滑句(已问 X。疑点 n。左右滑。)VERDICT/SETTLE 链锁至 settle_hook。
### 10. 测试记录
改:长按不进指证;双击不重听句;菜单左右+单击;3s 内点屏;10s 内听到第一句证词。矩阵不变式仍失败即不通过。
---
## 1. 概述
专案组探长,雨夜命案。翻六份卷宗加指证入口,比对证词,指出矛盾,三问结案。纯音频:证词天生是「说」的信息;证人=声音演技+签名 earcon。
## 2. 状态机
`TITLE / DRILL / BOARD / CONFRONT / FINISH / VERDICT / SETTLE` + MENU。
```
BOARD ⇄ 条目链播
│ 滑到「指证」+单击 → CONFRONT → 判定回 BOARD
│ 滑到「结案陈词」+单击 → 闸 → FINISH 三问
FINISH 错人 → alibi → BOARD;全对 → VERDICT → SETTLE
```
条目:老葛 → 小顺 → 周先生 → 温太太 → 现场 → 法医 → **指证** → 结案陈词。句间 0.8s;单句资产缺失 15s 兜底续链。
CONFRONT:选条目 → 选句(记忆上次位置)→ 确认 → 第二份同样 → judge。菜单可「返回证词板」。
## 3. 矛盾与判定
pack A《雨夜·聚宝斋》:古董商沈万川后院柴房后脑钝器。矛盾四轴 lamp / key / weapon / scale:
| # | 轴 | A | B |
|---|---|---|---|
| M1 | lamp | z_2 熄灯 | wen_2 十点二十灯亮 |
| M2 | key | z_3 贴身 | w2_3 挂铜钩 |
| M3 | weapon | z_4 松木 | fo_3 铜屑 |
| M4 | scale | z_4 秤已卖 | sc_4 秤在架上 |
judge:同句 cf_self;无共享轴 cf_diff;同轴异值且在表内 hit(反应按**轴**取句,非按次数);同轴同值 cf_same。无序。hit 后 doubts+1;4/4 播 hint_fin。
pack B 同模板,真凶小顺,fork 句替换,矩阵同构。
## 4. 结案与评级
三问:真凶(两段确认)/ 凶器 / 动机。错人无限再试。
| 档 | 条件 |
|---|---|
| S | doubts=4 ∧ 凶器动机对 ∧ wrongWho=0 ∧ cfMiss≤2 ∧ hints=0 |
| A | doubts≥3 ∧ 两问对 ∧ wrongWho≤1 ∧ hints≤1 |
| B | doubts≥2 ∧ wrongWho≤2 |
| C | 其余(必结) |
SETTLE:settle_open → rate_X → st_doubt_n → st_miss 档 → settle_hook。
VERDICT:fin_right → 雨声 swell → z_break_1..3 → gavel → SETTLE。800ms 死窗+链锁。
## 5. 音频
BGM:menu / board / verdict(雨烤进曲)。SFX:签名 earcon×证人、翻页、法槌、雨 swell 等约 12。NPC 5 speaker;周先生与男旁白同 speaker、秦法医与女旁白同 speaker——靠签名+语境,相邻句无旁白插话。
## 6. 存档与 seed
mulberry32;pack 首局 0,结案后翻转。洗牌只动 filler 与选项序。summary 含疑点/评级。矩阵不变式:同轴异值对 ≡ 矛盾表。