日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

游戲引擎全剖析(四)

 太陽(yáng)早 2008-01-15
 
人工智能(AI)
   我們上面已經(jīng)用了其他九個(gè)章節(jié)介紹了游戲引擎,現(xiàn)在讓我們深入到非常有趣和重要的人工智能主題。人工智能如今正在變成被談?wù)摰米疃嗟膬H次于游戲引擎渲染能力的游戲開(kāi)發(fā)領(lǐng)域之一,確實(shí)如此。直到大約兩年半以前,游戲似乎主要是在考慮你能夠渲染多少個(gè)多邊形,眼睛是多么的漂亮,和… 好…勞拉的胸部是多么的有彈性...既然我們現(xiàn)在已經(jīng)能夠渲染出非常真實(shí)的乳房,中心就開(kāi)始轉(zhuǎn)移到我們實(shí)際上用那些多邊形做什么了(即玩游戲)。因?yàn)樗o你提供實(shí)際玩游戲的刺激作用和參與游戲世界中正在進(jìn)行的事情,所以人工智能在這個(gè)領(lǐng)域非常關(guān)鍵。

   人工智能包括了全部的東西,從在Tetris中決定哪一塊新磚頭掉落(這很大程度上知識(shí)一個(gè)隨即數(shù)產(chǎn)生器), 一直到創(chuàng)造基于小組的策略游戲,這些游戲和你交互,并且實(shí)際上在你玩的時(shí)候向你學(xué)習(xí)。人工智能包含了許多規(guī)則,如果你(作為一個(gè)游戲開(kāi)發(fā)者)沒(méi)有花費(fèi)足夠多的時(shí)間讓它正確地工作,它會(huì)反過(guò)來(lái)在你屁股上咬一口。所以讓我們談?wù)撘恍┠男┮?guī)則?這樣你能更好地理解人工智能系統(tǒng)會(huì)確實(shí)是多么的復(fù)雜。為了避免法律上的糾紛,我們將使用一個(gè)假設(shè)的游戲而不是一個(gè)真實(shí)的游戲作為例子。

   假設(shè)我們的游戲中有壞份子生活在3D世界中,干著他們的事情,而且如果你打攪了他們的正常次序他們就會(huì)反抗你(玩家)。你必須決定的第一件事情就是他們正在從事的到底是什么事情呢?他們正在守衛(wèi)什么東西嗎?在巡查?在計(jì)劃一個(gè)聚會(huì)?在購(gòu)買(mǎi)食品雜貨?在整理床鋪?建立行為的基線是游戲開(kāi)發(fā)者的工作之一。一旦有了這個(gè),你就總有NPC(非玩家角色)或計(jì)算機(jī)控制的‘人’能夠恢復(fù)去做的事情,玩家與他們的交互就應(yīng)當(dāng)能被完成。

   一旦我們知道一個(gè)NPC角色需要做什么 — 比如它在守衛(wèi)一扇門(mén),并且在這個(gè)區(qū)域小巡邏,NPC也必須有‘世界意識(shí)’。游戲設(shè)計(jì)者需要決定NPC的人工智能將如何看見(jiàn)世界,和它的知識(shí)范圍。你將會(huì)僅僅說(shuō)“計(jì)算機(jī)知道正在進(jìn)行的每件事情” 嗎?這通常被認(rèn)為是一件糟糕的事情,因?yàn)榉浅C黠@計(jì)算機(jī)能夠看見(jiàn)和聽(tīng)見(jiàn)你不能看見(jiàn)和聽(tīng)見(jiàn)的事情,這被當(dāng)成是在作弊。不是一種有趣的經(jīng)歷。或者你將模擬他的視野,這樣他只能夠?qū)λ芸匆?jiàn)的事物作出反應(yīng)嗎?當(dāng)有墻壁出現(xiàn)時(shí)這里就有問(wèn)題了,因?yàn)槟汩_(kāi)始進(jìn)入那些我在第九部分提到的‘追蹤’例程,看看NPC是否試圖對(duì)被墻壁擋住的人作出反應(yīng)。這是一個(gè)很明顯的人工智能問(wèn)題,但是當(dāng)涉及到門(mén)和窗戶時(shí),這個(gè)甚至變得更加復(fù)雜了。

   當(dāng)你開(kāi)始為AI刺激例程增加聽(tīng)覺(jué)意識(shí)時(shí),這依然變得更加復(fù)雜了。但是,這個(gè)意識(shí)是那些關(guān)鍵的“小事情”之一,這些使得假想的游戲世界似乎更加真實(shí),或者能夠去除懷疑的懸念。如果你碰到過(guò)這樣的事情,請(qǐng)舉手:你在槍?xiě)?zhàn)中跟一個(gè)NPC交戰(zhàn),免除了一個(gè)NPC,你繞著角落行走并遇到了另外一個(gè)NPC依然保持他的缺省行為模式,沒(méi)有意識(shí)到剛剛發(fā)生的事情?,F(xiàn)在,槍是嘈雜的事物,槍?xiě)?zhàn)可能已經(jīng)明顯地提醒了一個(gè)“傾聽(tīng)”的NPC有些事情正在進(jìn)行。避免這種事情的技巧在于找到一個(gè)有效的方式來(lái)決定聲源(即你武器的發(fā)射)的距離是否足夠接近到NPC能夠聽(tīng)見(jiàn)。

   接下來(lái)就是決策例程。當(dāng)我們的巡邏NPC角色能夠聽(tīng)到但不能看見(jiàn)某物時(shí),你試圖實(shí)現(xiàn)什么樣的行為呢?他去尋找它嗎?不理睬它?你如何決定什么是重要的聲音他應(yīng)該去或者不去調(diào)查?如同你看見(jiàn)的一樣,這會(huì)很快變得非常的復(fù)雜。有很多方法來(lái)建造處理這些事情的代碼,但通常這樣是一個(gè)好主意,建立一個(gè)不是對(duì)特定的NPC而是對(duì)所有的NPC都起作用的系統(tǒng),該系統(tǒng)基于你能夠在游戲引擎以外的文本文件中建立的屬性。這樣就不需要程序員為一個(gè)給定的角色而改變AI,并且如果你對(duì)游戲代碼做了改動(dòng),它將立即自動(dòng)地應(yīng)用到所有的角色,這在大多數(shù)情況下是一件好事情。

   其他的世界意識(shí)問(wèn)題會(huì)冒出來(lái),比如這樣的情形,兩個(gè)守衛(wèi)彼此緊挨著站立,你用狙擊武器干掉了一個(gè),而另外一個(gè)站在哪兒完全不知已經(jīng)發(fā)生的事情。再者,遵守真實(shí)世界行為的細(xì)節(jié)是一款好游戲和一款偉大游戲的之間的區(qū)別。

   讓我們說(shuō)你已經(jīng)把所有的刺激-響應(yīng)部分準(zhǔn)備好了—你已經(jīng)掃描了世界,決定NPC應(yīng)當(dāng)對(duì)正在進(jìn)行的一些事情作出反應(yīng)—他聽(tīng)到了玩家角色發(fā)出了聲響—并且你(游戲開(kāi)發(fā)者)決定了他應(yīng)當(dāng)對(duì)這個(gè)做些什么—他將去調(diào)查?,F(xiàn)在更加復(fù)雜的事情來(lái)了。他如何離開(kāi)現(xiàn)在的位置,到達(dá)他認(rèn)為發(fā)出聲音的地方,而不會(huì)想通常的數(shù)字傻瓜一樣跑到墻壁里面,碰到家具呢?繼續(xù)往下看…


有關(guān)正確的路徑 --- 世界導(dǎo)航
   快速,準(zhǔn)確的世界導(dǎo)航( 也叫做路徑-發(fā)現(xiàn)) 近來(lái)已經(jīng)成為游戲開(kāi)發(fā)者的圣杯。 讓它看起來(lái)非常信服是一件非常困難的事情。你需要有局部世界的地理知識(shí)—墻壁的位置,臺(tái)階,懸崖和建筑物等的邊緣。你也需要世界中的對(duì)象的知識(shí)—比如家具,汽車(chē),尤其是其他人的位置。真正最后的因素是問(wèn)題所在,一會(huì)兒我們將回到這一點(diǎn)上。

   世界導(dǎo)航通常被分為兩個(gè)領(lǐng)域,世界導(dǎo)航和局部導(dǎo)航。二者實(shí)際上只是范圍上的區(qū)別,但大多數(shù)的程序員分別對(duì)待它們,因?yàn)檫@樣處理起來(lái)容易一些。世界導(dǎo)航例程處理理解房間,門(mén)和一般的地理學(xué),并計(jì)算出讓玩家或者角色從世界中的A點(diǎn)到達(dá)B點(diǎn)的一條路徑。“它將讓你從A點(diǎn)到達(dá)B點(diǎn)”,這是一句很容易說(shuō)的話,不是嗎?說(shuō)起來(lái)容易,但做起來(lái)很困難。理解世界是一個(gè)非常復(fù)雜問(wèn)題,我已經(jīng)看到過(guò)許多嘗試過(guò)的解決辦法。QuakeIII的機(jī)器人遵照建造的預(yù)先處理過(guò)的地圖,一般的說(shuō)法,使用原來(lái)地圖的地面。預(yù)處理器檢測(cè)地面元素,由地圖建造者作上標(biāo)記,并自己建造一個(gè)只使用地面的世界簡(jiǎn)化地圖。機(jī)器人并不關(guān)心墻壁,因?yàn)樗麄儚牟唤咏鼈?,就像他們遵照地面的地圖一樣,設(shè)計(jì)上已經(jīng)把避免墻壁構(gòu)造在里面了。

   其他方法在地圖本身里面建造一些小的結(jié)點(diǎn),AI可以追隨它們。這些結(jié)點(diǎn)通常被建造在彼此的視線里面,有從一個(gè)結(jié)點(diǎn)到其他所有結(jié)點(diǎn)的連接,角色AI能夠直接‘看見(jiàn)’,所以你就確保了從一個(gè)結(jié)點(diǎn)移動(dòng)到另外一個(gè)結(jié)點(diǎn)時(shí)AI不會(huì)試圖穿越墻壁。如果有門(mén)或者降落物,你能夠事先用這些結(jié)點(diǎn)對(duì)路徑的信息編碼,于是NPC能夠采用適當(dāng)?shù)男袨椤群螂娞?,打開(kāi)一扇門(mén),或者從一點(diǎn)跳到另外一點(diǎn)。這實(shí)際上是HereticII使用的系統(tǒng),也是Raven在他們其他的大多數(shù)游戲中使用的系統(tǒng)。

   關(guān)于這個(gè)主題,3D Realms的Jess Crable,現(xiàn)在為Duke Nukem Forever工作,如是說(shuō):

   "導(dǎo)航在許多方面是個(gè)巨大的挑戰(zhàn),主要是當(dāng)游戲中有大量正在發(fā)生的事情和一些非計(jì)劃性的東西,比如障礙。為了避免和(或)真實(shí)地對(duì)非計(jì)劃性的障礙物導(dǎo)航(例如像另外的AI),AI需要很好地知道正在它周?chē)l(fā)生的事情。比較而言另外一個(gè)巨大的挑戰(zhàn)就是真實(shí)感。如果AI正在表現(xiàn)玩家在實(shí)際生活中看到的一些東西,比如說(shuō)一個(gè)人,或者一條狗, 那么讓它看上去真實(shí)可信就更加困難。"

   然后就是局部導(dǎo)航。我們可能有一條路徑讓我們的 NPC 從他在世界中的位置,移動(dòng)到他認(rèn)為聽(tīng)到聲音的地方,但你不能盲目地按照這個(gè)執(zhí)行并期望得到看起來(lái)不錯(cuò)的結(jié)果。這種性質(zhì)的路徑傾向于非常特定于一個(gè)給定的目的。當(dāng)你沿著走廊從一個(gè)房間跑到另外一個(gè)房間時(shí),它很好,但如果你試圖指導(dǎo)他穿越一個(gè)巨大的房間時(shí),路徑結(jié)點(diǎn)方法容易最終得到一些看起來(lái)很奇怪的發(fā)現(xiàn)路徑。這些路徑也不是動(dòng)態(tài)的。因?yàn)樗麄儽活A(yù)先建造,他們不容易考慮到世界的任何動(dòng)態(tài)變化。桌子可能有被移動(dòng)過(guò)了,椅子被破壞了,墻壁被摧殘,當(dāng)然,人們會(huì)移動(dòng)。這就是局部導(dǎo)航不同于世界導(dǎo)航的地方。它必須考慮局部世界并導(dǎo)航NPC在里面穿越。它必須知道周?chē)沫h(huán)境,存在哪些可以選擇的路徑,并決定選擇哪一條。

   在局部導(dǎo)航中最大的問(wèn)題是其他的NPC。給定一個(gè)發(fā)現(xiàn)路徑的具體例程,如果你在相同的一般區(qū)域中有不止一個(gè)NPC,他們都試圖到達(dá)世界的同一地點(diǎn),結(jié)果是他們都非常容易有相同的路徑。然后他們?cè)噲D沿著這個(gè)路徑行進(jìn),結(jié)果彼此遇到一起,然后花費(fèi)他們所有的時(shí)間試圖將彼此分開(kāi),并且一旦成功地分開(kāi)了,他們?cè)俅卧噲D到達(dá)目標(biāo),然后我們又再次看到同樣的事情發(fā)生。這一切看起來(lái)都是非常的愚蠢,這不是大多數(shù)人想要的效果。所以需要一些路徑發(fā)現(xiàn)中的變化來(lái)避免這種情形,需要一些妥善處理避免的代碼。有大量能夠幫助解決這種情形的算法。


人工智能和角色動(dòng)畫(huà)問(wèn)題
   當(dāng)然,當(dāng)角色自己在世界中行走時(shí)你必須完全地決定你想要角色播放什么動(dòng)畫(huà)。聽(tīng)起來(lái)無(wú)足輕重?不是的。關(guān)于這個(gè)主題,Raven的 Chris Reed—Soldier of FortuneII使用名為L(zhǎng)ICH的AI系統(tǒng)的現(xiàn)在的負(fù)責(zé)人—如是說(shuō):

   "此刻我能告訴你,我們?cè)谄交苿?dòng)上正有著最大的困難。在一個(gè)多丘陵的長(zhǎng)滿草的叢林中試圖讓五個(gè)角色在彼此附近行走是一個(gè)非常困難的問(wèn)題。讓底層系統(tǒng)完美是重要的,因?yàn)槌墙巧谳^低層次上(避免墻壁,適當(dāng)?shù)膭?dòng)畫(huà))看起來(lái)真實(shí),他們不能夠有效地表達(dá)任何較高層次決定的智能。由于這個(gè)單獨(dú)的原因,動(dòng)畫(huà)和底層的移動(dòng)是最重要的和最難實(shí)現(xiàn)的。它確實(shí)需要完美。"

   因此我們已經(jīng)讓我們的角色從A點(diǎn)到達(dá)了B點(diǎn),他自己穿越世界,在途中避免障礙物,正確播放動(dòng)畫(huà),現(xiàn)在到達(dá)了這里。他看見(jiàn)了你。接下來(lái)做什么呢?很明顯更多的是作出決策。他將向你射擊。太棒了。你回應(yīng)射擊?,F(xiàn)在干什么?當(dāng)他試著逃走的時(shí)候,現(xiàn)在你再次經(jīng)歷全部同樣的事情。

   為了讓這些情形看起來(lái)令人信服,你看見(jiàn)了這里必須要處理的大量問(wèn)題。如果你建立你的AI使用沒(méi)有動(dòng)畫(huà)的行為讓NPC執(zhí)行,這能被混合。一些Soldier of Fortune中的AI就是這樣的例子。他們受到了指責(zé),因?yàn)閴募一餂](méi)有以適當(dāng)?shù)姆绞綄?duì)刺激作出反應(yīng)。當(dāng)他們明顯應(yīng)該這樣做的時(shí)候,敵方NPC不掃射,或者不逃跑。部分問(wèn)題是他們沒(méi)有掃射敵人NPC的動(dòng)畫(huà),或者讓他們往回跑,因?yàn)榭臻g的問(wèn)題。因此世界上所有最偉大的AI代碼都不能夠解決這個(gè)問(wèn)題。這是所有要考慮的重要事情。

   想知道隱藏的難點(diǎn)嗎?看看我前面所有的描述,然后試著將它應(yīng)用到一組NPC上,這些NPC彼此必須說(shuō)話,設(shè)定目標(biāo),彼此溝通,但不妨礙彼此的方式。一旦你這么做了,試試那些代碼,作為玩家的隊(duì)友做上面所描述的這些,然而不要在槍?xiě)?zhàn)中妨礙他?,F(xiàn)在這是復(fù)雜的。然后這成為樂(lè)趣。這是最困難的部分。Raven的 Chris Reed關(guān)于AI‘感覺(jué)’的一些評(píng)論:

   "我認(rèn)為反饋是AI的一個(gè)極大的問(wèn)題。如果角色對(duì)于他周?chē)h(huán)境的變化不產(chǎn)生反應(yīng),游戲的真實(shí)感就被完全打破了。這有許多明顯的例子(聽(tīng)見(jiàn)槍炮聲,看見(jiàn)同伴被擊中...),以及一些更加微妙的事情(當(dāng)兩個(gè)人通過(guò)門(mén)廳時(shí)看著彼此并點(diǎn)頭致意)。玩家是樂(lè)意接受一些生硬和可預(yù)測(cè)性的,但是這些事物容易把游戲帶到現(xiàn)實(shí)生活。"

   并且Jess Crable 贊同:

   "平衡是非常重要的… 對(duì)玩家將會(huì)有多大的樂(lè)趣至關(guān)重要,但還有其他的問(wèn)題要平衡。游戲玩家時(shí)常說(shuō)他們想在游戲中看見(jiàn)更加真實(shí)的人工智能。然而,太多的真實(shí)感開(kāi)始把樂(lè)趣帶走。在這兩者之間必須要有一個(gè)好的平衡。變化和隨機(jī)同樣也很重要—行為的變化,和保持在可信范圍內(nèi)的一定程度的不可預(yù)測(cè)性。"


游戲規(guī)則與自然發(fā)生的游戲
   在我們關(guān)于AI的所有描述中,我們采用的是FPS的方式。有不止一種的AI。我們已經(jīng)描述的是處理3D世界一組規(guī)則。AI遠(yuǎn)遠(yuǎn)不止這些。時(shí)常最好的AI實(shí)際上非常的簡(jiǎn)單。它就是一組規(guī)則,玩家必須響應(yīng)和處理的響應(yīng)(或開(kāi)始)動(dòng)作的規(guī)則。

   這里應(yīng)當(dāng)處理一個(gè)被稱(chēng)為“自然發(fā)生的游戲”的專(zhuān)業(yè)術(shù)語(yǔ)。 自然發(fā)生的游戲本質(zhì)上創(chuàng)造游戲?qū)⒆袷氐囊?guī)則,那將會(huì)造成游戲程序員不能預(yù)見(jiàn)的情形。

   舉例來(lái)說(shuō),象棋能被認(rèn)為是自然發(fā)生的游戲。有一組規(guī)則,但游戲能夠陷入各種程序員不能夠以個(gè)別方式處理的情形。你不能為每一種可能的棋局情形編碼規(guī)則。很清楚,游戲玩家每次不會(huì)總是面臨相同的游戲情景。一定程度上,進(jìn)行中的游戲情形會(huì)根據(jù)他的行動(dòng)而發(fā)生變化。Black and White是這種情形的一個(gè)完美的例子,和The Sims一樣—游戲有它自己的規(guī)則,但你如何運(yùn)用和調(diào)和他們是你自己的事情。實(shí)際上,你在玩游戲的過(guò)程中創(chuàng)造著游戲,而不是照著游戲設(shè)計(jì)者/程序員已經(jīng)為你定義的路線進(jìn)行。

   有可能把基于規(guī)則的,自然發(fā)生的游戲方式和FPS環(huán)境混合在一起。Half Life中的一些海軍陸戰(zhàn)隊(duì)士兵的行為就是這樣做的—壓制火力和側(cè)翼攻擊從設(shè)定的規(guī)則中動(dòng)態(tài)完成。它看起來(lái)是動(dòng)態(tài)的,而且一定程度上它是這樣。然而,在FPS世界中僅僅有一組規(guī)則時(shí)常是不夠的。幾何和其他AI時(shí)常能夠打敗簡(jiǎn)單的規(guī)則,這讓保持正確并依然有趣變得更加困難。所以對(duì)那些可憐的AI程序員有一些同情心吧。他們的工作不容易。


   好吧,下面還有一個(gè)章節(jié),僅僅還剩下一個(gè)章節(jié)了。在最后的章節(jié)里,我們將討論頭頂顯示,菜單系統(tǒng),游戲定制和配置,游戲引擎版權(quán)與建造,最后是游戲“mods”。










第11部份: 最后的章節(jié)


前端
   你已經(jīng)看到了菜單系統(tǒng),你可能理解游戲內(nèi)的頭頂顯示(HUDs)時(shí)常是游戲經(jīng)歷中被忽視和誹謗的部分。最近,這個(gè)領(lǐng)域開(kāi)始被給人印象非常深刻的Black and White所關(guān)注,這款游戲?qū)嶋H上沒(méi)有HUD。在Peter Molyneux經(jīng)歷了Dungeon Keeper以后,它在屏幕上大量的圖標(biāo),他決定游戲的大部分被這些圖標(biāo)占用了,主要的屏幕沒(méi)有被足夠利用。因此他決定廢除所有這些東西。Peter邁了大膽的一步,我們?yōu)槟愫炔?。很不幸,這種方式適用于B&W這類(lèi)風(fēng)格的游戲,但它并不總是對(duì)其他種類(lèi)的游戲有用。

   大體而言HUDs應(yīng)該是不引人注意的,只提供你需要的關(guān)鍵信息;這本身會(huì)在設(shè)計(jì)團(tuán)隊(duì)中引發(fā)爭(zhēng)議。Soldier of Fortune的最初設(shè)計(jì)在屏幕上有一個(gè)圖標(biāo),當(dāng)被擊中時(shí)向你準(zhǔn)確顯示身體的哪個(gè)部位被擊中。當(dāng)他們決定他們不準(zhǔn)備為不同身體部位的傷害而處罰玩家時(shí),最后這個(gè)被丟棄了。在一些早期的Soldier of Fortune的屏幕截圖上,依然能夠在屏幕的右上角看見(jiàn)這個(gè)圖標(biāo)。

   在一個(gè)完美的世界中HUD是可配置的,因此你能決定顯示什么,在哪里顯示,顯示多久。如果你覺(jué)得不需要局部雷達(dá),那么它應(yīng)當(dāng)可以被移除掉。任何顯示的HUD信息應(yīng)當(dāng)有一定程度的alpha(透明度),因此如果需要你能透過(guò)它們看見(jiàn)后面的事物。

   說(shuō)到配置,我是一個(gè)游戲個(gè)人設(shè)定的十足的狂熱者。因?yàn)闆](méi)有即時(shí)存儲(chǔ)設(shè)備存儲(chǔ)配置文件,在游戲機(jī)游戲上不是廣泛地可以獲得配置,這足夠公平。但是隨著PS2和Xbox硬盤(pán)驅(qū)動(dòng)器的來(lái)臨,我期待在將來(lái)看見(jiàn)配置被更多地使用。能夠被定制的每件事物都應(yīng)當(dāng)這樣,如同我看見(jiàn)的一樣。很明顯,也應(yīng)當(dāng)為每件事物提供合理的缺省配置,因此玩家不必一屏一屏地進(jìn)行枯燥的選擇過(guò)程---一會(huì)兒我們將更多地討論這個(gè)---玩家應(yīng)當(dāng)能夠根據(jù)個(gè)人的喜好和可獲得的計(jì)算能力定制游戲經(jīng)歷。

   回到缺省事物,保持必需的修改最小化非常重要。作出最少的決定而快速進(jìn)入游戲總是一件好事情。Mortal Kombat,甚至QuakeIII都有一個(gè)非??焖俚挠螒蜻M(jìn)入系統(tǒng)。少許選擇,然后你就進(jìn)入游戲了。這并不意味著你不能有一個(gè)接一個(gè)的菜單允許你改變每件事物,但它們不應(yīng)當(dāng)是必需的且應(yīng)當(dāng)已經(jīng)有合理的缺省設(shè)置了。如果甚至在你進(jìn)入游戲以前你必須用14個(gè)屏幕設(shè)置一個(gè)角色,可能是第一次你可能沒(méi)有關(guān)于你正在選擇的線索而且僅僅會(huì)做任何事情以通過(guò)屏幕,可能做了一些會(huì)極大影響初始游戲體驗(yàn)的事情。而且有可能它將會(huì)是不利的影響,作為一個(gè)游戲程序員/設(shè)計(jì)者,我在這里告訴你無(wú)論你做任何事情,讓玩家第一次選擇一些愚蠢的事物,無(wú)需讓它更糟糕你就會(huì)有足夠的機(jī)會(huì)制造很差的第一印象。

   藉由關(guān)于配置和HUDs(連同前面十個(gè)章節(jié)的大量信息)的簡(jiǎn)要論述,我們最終結(jié)束了關(guān)于現(xiàn)代游戲引擎的主要建造元素的討論。當(dāng)然,依賴于游戲的類(lèi)型和誰(shuí)在制作它們,每個(gè)特定的游戲?qū)@個(gè)清單有它自己的添加(或者減少)。然而,有一些對(duì)于游戲引擎實(shí)際上不是引擎設(shè)計(jì)部分的其他元素,但是它們卻需要一些關(guān)注。


游戲引擎許可與組件
   如今如果你要制作一款游戲,時(shí)常最快的開(kāi)始方式就是購(gòu)買(mǎi)現(xiàn)有的游戲引擎許可證并在此基礎(chǔ)上開(kāi)發(fā)---這就是Raven所做的事情,最近使用Quake3引擎編寫(xiě)了Star Trek Elite Force。Half Life基于Quake 1引擎,Deus Ex基于Unreal,這個(gè)清單還在繼續(xù)。如今有兩種許可證方式---一個(gè)完全的游戲引擎(或游戲操作系統(tǒng)如Jason Hall授予LithTech),或者一組給定問(wèn)題的部分解決方案。這方面一個(gè)好的例子會(huì)是RenderWare,這是一個(gè)渲染場(chǎng)景的部分解決方案并給你提供一些物理。你不能僅僅拍著一些模型并把它們稱(chēng)為完成了的游戲---還需要有聲音系統(tǒng),游戲機(jī)制,等等。但它確實(shí)給了你一個(gè)建立游戲的堅(jiān)實(shí)基礎(chǔ)。還記得我在渲染和物理學(xué)章節(jié)提到的所有數(shù)學(xué)知識(shí)嗎?很好,這樣你就避免了所有那些東西。

   藉由LithTech,Unreal和Quake,你確實(shí)得到了完全的解決方案 -- 或至少是創(chuàng)始者為他們的游戲所需要的全部解決方案。記住QuakeIII是可以多人玩的,不時(shí)建立在單人游戲的基礎(chǔ)之上的比如說(shuō)Unreal Tournament。使用QuakeIII,你失去了單人游戲需用的某些系統(tǒng),像讀取/存儲(chǔ),腳本等等。你只是的到了Id公司制作一款游戲需要的東西,而不一定就是你所需要的東西。有時(shí)侯如果系統(tǒng)的一個(gè)局限恰好是你所需要的東西時(shí),這可能是一個(gè)真正的缺點(diǎn)。給Star Trek Voyager加入讀取/存儲(chǔ)和腳本:Elite Force不是野餐,但是必須的。然而,使用Quake3引擎依然是領(lǐng)先的開(kāi)端。

   Unreal有名的Tim Sweeney 對(duì)于今天一些流行的預(yù)先打包的游戲引擎解決方案有一些評(píng)論。

   "我認(rèn)為我能公平地比較游戲引擎 (Quake,Unreal等) 和游戲組件如 RenderWare 和 Karma。游戲引擎是包含游戲開(kāi)發(fā)的所有技術(shù)方面的組織嚴(yán)密的框架:渲染,編輯工具,物理學(xué),人工智能,網(wǎng)絡(luò),等等。

   它們針對(duì)那些想要一個(gè)完全的,現(xiàn)成的解決方案的開(kāi)發(fā)者,以便他們能夠把精力集中在游戲可玩性和內(nèi)容上。像RenderWare這樣的游戲組件針對(duì)那些正在開(kāi)發(fā)他們自己的技術(shù)但不想在一些已經(jīng)很完善的技術(shù)領(lǐng)域做重復(fù)開(kāi)發(fā)的開(kāi)發(fā)者。

   游戲引擎有解決游戲開(kāi)發(fā)中全部技術(shù)問(wèn)題的優(yōu)點(diǎn),有容易把一些包括游戲類(lèi)型的假設(shè)建立在里面的缺點(diǎn)。舉例來(lái)說(shuō),Unreal已經(jīng)被用來(lái)制作第一人稱(chēng)射擊游戲,第三人稱(chēng)動(dòng)作游戲,角色扮演游戲,甚至彈球游戲。但是沒(méi)有人用它制作飛行模擬類(lèi)游戲—它不是適合這種游戲的技術(shù)。游戲引擎帶著完整的源代碼而來(lái),這是祝福 ( 你能完全看見(jiàn)內(nèi)部正在發(fā)生什么,你可以自由地根據(jù)你的需要擴(kuò)充它),也是詛咒 (如果你改變它,你將必須把變化合并進(jìn)新的版本之內(nèi))。

   游戲組件有解決所關(guān)注領(lǐng)域的技術(shù)問(wèn)題的優(yōu)點(diǎn),如渲染或者物理學(xué),不用花費(fèi)大量的時(shí)間在這方面就可以比典型的開(kāi)發(fā)者做得更好。他們的缺點(diǎn)是把這些組件整合進(jìn)你的引擎其余部分就是你自己的事情了,這有時(shí)候會(huì)相當(dāng)復(fù)雜。游戲組件一般沒(méi)有完整的源代碼伴隨,因此并不總是很清楚他們內(nèi)部做了些什么。"

   謝謝Tim,很精妙的分析。


建立你自己的游戲引擎?
   你可能建立自己的引擎而不是購(gòu)買(mǎi)許可證。這避免了誰(shuí)擁有什么,版稅等所有的法律糾紛,而且如果你產(chǎn)出了質(zhì)量足夠好的東西,你甚至能夠向別人出售許可證。然而,正如已經(jīng)指出的那樣,這需要時(shí)間和金錢(qián)來(lái)完成,更不用說(shuō)絕對(duì)優(yōu)秀的程序員了。LithTech 已經(jīng)發(fā)展了很多年,與Unreal類(lèi)似。很有趣,主要是因?yàn)樽兓挠布虯PI版本,實(shí)際上Unreal最初的版本花費(fèi)了四年時(shí)間才完成。當(dāng)他們剛開(kāi)始的時(shí)候,軟件渲染是唯一的游戲。當(dāng)開(kāi)發(fā)正在繼續(xù)的時(shí)候,3dfx帶來(lái)了Glide,然后是Nvidia的TNT顯卡(從那時(shí)起硬件和APIs確實(shí)有了更多的進(jìn)步)。這就是它為何支持這么多不同的渲染途徑的原因。當(dāng)然在一個(gè)相同的引擎內(nèi)支持所有這些是一場(chǎng)編碼惡夢(mèng),但那是另外的事。每個(gè)引擎有模塊化的方式, 并且當(dāng)一個(gè)模塊---比如說(shuō),腳本---變得過(guò)時(shí)了或者需求變化了,你只需要把它抽出來(lái)并開(kāi)始做一個(gè)新的模塊。

   Quake引擎經(jīng)歷時(shí)間有更加完整的進(jìn)化發(fā)展。相應(yīng)于Id公司下一個(gè)游戲的一組需求,當(dāng)John Carmack創(chuàng)造了在當(dāng)時(shí)的硬件上運(yùn)行最快的東西時(shí),引擎的每個(gè)版本都經(jīng)過(guò)了完全的重寫(xiě)。QuakeII完全重寫(xiě)了不少于四次,我個(gè)人看到了QuakeIII的機(jī)器人代碼的三個(gè)不同的版本。其他的開(kāi)發(fā)者也沒(méi)有能夠避免這種情形。John Scott,建造了Soldier of Fortune II的地表系統(tǒng),曾對(duì)我提到,在動(dòng)態(tài)地表生成上他曾嘗試了許多方法讓物理學(xué)正確地工作。

   建造技術(shù)或者完整的引擎不是件容易的事情。當(dāng)今的游戲引擎需要許多,許多的系統(tǒng),就如同許多人們嘗試創(chuàng)造‘下一個(gè)大的引擎’時(shí)所發(fā)現(xiàn)的那樣,從屏幕上文本的簡(jiǎn)單顯示到高級(jí)人工智能。并且如我前面提到的,不斷發(fā)展的新技術(shù)使得建造一個(gè)快速,高效的引擎是一個(gè)變化的目標(biāo)。事實(shí)上,我見(jiàn)到有人僅僅為了讓一個(gè)帶alpha的紋理正確地顯示而在PS2的混合模式上花了四天時(shí)間。

   值得考慮的其他引擎有Garage Games的Tribes 2引擎---被稱(chēng)為T(mén)he Torque Game Engine。我的理解是它可以收取微小數(shù)量的許可費(fèi)用,將來(lái)有一些版稅協(xié)議。這是的確值得考慮的事情。你可以在這里看到這個(gè)引擎的特征細(xì)節(jié)http://www./index.php?sec=mg&mod=v12&page=features 。 然后就是Serious Sam 引擎。這也是需要許可證的,的確值得看一看。如果你對(duì)它有興趣的話,可以聯(lián)系God Games---他們應(yīng)當(dāng)可以給你指明正確的方向。

   在網(wǎng)絡(luò)上有一些你可以下載的自由引擎---首先想到的是Crystal Space引擎。你可以從這里下載http:///projects/crystal ,并在你的游戲中隨意使用。這不是一個(gè)專(zhuān)業(yè)的引擎,但看看所有的部分如何結(jié)合在一起時(shí)常是一個(gè)好的學(xué)習(xí)經(jīng)歷。

   還有就是最初的Quake Engine,現(xiàn)在已經(jīng)被Id公司開(kāi)放源代碼。對(duì)于任何有抱負(fù)的游戲程序員來(lái)說(shuō)這是一個(gè)很好的開(kāi)端----下載它,編譯,開(kāi)始調(diào)整。值得記住的是,這個(gè)擎是許多年以前的了,與Quake III或者新的Doom沒(méi)有多少相似性。重復(fù)一遍,它確實(shí)是個(gè)好的開(kāi)始。你能從這里找到發(fā)現(xiàn)好的資源網(wǎng)頁(yè)http://www./qip/home.shtml

   確實(shí),這一切都是時(shí)間與金錢(qián)的事情。如果你沒(méi)有時(shí)間開(kāi)發(fā)一個(gè)新的引擎,就不要介意花錢(qián)使用第三方的引擎,去購(gòu)買(mǎi)一個(gè)吧。注意,對(duì)于要求使用他們引擎的團(tuán)隊(duì),如今大多數(shù)引擎許可團(tuán)體有很合理的途徑。盡可能地讓許多人們使用他們的技術(shù),因此這種經(jīng)驗(yàn)變成了工業(yè)標(biāo)準(zhǔn),這對(duì)他們有好處。


‘Mod’社區(qū)
   看一眼任何在線游戲服務(wù)器的統(tǒng)計(jì)數(shù)字,顯示出Counter Strike服務(wù)器比任何其他游戲服務(wù)器都要多。和它最近的競(jìng)爭(zhēng)者(Quake III或者Unreal Tournament)相比,幾乎有兩倍的CS服務(wù)器。

   游戲 mods 全部來(lái)自于一些編輯程序,這些程序讓游戲者能夠修改DOOM最初的.WAD文件,提供他們自己自家制造的關(guān)卡設(shè)計(jì)和紋理。人們開(kāi)始玩這些(大致)自家建造的工具,并且也發(fā)現(xiàn)了他們可以產(chǎn)生其他人想玩的關(guān)卡。Id注意了這個(gè)趨勢(shì),而且將Quake系列引擎帶到了一個(gè)新的階段,這樣設(shè)計(jì)游戲,使得游戲是用戶可修改的。他們甚至發(fā)布他們自己的設(shè)計(jì)工具,指令,而且甚至---喘口氣---游戲中的代碼,如此有抱負(fù)的游戲程序員可以在Quake Universe中玩。你可能從這個(gè)創(chuàng)造出自己版本的Quake連線經(jīng)歷。許多今天的業(yè)內(nèi)大師來(lái)自這種早期的修改經(jīng)驗(yàn)。現(xiàn)在有名的設(shè)計(jì)者如LevelLord和CliffyB在這個(gè)行業(yè)中就是這樣開(kāi)始的。最高的榮譽(yù)來(lái)自一位名叫ZOID的紳士,他提出了3Wave CTF,第一個(gè)‘奪取旗幟’的游戲,游戲中需要人們組隊(duì)---連線游戲從純粹的死亡競(jìng)賽以來(lái)的第一次進(jìn)化發(fā)展。

   一些游戲是如此的流行以致于他們每年都有事件發(fā)生。比如說(shuō),Quake有一個(gè)QuakeCon,在Mesquite Texas,Id軟件公司所在地,舉行的一年一次的quake大會(huì)。人們帶著他們的PC來(lái)到這里,或?yàn)榱丝醋钚碌膍ods或是展示的基于Quake引擎的游戲。

   如今你制作的任何游戲需要或者有殺人者可多人玩的經(jīng)驗(yàn),或者有可以非常容易修改的內(nèi)容這樣連線‘修改者’能利用你的游戲并制作出其他游戲來(lái)。這一切延長(zhǎng)了你游戲的生命,有希望賣(mài)出更多,人們購(gòu)買(mǎi)它,可以下載mods來(lái)玩最新的Quake III修改版本:The Teachers Strike Back。但你不能僅僅生產(chǎn)一款游戲,發(fā)布你的工具,就袖手旁觀。實(shí)際上你最初必須把代碼設(shè)計(jì)成不需要程序員就可以容易地?cái)U(kuò)充, …好吧, … John Carmack。

   作為一個(gè)開(kāi)發(fā)者,你需要在那里可以見(jiàn)得到,并為那些在家中想利用你的游戲和用它做點(diǎn)別的什么的人們提供經(jīng)驗(yàn)和幫助。這種支持可以有許多形式----一個(gè)親切友好的詞語(yǔ),一段代碼,建議,宣傳或只是金錢(qián)。只要有這個(gè)它時(shí)常不介意采用何種形式。

   在這里你選擇哪個(gè)第三方工具用來(lái)建造內(nèi)容可能是至關(guān)重要的。在Raven,過(guò)去我們已經(jīng)做了一些開(kāi)發(fā)決定,在這方面沒(méi)有什么幫助,由于我們?yōu)榇蠖鄶?shù)的建模和所有的動(dòng)畫(huà)需求使用了SoftImage。雖然它是制作我們需要的動(dòng)畫(huà)的最好工具,對(duì)于家庭業(yè)余愛(ài)好者來(lái)說(shuō)它太過(guò)昂貴了。這就給那些家庭業(yè)余愛(ài)好者在擴(kuò)充我們制作的內(nèi)容時(shí)帶來(lái)了問(wèn)題,因此他們?nèi)菀讙仐壩覀冝D(zhuǎn)而尋求那些比較容易制作內(nèi)容的游戲。在建造或者選擇一個(gè)引擎時(shí)這確實(shí)是值得留意的事情。為了響應(yīng)制作游戲mods,Discreet在市場(chǎng)上發(fā)布了一個(gè)3D Studio Max的‘lite’版本,稱(chēng)為gmax。最好的是,它是免費(fèi)的。如果你想要試一試,你能從這里抓取它http://www./products/gmax/gmaxconsumer/index.html 。

   最后在線游戲的成功時(shí)常能追蹤到 mod 社區(qū),因此我認(rèn)為感謝他們做了件好的工作是公平的。我過(guò)去時(shí)常說(shuō),在行業(yè)中到達(dá)一個(gè)‘真正的’工作最快的方式是從一個(gè)mod開(kāi)始,說(shuō)明你有完成它的訓(xùn)練并用它作為一個(gè)面試獲得者。不能說(shuō),"我能做這個(gè)" 就像已經(jīng)完成了一樣。因此去到那里并開(kāi)始吧。你損失什么了嗎?


有關(guān)作者
   Jake Simpson 是一個(gè)游戲程序員,斷斷續(xù)續(xù)在這個(gè)行業(yè)已經(jīng)有大約20 年了。他在英國(guó)本土從15歲開(kāi)始,在C64的時(shí)代,Sinclair Spectrums和 BBC Micros,經(jīng)歷了 Amiga 和ST,離開(kāi)了一段時(shí)間,然后90年代中期至后期在Mideay Games寫(xiě)街機(jī)游戲。他最近在Raven Software工作過(guò),制作有Soldier of Fortune, Heretic, Hexen, Star Trek : Voyager : Elite force 和 Jedi Knight II : Outcast,在北加州的Maxis可以找到他,為Will Wright的游戲產(chǎn)品工作。業(yè)余時(shí)間他為GameBoy Color和Advance編寫(xiě)代碼,因?yàn)椤澳隳鼙M可能地遠(yuǎn)離C++編碼,而且,如同John Carmack所說(shuō),底層編程對(duì)程序員的靈魂有好處”。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多