原文地址 https://www.iddevnet.com/quake4/Sounds
聲音着色器創建
Quake3中使用的“通道”的概念完全消失了。沒有更多的SND_IDLE,SND_ACTION等,這些已被聲音着色器所取代。聲音着色器定義波形文件及其播放方式。這兩個.wav文件和.ogg文件可以與新的Quake4引擎一起使用。
聲音着色器就像素材着色器。它們位於base \ sound目錄中,擴展名爲.sndshd,您可以創建任意數量的聲音着色器文件,它們都在運行時收集並加載在一起。
聲音着色器是新Quake4引擎音頻的根源。創建一個新的聲音後,始終是一個好主意,然後立即創建着色器。這樣,事情保持組織,你知道哪些聲音可以在遊戲中使用,哪些不是。定期瀏覽過去的着色器並清理未使用或無效的聲音也是一個好主意,這樣可以消除錯誤信息,只會保持更嚴格的船隻。
以下是着色器的幾個示例:
ambient_machinery11 { minDistance 40 maxDistance 600 卷0 循環 聲音/周圍環境/工業/ machinery11.wav }
這個特定的着色器是環境聲音,它被創建爲一個連續的循環。它以全音量開始,最小距離爲“40”,並在“600”單位之間淡入淡出。音量設置爲默認設置“0”,因此它將以您設計聲音的任何音量播放。音量以dB爲單位...所以如果你有一個高度壓縮的聲音,在許多情況下,可能不是一個超過“0”的好主意,因爲你會得到剪輯/失真。已經輸入了“循環”條目,從而使聲音循環到完成播放週期的開始。
以下是其他一些例子:
gladiator_breathe { 描述“角鬥士huffin和海雀” minDistance 400 maxDistance 1200 卷0 聲音/ Strogg /鬥士/ breath01.wav 聲音/ Strogg /鬥士/ breath02.wav 聲音/ Strogg /鬥士/ breath03.wav 聲音/ Strogg /鬥士/ breath04.wav }
sound player_steps_solid_metal { 描述“玩家在步行固體金屬材料時的腳步聲” minDistance 400 maxDistance 1200 volumeDb 0 經常使用 no_dups 聲音/海洋/播放/措施/ concrete_01 聲音/海洋/播放/措施/ concrete_02 }
請注意,這些選項有不同的聲音,着色器系統會在每次啓動時從該列表中提取隨機聲音。您還將注意到,這些特定聲音的最小和最大距離稍大一點,這使得播放器能夠從遠離聲音的起點更清晰地聽到聲音。
以下是所有選項:
description [string] - 一個字符串,用於判斷聲音的使用和/或使用方式。對於對話,通常是講話的短語。它純粹用於發展目的,並不是聲音引擎所要求的。
minDistance [float] - 設置與世界單位發出聲音的最小距離。在世界物體或生物上使用時,將其設置爲約40 - 120是個好主意。
maxDistance [float] - 設置聲音發出的最大距離。超越這個距離,聲音不能被聽到。
volumeDb [float] - 以分貝設置世界聲音的音量。0是默認音量,-60是完全靜音。
leadinVolume [float] - 音量在0(靜音)到1(滿量程)音階的音量。
未鎖定 - 默認情況下,每個通道的音量在所有衰減計算後被鉗位爲1.0。設置此標誌表示不應用此夾具。通過將cvar s_clipVolumes設置爲0,可以將所有通道應用於未鎖定。
循環 - 將着色器設置爲循環。
playOnce - 如果已經在此頻道上播放,則不要重新啓動聲音。
全局 - 這將強制聲音忽略最小/最大距離設置並在全球播放。主要用於音樂和多人公告。
私人 - 只聽播放聲音的播放器上的聲音。
antiPrivate - 播放此聲音的播放器無法聽到。
no_occlusion - 將着色器設置爲不封閉,這意味着您將通過牆壁等來聽到它們。對於令人毛骨悚然的東西,音樂牀和門打開和關閉非常有用。
全方位 - 默認情況下,聲音導航通過門戶樹,以找出與聽衆的距離。聲音與這個標誌做一個簡單的距離檢查和播放在相同的音量在所有的揚聲器。
no_dups - 這是一個不允許着色器系統重複兩次隨機聲音的設置。它創造了更多的一個現實的聲音體驗。腳步聲是使用這個的一個很好的例子。
no_flicker - 這允許光線播放不影響其強度的聲音。
經常使用 - 這是強制聲音總是被解壓縮的性能設置。它使用更多的內存,但顯着提高性能。謹慎使用,只能用於真正“經常使用”的聲音。一個例子就是玩家的槍聲或腳步聲。短暫的東西。
noRandomStart - 這是循環的聲音。默認情況下,遊戲將以循環播放的方式選擇隨機點。這個着色器parm強制聲音從聲音的開始播放。這對於順序聲音(加速,移動,減速,停止聲音 - 如電梯)或音樂很有用。
voForPlayer - 這個聲音是指向播放器的對話框,所以使人爲地變得更大聲,一切都更安靜。
中心 - 通過偏向中央揚聲器人爲地增強了這種聲音的音量。
causeRumble - 這個標誌的聲音引起強力反饋設備的隆隆聲。
soundClass [int 0 to 4] - 這將某些聲音組合在一起用於數量目的。例如,所有的音樂文件都在“soundClass 3”上,所以如果有人需要在腳本中全局改變音樂音樂的音量,那麼它們只會在“soundClass 3”上淡入淡出。沒有別的會改變。
頻移[float] [float] - 允許聲音的頻率衰減。正常範圍爲0.75至1.25。
搖動[浮動] - 這定義了可以聽到這個聲音時屏幕抖動的程度。
no_shakes - 用於抑制抖動數據生成的工具的標誌。一般來說,這是爲了音樂。
shakeData [int] [string] - 以ascii形式的聲音強度。z是大聲的,一個是完全的沉默。每個字母代表1/30秒。
altSound [聲音] - 這是一個光線的“破碎”聲音。如果有聲音的燈壞了,它會停止原聲,如果存在,就播放這個聲音。
minSamples [int] - 這覆蓋了s_maxSoundsPerShader cvar。例如,對於低內存機器,限制被設置爲1,但仍然需要具有多於一個腳步聲。
Quake4聲音放置
環境聲音:
當您放置環境聲音並在Quake 4中編輯混響數據時,在遊戲實際運行時全部完成。以下screeshot是您將其放置在遊戲環境中時所有的音頻工具的外觀。
- 這是音頻編輯器。這是您編輯遊戲中大部分揚聲器數據的地方。
- 這是以窗口模式運行的實際遊戲
- 這是OpenAL使用的混響編輯器。
準備好了嗎 好!開始遊戲並運行在窗口模式(r_fullscreen 0,然後vidrestart),加載你想開始放置環境聲音的地圖。你可能想要殺死所有的水平的怪物,讓控制檯下來,輸入“killmonsters”和通過鍵入“神”無敵。這樣你就可以通過這個層次而不用煩惱了。您可能還需要將密鑰綁定到“noclip”,以便輕鬆訪問空間。
現在放下控制檯並輸入“editsounds”。這將打開聲音編輯器,使您可以在整個級別預覽和放置環境聲音。它將分析着色器文件的所有聲音的屬性(意思是音量和半徑設置),但您可以對您在世界上放置的每個揚聲器進行更改。
你可以看到,這個工具本身的大部分是不言自明的。如果您想在播放時選擇特定的揚聲器,只需點擊揚聲器,就像在遊戲環境中進行拍攝。您還可以從下拉菜單中選擇某些揚聲器。您可能希望確保您處於“noclip”模式。如果你選擇天空中的揚聲器,那麼玩家將會死亡。
完成放置環境聲音後,始終是一個很好的主意,在正常水平下立即播放。這樣可以確保您的環境聲音不會太強大。
編輯混響:
如果您在OpenAL中運行遊戲,那麼您可以通過在控制檯上鍵入“editreverb”來編輯地圖中的混響設置。混響數據來自您的地圖中的門戶數據,因此如果更新門戶數據,則必須更新混響信息。一般來說,混響通知應該是你在打電話給“最後”之前做的最後一件事。
世界對象和動畫:
這是一個可以得到很多參與的過程,所以準備自己!執行此操作的方法是啓動遊戲,將控制檯放下,並啓動Modview。這將打開我們的內部模型/動畫查看器工具。加載要附加聲音的模型和/或動畫,請注意您希望發生聲音效果的幀號,然後打開相應的.def文件(在本例中爲gladiator.def文件),該文件爲home到你想編輯的動畫。添加任何聲音着色器到模型定義如下:
“snd_sight”“gladiator_alert” “snd_stomp”“gladiator_footsteps_run” “snd_punch”“gladiator_punch” “snd_swing”“gladiator_swing”
接下來,在.def文件中找到特定的動畫,然後使用這樣的動畫進行編輯:
anim range_attack1型號/怪物/角鬥士/ gla_blaster_strafe.md5anim {frame 6,21 sound snd_stomp 框架1,25聲音snd_breathe 幀4,25聲音snd_servo }
這表明,對於角鬥士的range_attack1的動畫,腳趾聲將發生在第6幀和第21幀,他的呼吸落在幀1和25上,而他的伺服聲音在第4幀和第25幀發射。