背景

LoopTrain 的核心体验依赖三个要素:时间压力、环境沉浸、对话互动。这三个要素中,时间压力和环境沉浸在没有声音的情况下被严重削弱。

当前版本(v0.4.3)完全没有声音。玩家在列车上听不到任何环境音,倒计时没有紧迫感,爆炸没有冲击力,循环重启也没有过渡感。这是一个必须在下一阶段解决的基础问题。

当前问题

  1. 无环境音:列车行驶的轨道声、车厢内的低噪、隧道风噪——这些是建立”深夜列车”氛围的基础。
  2. 无倒计时音效:玩家只有在 UI 上看到倒计时数字,没有听觉上的紧迫感提示。
  3. 无交互音效:按钮点击、对话发送、线索发现等操作没有任何声音反馈。
  4. 无爆炸音效:列车爆炸作为游戏的核心失败事件,应该有足够的听觉冲击。
  5. 无循环重启音效:循环机制需要一个过渡音效来表现”时间回退”的感觉。

本次调整

本次为计划阶段,暂不做代码实现。核心任务是:

  1. 梳理需要音效的交互节点和场景。
  2. 确定音效素材的来源和授权方式。
  3. 确定最小可用音效系统的范围。

音效触发点梳理(第一版)

场景触发点音效类型优先级
开场进入游戏列车启动 / 环境音切入
环境持续列车行驶低噪(循环)
UI按钮点击短促机械音
对话发送消息轻触反馈音
对话收到回复轻通知音
时间剩余 30s倒计时警告(3 声)
时间剩余 10s急促警告
事件列车爆炸爆炸 + 碎片
事件循环重启时间回退过渡音
线索发现线索提示音
线索关键发现重要提示音

设计判断

为什么不一步到位做完整配乐?

  1. 优先级问题:当前阶段的核心任务是让游戏”能用”和”能玩”,完整配乐的优先级低于音效系统和核心玩法。
  2. 素材授权复杂性:配乐涉及更复杂的版权问题。音效可以大量使用合成器和自制素材,授权问题更可控。
  3. 迭代节奏:先做最小可用音效系统,实际体验后根据反馈再决定配乐方案,避免一次性过度投入。

音效风格方向

  • 整体保持克制、冷静、工业化风格。
  • 不使用夸张的卡通音效。
  • 环境音以低频工业感为主:铁轨撞击、机械振动、空气流动。
  • 倒计时音效参考列车出发前的警示铃。
  • 爆炸音效要有厚重感但不能过度失真(LoopTrain 不是战争游戏)。

素材来源策略

  • 优先使用合成器自制素材(减少授权依赖)。
  • 必要时使用 CC0 授权音效库。
  • 所有使用的音效素材必须记录来源和授权方式(未来 /assets 页面)。

后续计划

v0.5-audio-core

第一步只做音频系统骨架,不追求素材最终质量:

  1. 新增 audio/manifest.json
  2. 新增 AudioManager
  3. 新增声音开关
  4. 用户点击「进入第七节车厢」后 unlockAudio()
  5. 支持基础 play / loop / fadeIn / fadeOut / mute

v0.5.1-audio-events

第二步把声音绑定到游戏事件:

游戏事件音频事件
点击「进入第七节车厢」rail_loop_low 淡入
进入探索carriage_roomtone 淡入
点击按钮button_tap
获得线索clue_found
小宁提到地板声音faint_ticking_loop 淡入
AP <= 3faint_ticking_loop 音量增强
失败爆炸explosion_muffled + ear_ringing
进入下一轮loop_rewind

v0.5.2-audio-polish

第三步再做体验调校:

  1. 音量平衡
  2. 手机端测试
  3. 循环无缝处理
  4. 静音状态保存
  5. 加载失败兜底

目录与 manifest 设计

由于已切换到独立运行时(SLT),音效文件放在:

looptrain/standalone/public/audio/
├── ambience/
├── sfx/
├── tension/
└── cinematic/

必要时再按环境外置。旧 ST 路径(已废弃)参考历史:

standalone/public/assets/audio/

manifest 第一版只需要描述:

{
  "version": "0.1",
  "buses": {
    "master": { "volume": 0.75 },
    "ambience": { "volume": 0.35 },
    "sfx": { "volume": 0.7 },
    "tension": { "volume": 0.25 },
    "cinematic": { "volume": 0.8 }
  },
  "tracks": {
    "rail_loop_low": {
      "file": "ambience/rail_loop_low.mp3",
      "bus": "ambience",
      "loop": true,
      "fadeInMs": 1800,
      "fadeOutMs": 1200
    },
    "clue_found": {
      "file": "sfx/clue_found.wav",
      "bus": "sfx",
      "loop": false
    }
  }
}

第一批素材策略

第一批不追求专业配乐,优先找授权清楚、可快速替换的占位素材。

建议先从两个来源挑选:

Pixabay
Mixkit

第一批最少 6 个文件:

rail_loop_low.mp3
faint_ticking_loop.mp3
button_tap.wav
clue_found.wav
explosion_muffled.wav
loop_rewind.wav

筛选标准:

  • 授权清楚,最好不要求署名
  • 音量不刺耳
  • 风格克制,不要卡通化
  • 列车环境声不要有现代广播、人声或地铁提示音
  • 能循环的素材优先

备注

  • 第一版不要自动播放声音。必须由用户点击「进入第七节车厢」后解锁音频。
  • 声音系统不是独立玩具,而是 Game Event → Audio Event
  • 音效素材授权后续需要同步到素材记录页面。
  • 不追求 AAA 级音效质量,以「可用且不干扰」为目标。
  • 所有音效必须支持音量控制和静音状态保存。