RTPC 動態控制
約 1032 字大約 3 分鐘
2025-10-03
📈 讓聲音對「數值」產生生命
當速率、血量、距離、壓力值在遊戲中持續改變時,聲音也應該流動而不是跳格。RTPC(Real-Time Parameter Control)就是把「遊戲參數」映射到「音效屬性」的橋樑。
🎯 本節你會收穫
- 🔗 理解 RTPC 本質:數值 → 音效屬性即時映射
- 🏃 速度影響腳步 Pitch / 間隔的實作思路
- ❤️ 低血量心跳壓迫感:音量 + 濾波組合曲線設計
- 🎚️ 曲線調整:節點、平滑、避免跳動策略
- ⚙️ 效能與使用節制原則(避免濫用)
- 🔁 從 Prototype 到精修的迭代流程
🧠 基本概念
RTPC = Game Parameter(遊戲側提供的連續或離散數值) → 控制 Pitch / Volume / LPF / Bus 混音 / Blend Layer 等。
常見來源:速度、血量、引擎 RPM、能量槽、距離、危險指數。
⚠️ RTPC 官方命名限制
RTPC(實時參數控制)游戲參數是受官方嚴格限制的元素:
- ✅ 只能使用:
A-Z、a-z、_、0-9(數字不開頭) - ❌ 不能使用:中文、特殊符號、空格、重音字母
- 範例:
PlayerSpeed✅、PlayerHealth✅、Player-Speed❌、玩家速度❌、3D_Distance❌ - 建議:使用 PascalCase,如
PlayerSpeed、EngineRPM、DangerLevel
🏃 速度 → 腳步 Pitch(案例)
- 選取實際播放腳步的 Sound 或最靠近的 Random Container
- Property → RTPC → 新增 Pitch → 綁定 Game Parameter:
PlayerSpeed - 設定關鍵點:
- 0 = -200 cent(慢走厚重)
- 600 = +50 cent(奔跑稍亮)
- 聽感微調:避免高端過尖,通常上限 +30~+70 cent 即足夠
進階:間隔也變化
方案比較:
| 方法 | 優點 | 風險 |
|---|---|---|
| 程式控制 Event 觸發頻率 | 精準同步動畫 | 程式需節奏邏輯 |
| Loop + RTPC 控 Playback Rate | 設計集中於音效 | 需確保變速不破壞腳步自然感 |
❤️ 血量 → 心跳緊張(組合映射)
Game Parameter:PlayerHealth(0~100) 在一個 Loop 心跳 Sound 上綁:
- Volume:100 = -40dB(幾乎聽不到)→ 30 = -10dB → 10 = 0dB(全開)
- Lowpass(Cutoff):100 = 18000Hz → 10 = 2500Hz(壓縮壓迫感)
- 可選:加上輕微 Tremolo 深度從 0% 漸增(慎用)
🎨 曲線設計建議
| 問題 | 現象 | 解法 |
|---|---|---|
| 線性過硬 | 小範圍跳動敏感 | 使用 S 曲線或分段緩和 |
| 數值抖動 | 聲音顫動 | 程式側節流 / 內插 / Clamp 微區間 |
| 節點過多 | 难維護 | 先放 2~3 關鍵點,再精修 |
| 多 RTPC 重疊 | 聲音失控 | 聚焦主體:速度 / 血量 / 核心體驗 |
⚙️ 效能注意
- 行動或低性能平台:大量同時活躍 Voice + 多條 RTPC 曲線會拉高 CPU
- 盡量把 RTPC 用在「玩家直接感受差異」的地方;裝飾性微調儘量烘焙或固定
- 不同系統共用參數(例:
DangerLevel)→ 減少冗餘 Game Parameter 數量
🔁 迭代流程(實務)
- MVP:0 / 中間 / 高三點
- 聽感標記不自然轉折
- 加節點平滑(避免鋸齒)
- 與 Switch / Random / Blend 串測(互動後是否過度複雜)
- 列出最終曲線節點(方便紀錄與回滾)
🧪 測試方法
| 測試 | 目標 |
|---|---|
| 手動拖動 Game Parameter | 聽曲線過渡是否平滑 |
| 模擬極值(0 / 最大) | 檢查音色無失真或過尖 |
| 快速跳值 | 確認無爆音 / 無突兀 Pitch 拉扯 |
| 與其他系統同播 | RTPC 疊加是否過度(音量、濾波互相抵消) |
🧯 常見錯誤排查
| 症狀 | 排查點 | 修正 |
|---|---|---|
| 無反應 | Game Parameter 未更新 | 確認程式端名稱/範圍一致 |
| 過度敏感 | 低速區曲線太陡 | 拉平前 20% 區間 |
| 聲音顫動 | 數值抖動 | 加平滑 / 取樣節流(每幀 → 每 2~3 幀) |
| 整體太尖銳 | Pitch 上限過高 | 降低最大 cent 或改素材本身 |
🚀 下節預告:Blend Container 過渡
當一個參數不只影響 Pitch / Volume,而是需要在多段實際錄製素材之間「平滑混合」(如引擎 Idle→High),就會用到 Blend Container。下一節我們會建立 1D RPM 混合並掌握交叉淡化技巧。
🎊 恭喜!你現在能讓聲音對『數值』做出智慧反應,這是邁向高動態互動音效的重要里程碑!