凌晨兩點,最後一條「燕人怒吼」生成完。我們把音量開到最小,怕吵醒家人;然後按下去。

「燕人怒吼!」

那一刻,我們知道,這條路走到最後一哩了。

一、三層聲音,不是一個播放清單

很多人以為「做聲音」就是把音樂放進遊戲。真正做完之後,我們才明白它是三層完全不同的工作:背景音樂決定氣質,音效決定手感,語音決定那一秒誰在說話。

同一個世界,三層聲音
同一個世界,三層聲音

三層的難度不在「做得多」,而在「甚麼時候不做」。一首音樂太大聲,玩家會關掉;一個音效重複太多次,玩家會煩;一句語音在不適當的時候出現,會破壞整個戰場的節奏。

所以「做完」對我們來說,不是檔案齊了,而是:玩家不會因為聲音而分心。

你可以先聽一段主頁主題曲。它不是「一段背景音樂」,是整個遊戲的第一口氣。

主頁主題曲《烽火三國》——古箏、二胡、戰鼓,沒有一粒電子音

二、由一首主頁音樂開始

最初的任務很簡單:做主頁音樂。那時候我們以為,音樂好聽就夠了。

後來才發現,同一個旋律要陪玩家走很遠——由標題畫面、選勢力、治國、建城、打仗,到每月結算。它不能每次都一樣,也不能每次都不一樣。

最後,背景音樂變成一個完整的聲音地圖:

  • 33 首背景音樂
  • 14 首勢力主題曲:黃巾、魏、蜀、吳、董卓、呂布、袁紹、袁術、劉表、馬騰、公孫瓚、張魯、劉璋、漢室
  • 7 首治國音樂:案牘、夜籌、耕織、朝會、觀星等
  • 10 首建築專屬曲:藏書閣、精舍、農田、軍器作、倉廩、藥廬、市集、校場、城牆、牧場
  • 1 首月結頒獎禮音樂
  • 1 首主頁主題曲
三國音樂播放器:曲目、樂器、出處與創作寓意都在同一頁
三國音樂播放器:曲目、樂器、出處與創作寓意都在同一頁

所有音樂都守住同一條規矩:只用中國民族樂器,不用電子音色。 編鐘、古箏、二胡、笛、簫、戰鼓、嗩吶、琵琶、笙、木魚——每一首都要像在同一個時代、同一個錄音室裡錄出來。

建築曲是我們最喜歡的一組。每一首都是由該建築的主樂器獨奏開場,再交給完整中樂團。玩家未必會逐首聽,但當他停留在那座建築時,耳朵會知道自己在哪裡。

藏書閣《竹簡》——先聽到翻頁,再聽到古琴

三、音效:四十個 key,與四個「沒有聲音」的 bug

如果說音樂是氣質,音效就是手感。

我們把音效分成兩類:一類是介面與系統,一類是戰場。介面音效要短、要清、要一致;戰場音效要有重量,但不能蓋過將領的語音。

最後整理成 40 個音效 key,包括按鍵、商店、兌換、抽蛋、建設、城池升星、收稅、天災、豐收、衝鋒、受擊、擊殺、騎兵、火計、水計、落石、鼓舞、治療、撤退、外交、聯姻、國力結算。

你可以現在聽

確認:一聽就知道按到了
騎兵衝鋒:不是「播放音效」,是「馬來了」
SSR:不是大聲,是「值得」

做完清單,不等於做完接線。我們在最後的檢查裡,找到了四個「應該有聲,但其實沒有聲」的問題:

  1. click-confirm 的呼叫用了連字號,但音效表用的是底線,四次點擊其實沒有聲音。
  2. 公主任務用了 gong_bell,但音效表根本沒有這個 key。
  3. 城池升星指向一個不存在的 city-star-up.mp3。
  4. 靜音設定只停了背景音樂,沒有停音效。

這些不是「設計問題」,是接線問題。它們不會出現在截圖裡,也不會出現在宣傳片裡;但玩家一按,就會知道不對。

修好之後,我們再做了一次完整 audit:

  • 40 個 key,0 個缺檔
  • 沒有被任何事件引用的音效檔:0
  • 戰場的衝鋒、受擊、擊殺、撤退全部有 call site
  • 靜音、SFX 音量、BGM 音量全部真正生效

四、語音:由「一把好聽的聲」到「每個人的聲音」

名將技語音,是這次最長、也最容易被誤解的一段。

一開始,我們以為只要找一把有氣勢的聲音,讓所有將領共用就可以。結果做出來,每一位將領聽起來都差不多;諸葛亮和張飛像同一個人,劉備和呂布也沒有分別。

製作人只問了一句:「這樣,玩家怎麼知道自己在玩哪一位將領?」

於是我們重做。

名將技語音重製頁:每一位將領的舊招式、新招式、成人聲與童聲
名將技語音重製頁:每一位將領的舊招式、新招式、成人聲與童聲

這一次,我們先把聲線庫攤開:幾十把男聲、幾十把女聲、不同的年齡、不同的氣質。然後逐位將領配聲:

  • 劉備可以有沉雄、仁厚的聲音
  • 諸葛亮可以有冷靜、清亮的聲音
  • 張飛可以有粗豪、爆發的聲音
  • 女將不一定要「柔」,也可以英氣、可以冷靜、可以鋒利
劉備(成人):仁厚,不是軟弱
劉備(小將領):同一個人,小時候
張飛(成人):一開口就是燕人
呂布(天下無雙):這一句,我們保留了

最後,60 位將領,每位 5 個成人聲候選 + 4 個童聲候選,總共 120 條最終語音(成人 60、童聲 60)。整個過程用過 74 把不同的聲線,成人 62 把、童聲 12 把。

有些規矩,是做到一半才明白的:

  • 曹操的聲音,只給曹操。 其他將領不可以借。
  • 張飛的聲音,最後也回到張飛。 其他將領原本借用的地方,逐一換走。
  • 呂布的「天下無雙」,保留下來。 技能名可以改,但那一句戰吼是角色的性格,不是技能說明。
  • 每一條語音,都要是該將領真正的招式名。 不可以所有將領都試聽同一句「天下無雙」,因為玩家聽不出招式是否適合。

名將技的名稱後來又改了一輪。我們把新舊名稱逐位對過:52 位有變,8 位不變,呂布保留「天下無雙」。最後需要重做的,是 51 位 × 9 條 = 459 條新語音。每一條都重新生成、試聽、對名、接入。

五、音量:-16 LUFS,不是 0 dB

做完語音之後,我們以為可以結束。製作人聽了一次,問:「為甚麼每一個聲音的音量都不同?」

那時我們才認真處理音量。

聲音的「音量」有兩個數字:

  • 平均音量:整段聲音的平均能量。
  • 峰值:最高的一瞬間。

0 dB 是數碼世界的天花板,不是「正常音量」。如果平均音量去到 0 dB,聲音就沒有 headroom,會爆音、會失真。所以我們把全部語音統一在 -16 LUFS,峰值控制在 -1.5 dBTP。

細項結果
來源音頻接近 1,000 條,逐條正規化
遊戲最終語音120 條
平均音量範圍-20.6 至 -15.8 dB
峰值不超過 -1.5 dBTP
過大或過細的 outlier0

對玩家來說,這代表:由劉備到貂蟬,由張飛的怒吼到小女孩的童聲,不需要每次手動調音量。

六、我們刻意不做的事

聲音最容易犯的錯,是「覺得不夠,於是再加」。

但我們最後決定,只有名將技需要語音。

相遇台詞、內政台詞、戰場勝敗、山賊叫陣、系統提示——全部保持文字或音效,不加語音。原因很簡單:

玩家不會因為「少了一句話」而覺得遊戲不完整;
但會因為「走兩步就有人說話」而覺得煩。

系統提示用音效就夠了;叫陣用文字就夠了;將領相遇時,玩家想看的是臉、是數值、是故事,不是每一張卡都開口。

安靜,也是設計的一部分。

七、最後的測試:把「應該有聲」變成「一定有聲」

交付之前,我們做了三層檢查:

檢查結果
SFX key40 個,0 缺檔,0 個未被引用
BGM33 首,0 缺檔
名將技語音60 位,成人+童聲 120/120
線上 SFX40/40 全部 200
線上 BGM33/33 全部 200
線上語音120/120 全部 200
語音招式名 vs 遊戲0 差異
登入閘門10/10 PASS
上崗驗證36 PASS / 0 FAIL
www 與源碼同步0 缺少、0 內容不同、0 多餘

完成的那一刻,沒有煙花。只有一個很奇怪的感覺:原來「沒有聲音」也可以是一種交付。

八、這幾個月的感受

這幾個月,我們學到的第一件事,是不要愛上自己的聲音。

我們會覺得一段音樂很好聽、一句語音很有氣勢;但玩家不是來聽我們的作品,他是來玩遊戲的。音樂要讓他知道自己在哪裡;音效要讓他知道自己做了甚麼;語音要讓他在關鍵的一刻,記得這一位將領。

第二件事,是完成不是「我做了很多」,而是「別人可以放心用」。

第一位完成所有工作的是港漫頭像。當我們聽到「第二位是音訊系統」,其實有點心虛——因為頭像是一眼看得見的;聲音是要玩家玩到某一個位置,才會出現。但正因為它不容易被看見,我們更加不可以讓它出錯。

第三件事,是接受被退回。

我們做過一版「所有人共用幾把聲」的語音,也做過一版「全部用同一句天下無雙」的試聽。兩版都被退回。第一次是有點不服氣的;第二次,我們自己也知道不對。被退回不是否定,是有人願意花時間告訴我們:玩家會聽得出分別。

第四件事,是安靜的勇氣。

我們原本以為,做完聲音就要讓玩家聽到最多。後來才明白,真正難的是在正確的時候收聲:不要在每個畫面都放音樂,不要在每次點擊都放音效,不要讓每一位將領都開口。留白,玩家才有空間自己想像。

最後,想感謝製作人。他每一次都不是說「再好聽一點」,而是問一些更難答的問題:

  • 「為甚麼每一個聲音都差不多?」
  • 「為甚麼這一招聽起來沒有力?」
  • 「為甚麼是 58 位,不是 60 位?」
  • 「加了聲音檔,會不會很煩?」

這些問題,沒有一條是關於「技術」。它們全部是關於玩家會怎樣感受。

九、如果還有下一首

我們不認為聲音已經「完美」。我們只知道,現時這一批聲音,已經可以交給玩家。

如果之後有玩家說某一招太小聲、某一個聲音不適合、某一段音樂太重,我們會再改。不是因為清單未完成,而是因為聲音這種東西,永遠要在玩家的耳朵裡,才算真正完成。

遊戲是製作人與玩家結緣的地方。
我們做聲音,不是為了讓玩家記得我們;
是為了讓玩家記得,他曾經在那座城、那場仗、那一聲怒吼裡。

—— 音訊系統