遊戲引擎剖析(六)

2021-04-12 12:34:44 字數 1241 閱讀 9572

第6部分: 聲音系統,音訊apis

聲音系統

現在有一些很少有處理的聲音空間化問題。我說的是把聲音放在乙個真實的3d世界中。有四個揚聲器在你周圍是乙個很棒的開始,但這仍然只是在二維方向。在你的上方和下方沒有揚聲器,你沒有真正獲得3d聲音。有一些聲音調製過濾器試**決這個問題,但實際上沒有真實東西的代替物。當然真實地大多數遊戲多半只是在二維方向上,因此這仍然不是太大的問題。

實際上任何聲音系統最重要的特徵之一是把聲音混合在一起。根據你所處的位置,空間中聲音的位置,每個聲音的音量大小,一旦你決定了實際上你能夠聽到的聲音,然後你必須混合這些聲音。通常聲音卡自己處理這些,這首先是聲音卡存在的主要原因。然而,外面有一些引擎決定首先用軟體做一次『預混合』。直到你著眼於一點點歷史以前,這並沒有真正地帶來多大的意義。

當聲音卡最初問世的時候,有許多不同的混合方法。一些音效卡可以混合8種聲音,一些單位16種,一些32種,等等。 如果你總想聽到16種可能的聲音,但你不知道聲音卡是否能夠處理,那麼你回到了嘗試和試驗的道路上 — 就是你自己用軟體混合。這實際上是quake iii聲音系統的工作方式,但提乙個問題:"quake iii是為a3d和sound blaster live!音效卡世界發布的,這比以前更加標準化,為什麼還這樣做?" 這是個好問題。實際上quake iii的聲音系統幾乎每行**都和quake ii中的聲音系統一樣。而且quake i,甚至doom也是這樣。你想一想,向上直到 a3d 音效卡和 sb live! 音效卡,許多年來聲音系統的需求沒有真正地改變過。兩個揚聲器,二維方向,音量簡單地隨著距離減小。從doom一直到quake iii沒有發生太大變化。而且在遊戲行業中,如果不是迫不得已,別理會它。

通常你會僅僅使用directsound為你做聲音混合,因為它會可以使用的聲音硬體,或者轉而依靠軟體,很多地方就像directx為3d顯示卡所做的一樣。在 90% 的聲音情形中,依靠軟體混合對你的幀速率沒有真正發生太多不同。當directsound在一些狂熱的編碼者眼中甚至還不是一絲光線時,doom引擎就已經產生了。它從來沒有得到更新過,因為它從來就沒有真的需要更新。

當然,你可以使用 soundblaster live!音效卡的一些聰明特徵,例如房間的回聲特性: 一塊石窟,或乙個禮堂,乙個巨穴, 乙個足球體育館等。而且你真的應該使用由硬體提供的混合器,畢竟,那是它存在的目的。這種方法的乙個不足之處是程式本身時常無法獲得混合結果,因為混合是在音效卡內部完成而不是在主存。如果由於某種原因你需要看到產生的音量,你是運氣不好。

music tracks in games(遊戲中的音軌)

遊戲引擎剖析(二)

第2部份 3d環境的光照和紋理 世界的燈光 在變換過程中,通常是在稱為觀察空間的座標空間中,我們遇到了最重要的運算之一 光照計算。它是一種這樣的事情,當它工作時,你不關注它,但當它不工作時,你就非常關注它了。有很多不同的光照方法,從簡單的計算多邊形對於燈光的朝向,並根據燈光到多邊形的方向和距離加上燈...

遊戲引擎剖析(四)

第4部份 模型與動畫,細節級別 角色建模與動畫 你的角色模型在螢幕上看起來怎麼樣,怎樣容易建立它們,紋理,以及動畫對於現代遊戲試圖完成的 消除不可信 因素來說至關重要。角色模型系統逐漸變得複雜起來,包括較高的多邊形數量模型,和讓模型在螢幕上移動的更好方式。如今你需要乙個骨骼模型系統,有骨架和網格細節...

遊戲引擎剖析(七)

第7部份 網路和連線遊戲環境 網路遊戲 我記得一些年前坐在gdc 遊戲開發者大會 聽負責開發x wing vs tie fighter的傢伙們題為 淹沒在internet 的演講,全是關於讓網路遊戲實時地在internet上工作的東西。他們選擇那個題目是多麼的正確啊。當它開始處理資料報的丟失,亂序,...