背景
LoopTrain 的核心体验依赖三个要素:时间压力、环境沉浸、对话互动。这三个要素中,时间压力和环境沉浸在没有声音的情况下被严重削弱。
当前版本(v0.4.3)完全没有声音。玩家在列车上听不到任何环境音,倒计时没有紧迫感,爆炸没有冲击力,循环重启也没有过渡感。这是一个必须在下一阶段解决的基础问题。
当前问题
- 无环境音:列车行驶的轨道声、车厢内的低噪、隧道风噪——这些是建立”深夜列车”氛围的基础。
- 无倒计时音效:玩家只有在 UI 上看到倒计时数字,没有听觉上的紧迫感提示。
- 无交互音效:按钮点击、对话发送、线索发现等操作没有任何声音反馈。
- 无爆炸音效:列车爆炸作为游戏的核心失败事件,应该有足够的听觉冲击。
- 无循环重启音效:循环机制需要一个过渡音效来表现”时间回退”的感觉。
本次调整
本次为计划阶段,暂不做代码实现。核心任务是:
- 梳理需要音效的交互节点和场景。
- 确定音效素材的来源和授权方式。
- 确定最小可用音效系统的范围。
音效触发点梳理(第一版)
| 场景 | 触发点 | 音效类型 | 优先级 |
|---|---|---|---|
| 开场 | 进入游戏 | 列车启动 / 环境音切入 | 高 |
| 环境 | 持续 | 列车行驶低噪(循环) | 高 |
| UI | 按钮点击 | 短促机械音 | 高 |
| 对话 | 发送消息 | 轻触反馈音 | 中 |
| 对话 | 收到回复 | 轻通知音 | 中 |
| 时间 | 剩余 30s | 倒计时警告(3 声) | 高 |
| 时间 | 剩余 10s | 急促警告 | 高 |
| 事件 | 列车爆炸 | 爆炸 + 碎片 | 高 |
| 事件 | 循环重启 | 时间回退过渡音 | 中 |
| 线索 | 发现线索 | 提示音 | 中 |
| 线索 | 关键发现 | 重要提示音 | 低 |
设计判断
为什么不一步到位做完整配乐?
- 优先级问题:当前阶段的核心任务是让游戏”能用”和”能玩”,完整配乐的优先级低于音效系统和核心玩法。
- 素材授权复杂性:配乐涉及更复杂的版权问题。音效可以大量使用合成器和自制素材,授权问题更可控。
- 迭代节奏:先做最小可用音效系统,实际体验后根据反馈再决定配乐方案,避免一次性过度投入。
音效风格方向
- 整体保持克制、冷静、工业化风格。
- 不使用夸张的卡通音效。
- 环境音以低频工业感为主:铁轨撞击、机械振动、空气流动。
- 倒计时音效参考列车出发前的警示铃。
- 爆炸音效要有厚重感但不能过度失真(LoopTrain 不是战争游戏)。
素材来源策略
- 优先使用合成器自制素材(减少授权依赖)。
- 必要时使用 CC0 授权音效库。
- 所有使用的音效素材必须记录来源和授权方式(未来
/assets页面)。
后续计划
v0.5-audio-core
第一步只做音频系统骨架,不追求素材最终质量:
- 新增
audio/manifest.json - 新增
AudioManager - 新增声音开关
- 用户点击「进入第七节车厢」后
unlockAudio() - 支持基础
play / loop / fadeIn / fadeOut / mute
v0.5.1-audio-events
第二步把声音绑定到游戏事件:
| 游戏事件 | 音频事件 |
|---|---|
| 点击「进入第七节车厢」 | rail_loop_low 淡入 |
| 进入探索 | carriage_roomtone 淡入 |
| 点击按钮 | button_tap |
| 获得线索 | clue_found |
| 小宁提到地板声音 | faint_ticking_loop 淡入 |
| AP <= 3 | faint_ticking_loop 音量增强 |
| 失败爆炸 | explosion_muffled + ear_ringing |
| 进入下一轮 | loop_rewind |
v0.5.2-audio-polish
第三步再做体验调校:
- 音量平衡
- 手机端测试
- 循环无缝处理
- 静音状态保存
- 加载失败兜底
目录与 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 级音效质量,以「可用且不干扰」为目标。
- 所有音效必须支持音量控制和静音状态保存。