本頁面由英文機器翻譯而成。閱讀英文原文。

部落格

用 AI 創作遊戲音樂 — AI Game Developer 內建 SuperCollider

在 SuperCollider 中用 AI 創作遊戲音樂與音效,從選單主題曲到可循環分軌,再將 WAV 檔直接匯出到 Unity、Godot 或 Unreal。

用 AI 創作遊戲音樂 — AI Game Developer 內建 SuperCollider

音樂與音效往往是遊戲原型最後完成的部分,卻也是玩家最先注意到的東西。AI Game Developer 中的 Music 套件讓你用 AI 創作遊戲音樂:代理人會與你一起撰寫 SuperCollider 樂譜、將其渲染成 WAV、讓你在應用程式裡試聽,並把完成的音訊匯出到你的 Unity、Godot 或 Unreal 專案。

這不是黑箱式的歌曲生成器。音樂就是你能閱讀、版控與修改的程式碼,所以你可以要求「同樣的主題,慢一點,殘響少一些」,然後就得到完全那樣的結果。本文中我們用一次工作階段為示範遊戲 Skyward Keep 創作選單主題曲,接著看看可循環分軌、用你自己的取樣做出的音效,以及匯出到遊戲的流程。影片是應用程式的真實錄影:代理人的回覆是為示範預先寫好的腳本,但其中每一次工具呼叫都真實執行。本頁的影片播放時沒有聲音;主題曲本身是一段平靜的音樂盒樂曲,你可以用同樣的要求在自己的專案中渲染出來。

一次工作階段內完成創作、渲染、試聽與匯出的 24 秒選單主題曲。

為何遊戲音訊要用 SuperCollider

SuperCollider 是一個成熟的開源平台,用於聲音合成與演算法作曲。每個聲音都來自一份樂譜,也就是描述樂器與何時演奏的文字檔。這正好適合 AI 代理人:

  • 代理人撰寫與編輯文字,而樂譜正是文字。
  • 變更是精確且可重現的:速度、調性、樂器、效果與長度全都明確寫出。
  • 原始檔放在你的專案裡,可以像程式碼一樣提交到 Git,而渲染出的音訊只是可丟棄的產物。

每次渲染都會在執行前記錄其原始檔雜湊、隨機種子與設定,因此任何 WAV 都能追溯回產生它的樂譜。

步驟 1:在工作階段中開啟 Music

Music 隨應用程式以套件形式提供。它預設就會安裝,你在需要它的工作階段中,從該工作階段的 Tools 列啟用即可。當你開啟連上 Unity、Godot 或 Unreal 編輯器的工作階段時,會出現一則簡短提示,詢問是否啟用 Music,接著讓你創作一段八秒的範例主題曲,或描述你自己的想法。在你做出選擇之前,不會安裝、渲染或傳送任何東西。

第一次真正使用時,套件會設定它所需的 SuperCollider 執行環境,版本固定並經過驗證。你隨時可以輸入 /supercollider 查看狀態與簡短指南。目前此執行環境支援 Windows 與 macOS。

步驟 2:創作選單主題曲

像向作曲家簡報那樣描述音樂:情緒、長度、用途,以及它應該建立在哪些音樂素材上。示範的要求是:

「為 Skyward Keep 創作選單主題曲:平靜溫暖,約 20 秒,以我們的 keep 動機為基礎。先讓我聽聽看,然後把它加進遊戲。」

代理人會先查看知識庫中的專案音訊筆記,keep 動機就寫在那裡,然後決定採用平靜的音樂盒版本。它在遊戲資料夾中建立一個可攜式的 AudioSource 專案,接著撰寫樂譜:以音樂盒演奏 D、A、B、升 F 的四音動機,在 D、A、B 小調與 G 和弦上鋪一層柔和的襯底音,加上圓潤的低音與共用的殘響,速度 90 BPM。

代理人正在描述它為選單主題曲撰寫的 SuperCollider 樂譜
代理人在撰寫樂譜的同時說明內容

樂譜在本地渲染,代理人會開啟預覽,讓你可以直接在應用程式裡聆聽,附上波形與播放器。結果是兩個檔案:menu-theme.scd,可編輯的 SuperCollider 原始檔,會保存在版本控制中;以及 menu-theme.wav,24 秒、48 kHz 立體聲、包含殘響尾韻的渲染結果。

渲染完成的選單主題曲在應用程式的音訊預覽中播放,並顯示波形
直接在應用程式裡試聽渲染結果

渲染輸出為單聲道或立體聲 16 位元 WAV,取樣率 44.1、48 或 96 kHz,最長十分鐘。代理人也能分析渲染結果,回報長度、峰值與 RMS 音量,以及是否有削波,這在混音太小聲或太大聲時很有幫助。

像與作曲家合作那樣反覆調整

聽完之後,提出聚焦的修改要求:

  • 「把旋律降一個八度,並讓襯底音有更慢的起音。」
  • 「在後半段加入一層輕柔的打擊樂。」
  • 「縮短到 16 小節,並保留結尾。」

因為樂譜就是程式碼,每次修改都會保留樂曲其餘部分不變。如果你更喜歡先前的版本,Git 裡都留著。

步驟 3:為自適應音樂製作可循環分軌

遊戲常需要分層的音樂,能隨著戰況淡入淡出。要求長度與時間點一致的分軌:

「把關卡主題曲拆成鼓、貝斯與旋律三個分軌,長度與速度相同,讓它們能一起循環。」

這些分軌以相同的長度、取樣率與隨機種子渲染,並裁切到精確的音框數,因此能逐取樣對齊、乾淨地循環。之後在引擎裡,你可以在戰鬥開始時提高鼓的音量,戰鬥結束時再降回來。

步驟 4:用你自己的取樣製作音效

SuperCollider 製作音效同樣出色。你可以匯入自己的 WAV 錄音作為取樣:單聲道或立體聲 PCM,16、24 或 32 位元,取樣率介於 8 到 192 kHz。匯入時會記錄每個取樣的雜湊,因此專案能確切知道某份樂譜依賴哪些音訊。

「把 footstep.wav 匯入為取樣,製作四個礫石腳步的變化版本:每個的音高與長度略有不同,並帶有短尾韻。」

這類變化能讓重複出現的聲音不顯得機械,而且只要樂譜存在,製作幾乎不花成本。

步驟 5:匯出到遊戲中

當渲染完成,代理人會以你指定的名稱將其匯出到遊戲專案中:

  • Unity:匯出到 Assets/Audio,取代檔案時保留 .meta 檔與 GUID,這樣場景中的參照不會失效。
  • Godot:匯出到 res://Audio/,並將製作資料夾排除在 Godot 的匯入之外。
  • Unreal:透過編輯器連線,以 SoundWave 匯入到 /Game/Audio 之下。
  • 純資料夾:匯出到 AudioSource 的匯出資料夾。

取代既有匯出檔時,會檢查你正在取代的檔案是否如你所預期,因此較新的檔案絕不會被意外覆蓋。

目前它擅長什麼

Music 套件最適合原型與獨立遊戲的音訊:選單與關卡主題曲、環境底噪、勝敗提示音、UI 音效,以及音效的變化版本。樂譜是以離線渲染而非即時合成,成果取決於樂曲描述得好不好,所以先從短曲開始,再逐步擴充。

Music 於 0.20.0 版加入,從 0.23.0 起改為保持安裝,但只在你啟用時才加入新的工作階段(https://ai-game.dev/releases/0.23.0)。想試用,請到 ai-game.dev/download 下載應用程式,開啟你的遊戲專案,然後要求一段範例主題曲。關於其餘工作流程,ai-game.dev/blog/build-game-with-ai-claude-code 的逐步導覽示範了同一個代理人如何建出這段音樂所搭配的場景。

更多部落格文章

所有文章