Files
blind/任务文档_v2收尾.md
T
xslandClaude Opus 4.6 d03bcb14e4 v2收尾:手势升级 + 暂停退出 + 结局语音化 + 分支补全 + 12条新音频
gestures.js: 新增长按(1s)、两指长按(暂停)、三指点击(退出),支持多指检测
engine.js: REPLY_COUNT变量、长按重播/状态广播、暂停恢复退出机制、
  选择提示音、结局台词预录音频替换TTS、内容预警+心理热线
story.js: MSG-10/11 follow-up补全down(沉默)选项
index.html: 操作指南添加长按/安全手势、内容预警文字
batch_tts_voxcpm.py: 新增12条台词(结局旁白+系统提示+分支NPC反应)
audio/mp3/tts: 12个VoxCPM2生成的林夏声线MP3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 23:22:04 +08:00

8.1 KiB
Raw Blame History

林夏 v2 收尾任务文档

一、游戏开发任务

G1: 手势系统升级 — gestures.js

现状: 仅支持 6 种手势(单击/双击/四方向滑动),无长按、无多指手势
目标: 新增长按(1s)、两指长按(暂停)、三指点击(退出)

交付物:

  • 长按检测:touchstart 后 1000ms 无移动 → emit longpress
  • 两指长按检测:两指同时触屏 1000ms → emit twofinger_longpress
  • 三指点击检测:三指同时触屏后抬起 → emit threefinger_tap
  • touchmove 监听:移动超阈值取消长按
  • 键盘映射:L=长按, P=暂停, Q=退出

测试case:

  1. 单指按住 1.5s 不动 → 触发 longpress,不触发 singletap
  2. 单指按住 0.3s 抬起 → 触发 singletap,不触发 longpress
  3. 单指按住后滑动 → 触发 swipe,不触发 longpress
  4. 双指按住 1.5s → 触发 twofinger_longpress
  5. 双指快速点击(<1s)→ 不触发任何事件(忽略)
  6. 三指同时触屏后抬起 → 触发 threefinger_tap
  7. 键盘 L/P/Q 分别触发对应事件

G2: 变量系统补全 — engine.js

现状: 使用 UNREAD 变量,缺少 REPLY_COUNT
目标: 添加 REPLY_COUNT,在玩家做出非沉默选择时递增

交付物:

  • vars 对象新增 REPLY_COUNT: 0
  • _handleChoice() 中非沉默选择时 REPLY_COUNT++
  • 结局 C 判定改用 REPLY_COUNT <= 2

测试case:

  1. 选择右滑(温暖) → REPLY_COUNT 递增 1
  2. 选择下滑(沉默, isSilence=true) → REPLY_COUNT 不变
  3. 双击跳过选择 → REPLY_COUNT 不变
  4. 全程极少回复(REPLY_COUNT<=2) + 全部已读 → 触发结局 C

G3: 长按手势处理 — engine.js

现状: 无长按处理
目标: playing/choosing 状态重播当前消息音频;其他状态广播未读数

交付物:

  • _onLongPress() 方法
  • playing/responding/reacting → 中断当前播放,重播 currentMsg.audio
  • choosing → 重播 currentMsg.audio(不退出选择状态)
  • idle/notification → TTS 播报 "当前未读 N 条消息"

测试case:

  1. playing 状态长按 → 当前语音重头播放
  2. choosing 状态长按 → 重播 NPC 问题,仍可继续选择
  3. idle 状态长按 → TTS 播报未读数
  4. ending 状态长按 → 无反应

G4: 暂停/退出机制 — engine.js

现状: 无暂停/退出功能
目标: 两指长按暂停,单击恢复,三指点击退出

交付物:

  • 新状态 paused
  • _onPause(): 保存当前状态、停止所有音频/震动、TTS 播报暂停提示
  • _onResume(): 恢复到 choosing/idle(语音无法断点续播)
  • _onExit(): 仅 paused 状态可用,TTS 播报感谢后返回开始页
  • hint 栏显示暂停状态提示

测试case:

  1. playing 状态两指长按 → 音频停止,进入 paused,TTS 播报暂停
  2. paused 状态单击 → 恢复游戏
  3. paused 状态三指点击 → 退出到开始页
  4. 非 paused 状态三指点击 → 无反应
  5. ending 状态两指长按 → 无反应(结局不可暂停)

G5: 选择状态语音提示 — engine.js

现状: 进入 choosing 仅播放 choiceReady 音效 + confirm 震动
目标: 追加 TTS 播报 "等待回复"

交付物:

  • _enterChoosing() 中 SFX_UI.choiceReady() 后追加 TTS.speak('等待回复')

测试case:

  1. 播放完 NPC 语音进入选择 → 听到 "叮" + TTS "等待回复"
  2. 快速双击跳过 → TTS 被中断,不卡住

G6: 结局语音化 — engine.js

现状: 结局使用 _showCaption(text) 显示视觉文字(与零视觉设计矛盾)
目标: 结局台词通过 TTS 朗读(后续替换为预录音频)

交付物:

  • _endingA/B/C/D/E_showCaption(text)TTS.speak(text)(保留 caption 作为补充)
  • 结局 E 周南语音播完后 TTS 说 "好"

测试case:

  1. 触发结局 A → 听到水壶声 + TTS "明天再说"
  2. 触发结局 D → 听到鸟鸣声 + TTS "早上好"
  3. 触发结局 E → 周南语音 + TTS "好"
  4. TTS 不可用时 → caption 仍然显示(降级方案)

G7: 内容安全 — engine.js + index.html

现状: 无内容预警和求助信息
目标: 游戏开始前播报内容预警,结局后显示心理支持热线

交付物:

  • start() 开头:TTS 播报 "本游戏涉及孤独、家庭关系等情感话题,请在舒适的状态下体验"
  • 结局播完后:TTS 播报 "如需倾诉,全国心理援助热线 400-161-9995"
  • index.html 开始页添加内容预警文字

测试case:

  1. 游戏启动 → 先听到内容预警,再开始环境音
  2. 任意结局完成后 → 听到热线播报
  3. 开始页可见内容预警文字

G8: 分支补全 — story.js

现状: MSG-10/11 follow-up 缺少沉默(down)选项
目标: 补全所有未闭合分支

交付物:

  • MSG-10 right follow-up: 添加 down(沉默) 选项
  • MSG-10 up follow-up: 添加 down(沉默) 选项
  • MSG-11 up follow-up: 添加 down(沉默) 选项

测试case:

  1. MSG-10 温暖回复后 → 可选右滑/上滑/下滑(沉默)
  2. MSG-10 追问后通话 → 可选右滑/上滑/下滑(沉默)
  3. MSG-11 追问后 → 可选右滑/左滑/下滑(沉默)

G9: 操作指南更新 — index.html

现状: 开始页操作说明缺少长按和安全手势
目标: 补充完整操作说明

交付物:

  • 添加 "播放中" 长按重播说明
  • 添加 "随时可用" 安全手势分组(两指长按暂停、三指点击退出)

测试case:

  1. 开始页显示完整操作说明,含长按和安全手势

二、音频制作任务(需 VoxCPM2 服务)

A1: 结局旁白音频

现状: 结局台词无预录音频,依赖 TTS
目标: 用林夏声线生成 5 条结局旁白

交付物 (5 个 MP3):

文件名 台词
v2_ending_a_linxia_wav_v1.mp3 "明天再说。"
v2_ending_b_linxia_wav_v1.mp3 "寄出去了。"
v2_ending_c_linxia_wav_v1.mp3 "今晚就这样。"
v2_ending_d_linxia_wav_v1.mp3 "早上好。"
v2_ending_e_linxia_wav_v1.mp3 "好。"

测试case:

  1. 每个文件 < 3s,采样率 24kHz+,音色一致
  2. 语气匹配情境(A 疲惫温柔、D 平静、E 轻快)

A2: 系统提示音频

现状: 无系统提示预录音频
目标: 生成游戏流程中的系统语音提示

交付物 (4 个 MP3):

文件名 台词
v2_sys_wait_reply_wav_v1.mp3 "等待回复"
v2_sys_paused_wav_v1.mp3 "游戏已暂停。单击继续,三指点击退出"
v2_sys_content_warning_wav_v1.mp3 "本游戏涉及孤独、家庭关系等情感话题,请在舒适的状态下体验"
v2_sys_hotline_wav_v1.mp3 "如需倾诉,全国心理援助热线 400-161-9995"

测试case:

  1. 音色使用林夏声线,语速适中
  2. 暂停提示 < 5s,内容预警 < 8s

A3: 新增分支台词音频

现状: MSG-10/11 补全的 down 分支缺音频
目标: 生成沉默后 NPC 反应音频

交付物 (3 个 MP3):

文件名 角色 台词
v2_msg10_rw_react_silent_wav_v1.mp3 妈妈 "那早点睡啊。"
v2_msg10_call_react_down_wav_v1.mp3 妈妈 "……没事就好。早点睡。"
v2_msg11_r3_react_silent_wav_v1.mp3 阿哲 "行吧,那我不来了。"

测试case:

  1. 音色与对应角色现有音频一致
  2. 语气自然,符合上下文

A4: MSG-16 后期处理

现状: seg5-6 是奶奶无声电话的描述段,需要电话底噪叠加
目标: 与 MSG-08 未知号码呼吸声使用匹配的底噪

交付物:

  • lv11_0200_mom_voice_01_seg5_wav_v1.mp3 叠加电话底噪
  • lv11_0200_mom_voice_01_seg6_wav_v1.mp3 叠加电话底噪

测试case:

  1. seg5-6 可听到轻微电话底噪(与 MSG-08 sfx_breathing_unknown_v1.mp3 风格匹配)
  2. 底噪不盖过妈妈说话声(底噪 -18dB 以下)

三、执行顺序

阶段一(代码 — 立即执行):
  G1 → G2 → G3/G4/G5 → G6 → G7 → G8 → G9

阶段二(音频 — 需 VoxCPM2:
  A1 → A2 → A3 → A4

阶段三(集成):
  结局音频替换 TTS → 系统提示音替换 TTS → 回归测试