【翻譯】音游開發(fā)速成:音頻導(dǎo)入設(shè)置(作者:5argon)
【文章原載于https://exceed7.com/native-audio/rhythm-game-crash-course/import-settings.html,授權(quán)翻譯轉(zhuǎn)載,再次轉(zhuǎn)載請聯(lián)系原作者獲取授權(quán)。】
【系列文章目錄】
音游開發(fā)速成(概論)
背景音軌
游戲設(shè)計與制譜
四類音頻應(yīng)用程序
音頻導(dǎo)入設(shè)置【本文】
與DSP同步
來自Bemuse作者的提示
音頻導(dǎo)入設(shè)置

及其對音游的意義。
格式
您會注意到有PCM、Vorbis和ADPCM三種可選格式。用Vorbis就行,因為PCM格式的音樂體積大得飛起……
質(zhì)量
質(zhì)量設(shè)置為100有些過高。您可以在Vorbis格式下選擇質(zhì)量,我認(rèn)為大多數(shù)普通玩家不會注意到40-100之間的差異。實際上您可以把質(zhì)量調(diào)得非常低,我相信Cytus 1所有歌曲的質(zhì)量都在15-35左右。(這只是一個猜測!請記住,如果別人有無損的wav音頻源,而您只有192kbps的音頻源,那么您的15-35將不會表現(xiàn)得那么好。)您可能會在試聽時覺得這聽起來太差了,就像是對最初創(chuàng)作它的曲師的一種冒犯。但是!……如果您對所有歌曲都采用這種質(zhì)量設(shè)置,玩家就不會注意到這首歌的質(zhì)量很差,哈哈!
VOEZ和Dynamix的歌曲質(zhì)量更好,因為游戲?qū)⑼ㄟ^互聯(lián)網(wǎng)下載這些歌曲,并能夠隨意刪除和重新下載,所以這些游戲的創(chuàng)作者不必關(guān)心應(yīng)用程序的大小。(如果您有足夠的資金來為所有玩家架設(shè)一個服務(wù)器,那就可以采用這種做法。但如果您不能以足夠快的速度扭虧為盈,就存在被服務(wù)器成本拖垮的風(fēng)險。)Deemo的音樂質(zhì)量也非常糟糕,我猜它是10-25左右。如果您比較一下Deemo和VOEZ的Like Asian Spirit這首歌,將會立刻注意到從外部下載的音頻和程序內(nèi)捆綁的音頻(被迫節(jié)約存儲空間)之間的質(zhì)量差異。Deemo那一版的高頻部分聽起來更“暗”,就像被低通軟濾波器處理過一樣。
質(zhì)量設(shè)置還取決于音樂流派。對于電子感很強(qiáng)的歌曲,您可以將質(zhì)量設(shè)置得非常低而不被注意到。但原聲(acoustic)歌曲通常必須設(shè)置在25-50左右才能聽起來比較好(比如原聲吉他在低質(zhì)量下聽起來明顯很差)。這是因為原聲歌曲的高頻區(qū)很清晰,幾乎沒有其他東西干擾。我建議對每首歌曲分別設(shè)置質(zhì)量,不斷降低質(zhì)量并試聽,直到聽上去不太好為止。請您在降低質(zhì)量時注意頻譜的高頻區(qū),因為聽感將首先在這里惡化。它將變得更“模糊”,就像您在收聽廣播時逐漸把頻道調(diào)整到范圍之外。我發(fā)現(xiàn)聽感惡化的重要步驟通常發(fā)生在這些區(qū)間內(nèi):[100-40] [39-25] [24-20] [19-10] [9-0],取值較高時很難注意到差異。
加載類型
選擇內(nèi)存中壓縮(Compressed in memory)、加載時解壓(decompress on load)還是音頻流(streaming)?本文假定您知道這三個選項的根本區(qū)別。音頻流可能很誘人,因為整個播放過程中只使用到非常非常少的內(nèi)存,這可以節(jié)約您的內(nèi)存資源,并且神奇的是音頻流幾乎沒有加載時間。但音頻流也有問題。
audioClip.LoadAudioData可以進(jìn)行阻塞調(diào)用,從而確保在游玩前的“加載中”界面里完整地加載音頻,這是確保您的精確啟動計劃順利推進(jìn)的正確“準(zhǔn)備”。但這種方法不且僅不適用于音頻流,只要您選擇加載時解壓或內(nèi)存中壓縮,它將適用于各種PCM和Vorbis。
所以您的游戲并不會等待加載完成,而是會立即開始。因為從本質(zhì)上講,音頻流不存在“加載”這一概念,它認(rèn)為加載是立即完成的(我認(rèn)為實際上它只加載了一小部分,而不是整個音頻)。您的玩家可能會抱怨每次重開時的偏移量并不相同,通常情況下第一次游玩時偏移量比較差,而后面的重開會更好一些。但如果重開時設(shè)備發(fā)生卡頓,偏移量將重新變差,因為音頻流無法以任何方式等待加載。我很確定在對音頻流執(zhí)行LoadAudioData之后,audioClip.loadState會立即被置為Loaded,但實際上它并沒有加載完成,因此您無法等待加載。
但音頻流在音游中的最大優(yōu)勢表現(xiàn)在音樂選擇界面。您可以滾動瀏覽所有音樂,并非??焖俚夭シ蓬A(yù)覽音樂。使用其他加載類型將不得不讓玩家等到歌曲完全加載后才能聽到預(yù)覽音樂?;蛘吣仨?strong>為預(yù)覽音樂添加獨(dú)立的音頻資源,可將之設(shè)置為音頻流以盡快預(yù)覽,并且可以將其質(zhì)量降到更低。而真正在游玩中使用的那個音頻資源可設(shè)置為內(nèi)存中壓縮,并具有更高的質(zhì)量。但預(yù)覽音樂的獨(dú)立音頻資源會使您的游戲變得更大。預(yù)覽音樂的平均時長可能在10秒左右,如果1分鐘的壓縮音頻大約是1MB,那么您需要為100首歌曲付出大約16MB的空間代價。
我注意到Dynamix和Tone Sphere這兩款游戲中,預(yù)覽音樂的質(zhì)量比您在游玩中聽到的音樂更低??赡苓@些游戲正在使用這種將預(yù)覽獨(dú)立于實際音頻的技術(shù)。您可以使用PCM格式導(dǎo)入音效,其加載時間最短但文件尺寸較大;或者使用Vorbis + 加載時解壓,其加載時間稍長、尺寸較小且解壓后的結(jié)果是原始PCM。音效的體積并不大,所以您可能會選擇PCM,但對于較長的音效(如吹奏號角和較長的風(fēng)聲環(huán)境音),您可能會用到Vorbis+ 內(nèi)存中壓縮。
但如果您真的想用音頻流來在音樂選擇界面中兼得盡快預(yù)覽和最優(yōu)質(zhì)量(和游玩中一致),而且不想被迫為每首歌添加兩段音樂,那應(yīng)該怎么辦?當(dāng)我們不能依賴audioClip.LoadAudioData時,我處理偏移量變化問題的方法是在0音量下將音頻播放1-2秒作為熱身,然后重新開始真正播放。這是確保音頻流已經(jīng)加載的唯一方法,即實際播放一下。當(dāng)您再次播放它(真正播放)時,有可能寄希望于緩沖區(qū)中仍然保存了同一段音頻數(shù)據(jù)(但這仍然不是100%可靠)。
采樣設(shè)置
您可以在Unity音頻導(dǎo)入器中選擇重采樣或保持原采樣。我認(rèn)為這并不重要,因為我在Android平臺上發(fā)現(xiàn)(https://gametorrahod.com/android-native-audio-primer-for-unity-developers):在Unity將所有音頻混音到一個總線上之前,這些音頻都會被重采樣到24000 Hz(我不清楚其他平臺上情況如何)。但我認(rèn)為您可以通過降低采樣率來減少導(dǎo)入的體積。(不確定這種做法是否會影響【譯注:此處的動詞在原文為chipmunk,不確定具體意義,或許源于某種meme?】您的聲音表現(xiàn),因為低采樣率下您所導(dǎo)入的數(shù)據(jù)更少,但播放頭是否會根據(jù)這份更少的數(shù)據(jù)來減慢消耗數(shù)據(jù)的速度呢?)