明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

游戲引擎剖析(6)

[摘要]原文作者:Jake Simpson譯者: 向海Email:GameWorldChina@myway.com 第6部分: 聲音系統(tǒng),音頻APIs聲音系統(tǒng)  由于人們玩的游戲在種類和技術(shù)上的進(jìn)步,聲音和音樂近幾年來(lái)在游戲中正逐漸變得重要起來(lái)(聲音是一個(gè)實(shí)際游戲的可玩特點(diǎn),比如在Thief和其它同類游戲...
原文作者:Jake Simpson
譯者: 向海
Email:GameWorldChina@myway.com


第6部分: 聲音系統(tǒng),音頻APIs


聲音系統(tǒng)
  由于人們玩的游戲在種類和技術(shù)上的進(jìn)步,聲音和音樂近幾年來(lái)在游戲中正逐漸變得重要起來(lái)(聲音是一個(gè)實(shí)際游戲的可玩特點(diǎn),比如在Thief和其它同類游戲中的聽覺提示)。現(xiàn)在四聲道環(huán)繞系統(tǒng)在游戲玩家的寶庫(kù)中是負(fù)擔(dān)得起的和平常的事。給定空間的聲音,噪音的障礙和閉塞,和動(dòng)態(tài)的音樂,如今許多游戲使用這些提高玩家情緒上的反應(yīng),更多的關(guān)注投入到這個(gè)領(lǐng)域就不足為奇了。

  現(xiàn)在在PC競(jìng)技場(chǎng)中,游戲玩家實(shí)際上只有一種聲音卡可以選擇 -- PC聲卡制造商創(chuàng)新公司(Creative Labs)的Sound Blaster Live! 從舊的時(shí)間個(gè)人計(jì)算機(jī)聲音卡片制造業(yè)者有創(chuàng)造力的中心. 多年來(lái)創(chuàng)新公司已經(jīng)為DirectX提供了他們的EAX聲音擴(kuò)展,并且他們是發(fā)起新的OpenAL(開放音頻庫(kù)Open Audio Library)的創(chuàng)立者。就如同OpenGL是一個(gè)圖形API一樣,OpenAL,像它起來(lái)聽一樣,是一個(gè)聲音系統(tǒng)的API。OpenAL 被設(shè)計(jì)為支持大多數(shù)通常聲卡的許多特征,而且在一個(gè)特定的硬件特征不可得時(shí)提供一個(gè)軟件替代。

  為了更好的定義 OpenAL,我向創(chuàng)新公司的Garin Hiebert詢問了其定義:

  "這里借用我們的 " OpenAL 規(guī)格和叁考" 的一個(gè)定義:

  OpenAL 是對(duì)音頻硬件的一個(gè)軟件接口,給程序員提供一個(gè)產(chǎn)生高質(zhì)量多通道輸出的能力。OpenAL 是在模擬的三維環(huán)境里產(chǎn)生聲音的一種重要方法。它想要跨平臺(tái)并容易使用,在風(fēng)格和規(guī)范上與OpenGL相似。任何已經(jīng)熟悉OpenGL的程序員將發(fā)現(xiàn)OpenAL非常熟悉。

  OpenAL API能容易地被擴(kuò)展適應(yīng)插件技術(shù).創(chuàng)新公司已經(jīng)把EAX支持加入到這套API了,程序員可以用來(lái)給他們的聲音環(huán)境增加復(fù)雜的反響,比賽和障礙效果。

  如同Jedi Knight II: Outcast 一樣,連同Eagle 世界/聲音特征編輯器,Soldier of Fortune II 以這個(gè)新系統(tǒng)為特征。什么是Eagle? 在介紹這個(gè)以前,讓我們討論一些其他的系統(tǒng),并定義一些聲音術(shù)語(yǔ)。


  另外的一個(gè)系統(tǒng)是Miles聲音系統(tǒng)。Miles是一家公司,它為你的代碼生產(chǎn)插件,在充分利用每塊聲卡時(shí)處理所有必須的到特定聲音卡的說話(比如Sound Blaster Live!系列,或者老的A3D聲卡)。它非常像一個(gè)API前端,捆綁了一些額外的特征在里面。 在其他事物當(dāng)中Miles讓你存取一些事物像MP3解壓縮。 它是很好的解決方案,但像任何事一樣,它花費(fèi)金錢并是你的代碼和硬件之間的額外一層。雖然對(duì)於快速的聲音系統(tǒng)制造,它非常有用,而且他們有段時(shí)間了,因此他們的確精通自己的業(yè)務(wù)。


聲音術(shù)語(yǔ)
  讓我們開始障礙和閉塞。它們聽起來(lái)一樣,但不是這樣。閉塞基本上意謂著一個(gè)聲音在播放時(shí)聽者在他們之間有一些閉合的障礙物。

  比如說,在NOLF2的一個(gè)屏幕鏡頭上你聽到房子里面壞蛋的聲音。你能聽到他們,但是他們的聲音相當(dāng)?shù)统炼硢 U系K是相似的,但是你和聲音之間的障礙物并不是閉合的。一個(gè)好的例子就是在你和聲源之間有一根柱子。由于房間中的回聲你仍然聽得到這個(gè)聲音,但是它和聲音直接傳遞到你的耳朵里是不同的。當(dāng)然這確實(shí)依賴于知道在你的耳朵和聲源之間的直線上是什么。而且根據(jù)房間的大小,聲源到你的距離等等,需要的處理能變得相當(dāng)耗時(shí)。后面我們將會(huì)談到跟蹤--足可以說它時(shí)常是比較慢的幀速率的原因。Quake III 里面的A3D 代碼做了這些事情,關(guān)閉這些選項(xiàng)通常能夠提高幀速率。Tribe 2 是這種弊病的另外一個(gè)受害者。關(guān)閉3D聲音選項(xiàng)則你的幀速率立即好轉(zhuǎn),這在你考慮Tribes世界有多大和你能看見多遠(yuǎn)時(shí)有意義。

  接著是聲音物質(zhì)的特征。大部分聲卡可以讓你能夠用可定義的過濾器作用于聲音從而修正播放的聲音。例如,在水下,或者在一個(gè)布料遮蓋的房間中,或者在一個(gè)長(zhǎng)的走廊中,或者在歌劇院,聽到的聲音有著很大的不同。能夠根據(jù)你所處的環(huán)境改變你聽到聲音的方式是相當(dāng)不錯(cuò)的。

  我們回到Eagle… 這是一個(gè)編輯器,允許多數(shù)第一人稱射擊游戲地圖設(shè)計(jì)者將他們的地圖導(dǎo)入到這個(gè)工具,然后構(gòu)造簡(jiǎn)化的幾何形體來(lái)為實(shí)際游戲引擎中的EAX代碼產(chǎn)生一個(gè)聲音地圖。其思想是你不需要一個(gè)真實(shí)的圖形地圖的復(fù)雜幾何形體來(lái)模擬聲音環(huán)境。你也能夠給產(chǎn)生的簡(jiǎn)化地圖分配聲音物質(zhì),這樣聲音環(huán)境就能夠動(dòng)態(tài)地改變。我親眼目睹了這在Soldier of Fortune和Unreal Tournament上的示范,確實(shí)相當(dāng)引人注目。 我這在財(cái)富和 Unreal 巡回賽和它的軍人上真的對(duì)示范是證人相當(dāng)醒目. 當(dāng)你跳入水中時(shí),聽到所有的聲音改變,這是一個(gè)非常令人沉浸的經(jīng)歷。

  好,讓我們繼續(xù)吧。

  對(duì)于游戲機(jī),由于靜態(tài)的硬件,你的各種可能性會(huì)更受限制 — 盡管在PlayStation 2和Xbox上,硬件相當(dāng)不錯(cuò)。我說的限制,僅僅是指擴(kuò)展,而不是它所能夠做的。我一點(diǎn)也不會(huì)感到驚訝看到這些游戲機(jī)上的游戲很快支持杜比數(shù)字5.1(Dolby Digital 5.1)輸出。Xbox ,由于它的 MCP 音頻處理器,能夠?qū)⑷魏斡螒蛞纛l編碼為5.1,并且游戲不需要特別編碼就能利用這個(gè)特征。杜比(Dolby)把ProLogic II 帶到了 PS2 上,并與Factor 5合作為GameCube游戲?qū)崿F(xiàn)了ProLogic II。在 Xbox 之上,Halo, Madden 2002 和 Project Gotham Racing等游戲都有5.1杜比數(shù)字音頻內(nèi)容。DTS最近也為 PS2 游戲開發(fā)者發(fā)布了SDK,為這個(gè)平臺(tái)上的游戲帶來(lái)了降低了比特率的DTS音頻版本。


位置的聲音--一個(gè)復(fù)雜的世界
  現(xiàn)在有一些很少有處理的聲音空間化問題。我說的是把聲音放在一個(gè)真實(shí)的3D世界中。有四個(gè)揚(yáng)聲器在你周圍是一個(gè)很棒的開始,但這仍然只是在二維方向。在你的上方和下方?jīng)]有揚(yáng)聲器,你沒有真正獲得3D聲音。有一些聲音調(diào)制過濾器試圖解決這個(gè)問題,但實(shí)際上沒有真實(shí)東西的代替物。當(dāng)然真實(shí)地大多數(shù)游戲多半只是在二維方向上,因此這仍然不是太大的問題。

  實(shí)際上任何聲音系統(tǒng)最重要的特征之一是把聲音混合在一起。根據(jù)你所處的位置,空間中聲音的位置,每個(gè)聲音的音量大小,一旦你決定了實(shí)際上你能夠聽到的聲音,然后你必須混合這些聲音。通常聲音卡自己處理這些,這首先是聲音卡存在的主要原因。然而,外面有一些引擎決定首先用軟件做一次‘預(yù)混合’。直到你著眼于一點(diǎn)點(diǎn)歷史以前,這并沒有真正地帶來(lái)多大的意義。

  當(dāng)聲音卡最初問世的時(shí)候,有許多不同的混合方法。一些聲卡可以混合8種聲音,一些單位16種,一些32種,等等。 如果你總想聽到16種可能的聲音,但你不知道聲音卡是否能夠處理,那么你回到了嘗試和試驗(yàn)的道路上 — 就是你自己用軟件混合。這實(shí)際上是Quake III聲音系統(tǒng)的工作方式,但提一個(gè)問題:"Quake III是為A3D和Sound Blaster Live!聲卡世界發(fā)布的,這比以前更加標(biāo)準(zhǔn)化,為什么還這樣做?" 這是個(gè)好問題。實(shí)際上Quake III的聲音系統(tǒng)幾乎每行代碼都和Quake II中的聲音系統(tǒng)一樣。而且Quake I,甚至Doom也是這樣。你想一想,向上直到 A3D 聲卡和 SB Live! 聲卡,許多年來(lái)聲音系統(tǒng)的需求沒有真正地改變過。兩個(gè)揚(yáng)聲器,二維方向,音量簡(jiǎn)單地隨著距離減小。從Doom一直到Quake III沒有發(fā)生太大變化。而且在游戲行業(yè)中,如果不是迫不得已,別理會(huì)它。

  通常你會(huì)僅僅使用DirectSound為你做聲音混合,因?yàn)樗鼤?huì)可以使用的聲音硬件,或者轉(zhuǎn)而依靠軟件,很多地方就像DirectX為3D顯示卡所做的一樣。在 90% 的聲音情形中,依靠軟件混合對(duì)你的幀速率沒有真正發(fā)生太多不同。當(dāng)DirectSound在一些狂熱的編碼者眼中甚至還不是一絲光線時(shí),Doom引擎就已經(jīng)產(chǎn)生了。它從來(lái)沒有得到更新過,因?yàn)樗鼜膩?lái)就沒有真的需要更新。

  當(dāng)然,你可以使用 SoundBlaster Live!聲卡的一些聰明特征,例如房間的回聲特性: 一塊石窟,或一個(gè)禮堂,一個(gè)巨穴, 一個(gè)足球體育館等。而且你真的應(yīng)該使用由硬件提供的混合器,畢竟,那是它存在的目的。這種方法的一個(gè)不足之處是程序本身時(shí)常無(wú)法獲得混合結(jié)果,因?yàn)榛旌鲜窃诼暱▋?nèi)部完成而不是在主存。如果由于某種原因你需要看到產(chǎn)生的音量,你是運(yùn)氣不好。


Music Tracks in Games(游戲中的音軌)
  我們沒有過多的談到游戲中的音樂生成。傳統(tǒng)的有兩種方法,一種是簡(jiǎn)單的音樂 .wav 文件(或同等物)。它被預(yù)先制作做好,準(zhǔn)備運(yùn)行,和最小忙亂。然而,這些在內(nèi)存和回放時(shí)間方面很昂貴。第二種方式用預(yù)設(shè)的樣本編碼MIDI音軌。這時(shí)常比較節(jié)省內(nèi)存,但缺點(diǎn)是必須同時(shí)把一些聲音混合在一起,因而會(huì)把聲音通道用光。

  動(dòng)態(tài)音樂就是根據(jù)在游戲中目睹的行動(dòng)改變你的音樂的能力,比如探險(xiǎn)用慢節(jié)奏的音樂,戰(zhàn)斗用快節(jié)奏的音樂。預(yù)先制作的音樂的一個(gè)困難之處是要合拍,因此你可以從一段音樂漸弱到另一段音樂,這對(duì)于MIDI音軌比較容易。盡管時(shí)常你足夠快速地淡出,或者一段音樂在播放另一段音樂之前已經(jīng)消失了,你能僥幸不被察覺。

  在我們離開這個(gè)主題之前,順便說一下,值得一提的是存在一些公司專門為你的游戲創(chuàng)作特定意義的音樂。FatMan(www.fatman.com) 就是一家這樣的公司。音樂可能比其他別的東西更加容易外包,這是他們存在的方式。

  最后,游戲現(xiàn)在的事情自然是MP3格式,允許巨大的11 :1的聲音樣本壓縮,然而在送到聲音卡之前只花費(fèi)CPU很少的時(shí)間解壓縮。當(dāng)我在Rave Software工作時(shí),在Star Trek Voyager: Elite Force 中,我們?cè)O(shè)法用MP3在一張CD上面完全支持三種語(yǔ)言,仍然為較多的圖形留有空間。主要地,我們 MP3 只用于非玩家角色(NPC)的語(yǔ)音,由于游戲的全部音頻效果MP3流和動(dòng)態(tài)解壓縮超出了硬件的處理能力,雖然在將來(lái)這是肯定可能的。比較新的格式,如來(lái)自 Dolby 的 AAC 和來(lái)自微軟的WMA,以將近兩倍MP3的壓縮率提供了相等或者更高的音頻質(zhì)量(實(shí)際上一半的比特率),可能應(yīng)用到將來(lái)的游戲中。

  以上是這一章節(jié)的內(nèi)容,下面將是網(wǎng)絡(luò)和連線游戲環(huán)境的開發(fā)。 


標(biāo)簽:游戲引擎剖析(6)