Files
SoundGame/web/space
xsl ee5d4d2544 feat(playbook): 26 号交互手册全量落地——剩余 12 款深度重构 + 语音全量重制
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 置完成。
2026-10-02 12:33:20 +08:00
..

盲航(SPACE)

太空盲飞躲避,纯音频游戏。飞船自动前进,你只有一双耳朵。

玩法

  • 陨石从四个方位逼近,听声辨位:
    • 左 / 右声道 的呼啸 = 左 / 右侧来袭
    • 上方高频呼啸 = 上方来袭,下方低频轰隆 = 下方来袭
    • 呼啸响起的同一瞬间有超短方向呼喊("左!""右!"……),听到就能滑
  • 警报声越响越急,陨石越近。朝来袭方向的同向滑动把陨石拨开 (左来左滑、右来右滑、上来上滑、下来下滑)——零推理,反射直达。 从呼啸响起到撞击点之间滑都有效(早滑不会被吞)。
  • 被撞击 3 次坠毁(前 60 秒保护期内撞击不掉血,训练护盾吸收并语音讲解方位); 结算播报存活时间与躲避数分档整句;保护期结束后前 3 颗陨石保持保护期的慢节奏 作过渡,之后陨石越快越密(120 秒爬满)。
  • 躲过 10 / 25 / 50 / 100 颗有里程碑播报;破纪录有"新纪录!"播报。
  • 旁白播放中单击 = 跳过本句(语音链跳下一句);按住不放 = 旁白加速播放 (引擎内置,不变调)。首局演练开场会提示一次。
  • 状态音乐:对局 = 引擎轰鸣 BGM;菜单/坠毁结算 = 轻 pad(bgm/menu),状态切换即换曲。

教学流程(首次进入)

交互式演练 D0-D5:一句一练——旁白先说完,再来一颗 4.5 秒慢速演练陨石 (撞了不掉血),四个方向各练一次。做错不惩罚,当场重教;同一步失败 2 次 自动带过。旁白播放中下滑 = 跳过演练;第二次进游戏会询问"上滑重听演练, 单击直接出发"。

开局后第 20 秒引入单击加速、第 45 秒引入双击护盾(暂停刷怪各教一次, 8 秒没操作自动继续,机制之后照常生效;教学仅首局出现,第 2 局起机制开局即用、 不再重播)。第 60 秒保护期结束,难度开始爬坡。

手势

手势 作用
上 / 下 / 左 / 右滑 同向闪避:把对应方位来的陨石拨开(呼啸响起到撞击点之间滑都有效)
单击 旁白在播 = 跳过本句;否则 = 引擎短促加速 ~1.8s,增益期间冲过空隙(规避单击 300ms 判定延迟,持续增益非即时判定);第 20s 解锁(仅首局教学)
双击 展开护盾 6s,挡下一次撞击;之后 15s 充能冷却,充能完毕有语音提示;未解锁/充能中双击会有即时语音应答("会自动充能,好了我会告诉你")+ 心跳震动;第 45s 解锁(仅首局教学)
下滑 无下方陨石悬置时呼出菜单(有下方陨石时下滑永远是闪避);最近一次撞/躲判定后 0.8s 冷静期内的下滑一律按躲避意图处理,绝不开菜单——高速段撞击瞬间的躲避不会误暂停
单击(结算后) 跳过结算播报;播报结束后 = 再飞一次
下滑(结算后) 回大厅

菜单

下滑呼出(模态,暂停刷怪)→ 单击循环切换选项(播选项名)→ 双击确认 → 上滑 = 帮助(操作要点 + 设置引导),下滑或"继续飞行"关闭菜单。 选项:继续飞行 / 回大厅 / 重新听教学要点。

  • 恢复缓冲:「继续飞行」后前 3 颗陨石回到 4 秒慢节奏(与保护期结束后的 过渡同款机制),不再恢复即全速弹幕。
  • 回大厅:确认后先播"回大厅"确认句、停刷怪与 BGM,播完再跳转 (跳转期间单击可跳过确认句立即走)——不会落进无声死界面。
  • 最后一命警告:第 2 次撞击后"船体只剩最后一次"经呼喊接力紧随归因播出; 警告在播期间方向呼喊暂时让路(不被顶断);坠毁瞬间警告即刻静音,结算播报不叠播。

运行

python3 -m http.server 8106 --directory /home/ubuntu/SoundGame/web
# 浏览器打开 http://localhost:8106/space/ ,建议戴耳机

测试

/home/ubuntu/SoundGame/tools/node/bin/node test/playtest.mjs
# 无头试玩:虚拟时钟 + mock 浏览器环境,跑 13 号文档 §5/§7 全部关键路径与边界断言