官术网_书友最值得收藏!

1.1 什么是游戲引擎

什么是游戲引擎?其實(shí)這很難給出明確的定義。在很多游戲的宣傳中,我們會聽到對游戲引擎的推崇。絢麗的特效,流暢的體驗(yàn),似乎都是游戲引擎的功勞。在游戲玩家看來,游戲畫面的表現(xiàn)力越好,游戲場面的震撼程度越大,游戲體驗(yàn)的真實(shí)感越強(qiáng),底層的游戲引擎就可能越強(qiáng)大。

看看業(yè)界給出的一些定義。

游戲引擎是指一些已編寫好的可編輯計(jì)算機(jī)游戲系統(tǒng)或者一些交互式實(shí)時(shí)圖像應(yīng)用程序的核心組件。這些系統(tǒng)為游戲設(shè)計(jì)者提供編寫游戲所需的各種工具,其目的在于讓游戲設(shè)計(jì)者能容易和快速地寫出游戲程序而不用從零開始。大部分游戲引擎支持多種操作平臺,如Linux、Mac OS X、Windows。游戲引擎包含渲染引擎(即“渲染器”,含二維圖像引擎和三維圖像引擎)、物理引擎、碰撞檢測系統(tǒng)、音效引擎、腳本引擎、電腦動畫引擎、人工智能引擎、網(wǎng)絡(luò)引擎以及場景管理引擎。

根據(jù)上述定義,在很多人看來,游戲引擎負(fù)責(zé)把很多已有的零部件組裝起來,如同組裝手機(jī),CPU、屏幕、攝像頭、主板等都是別人生產(chǎn)的,手機(jī)廠商按照自己喜歡樣式組裝一下就好了。

下面再看看Game Engine Architecture(中文書名《游戲引擎架構(gòu)》)是怎么說的:

通常,游戲和其引擎之間的分界線是很模糊的。一些引擎有相當(dāng)清晰的劃分,一些則沒有嘗試把二者分開。在一款游戲中,渲染代碼可能特別“知悉”如何畫一只妖獸(Orc);在另一款游戲中,渲染引擎可能只提供多用途的材質(zhì)及著色功能,“妖獸”可能完全是用數(shù)據(jù)去定義的。沒有工作室可以完美地劃分游戲和引擎。這不難理解,因?yàn)殡S著游戲設(shè)計(jì)的逐漸成形,這兩個(gè)組件的定義會經(jīng)常轉(zhuǎn)移。

似乎游戲界引擎專家也無法真正給引擎下一個(gè)明確定義,雖然大家都知道什么是游戲引擎,卻很難用三言兩語把它表述出來。本節(jié)嘗試用比喻的方式把它講清楚。

假設(shè)我們穿越回20世紀(jì)80年代,我們的手中已經(jīng)有整套的FC游戲《超級馬里奧》[見圖1.1(a)]的代碼,現(xiàn)在我們要開發(fā)另一款FC游戲《冒險(xiǎn)島》[見圖1.1(b)]。此時(shí)我們需要從零開始嗎?顯然,這兩款游戲有著太多共性,都是一個(gè)游戲角色在橫板卷動的地圖上蹦來蹦去,都可以踩死怪物。當(dāng)然,也有不同,畫面不同,聲音不同,關(guān)卡不同……但對于共同的功能,聰明的我們當(dāng)然會重用一些現(xiàn)成的代碼。而這種橫板卷軸游戲模板的通用性非常好,目前游戲界對它的需求量也非常大,所以我們決定把這種特定類型游戲的核心功能提煉出來,供那些也要開發(fā)這種游戲的人使用。

(a)

(b)
圖1.1 《超級馬里奧》與《冒險(xiǎn)島》游戲畫面

后來,蹦蹦跳跳的游戲逐漸沒落,即時(shí)戰(zhàn)略游戲開始興起,有人要開發(fā)即時(shí)戰(zhàn)略游戲《紅色警界》(如圖1.2所示)。

圖1.2 《紅色警界》游戲畫面

雖然游戲模板的代碼能渲染2D動畫、播放聲音、處理鼠標(biāo)鍵盤的按鍵響應(yīng),但無法用于即時(shí)戰(zhàn)略游戲。因?yàn)橥婕覀兿胍氖嵌嗳寺?lián)網(wǎng),這就要求程序能夠處理大量同屏2D動畫,能夠快速編輯適應(yīng)即時(shí)游戲的關(guān)卡,能夠運(yùn)行無法與玩家和平相處的AI,甚至能夠讓游戲運(yùn)行在不同的地方,比如PS1和PC。可是原有的游戲模板根本做不到這些。

直到有一天,卡馬克設(shè)計(jì)了一款叫《DOOM》(中文名《毀滅戰(zhàn)士》)的游戲(如圖1.3所示),這簡直就是PC(DOS系統(tǒng))游戲史的一個(gè)里程碑。這款游戲漂亮的3D畫面,讓很多游戲愛好者在計(jì)算機(jī)前面“火拼”。

圖1.3 《DOOM》游戲畫面

卡馬克又寫出了全3D的游戲《QUAKE》,而且支持當(dāng)時(shí)最強(qiáng)大的3D加速卡,人們再次被震驚了。崇拜卡馬克的人們用《QUAKE》的代碼制作了新的射擊游戲——《Counter-Strike》,也就是家喻戶曉的CS。《QUAKE》的動畫、渲染的程序也被拿來繼續(xù)開發(fā)其他游戲。

故事總歸是故事,但對于《冒險(xiǎn)島》來說,被復(fù)用的那部分《超級馬里奧》代碼其實(shí)就是最早的游戲引擎。不過它的技術(shù)沒那么先進(jìn),功能也不甚強(qiáng)大,還缺乏順應(yīng)潮流的更新,以致最終銷聲匿跡了。但卡馬克的代碼則不同,它超越了當(dāng)時(shí)人們的想象力。他不但為射擊游戲制定了完整方案,而且實(shí)現(xiàn)的代碼功能強(qiáng)大。其高度的復(fù)雜性和健壯性,甚至讓很多人樂于用其中的某些模塊去開發(fā)非射擊類的游戲,結(jié)果不但節(jié)省開發(fā)時(shí)間而且游戲健壯性也不錯(cuò)。這幾乎是一部簡短的游戲引擎發(fā)展史。

我們?yōu)槭裁匆绱诵量嗟靥接懸娴亩x?每個(gè)人心中都有自己的哈姆雷特,對錯(cuò)已經(jīng)沒那么重要。開發(fā)屬于我們自己的游戲,了解哪個(gè)引擎更強(qiáng)大以及什么引擎更適合,才是研究游戲引擎的真正意義所在。

主站蜘蛛池模板: 通州区| 大城县| 偏关县| 沧州市| 上栗县| 峨山| 开平市| 青岛市| 永寿县| 江达县| 汨罗市| 托克托县| 娄底市| 钦州市| 封开县| 山丹县| 镇宁| 新绛县| 新邵县| 荥经县| 贺州市| 林周县| 阳高县| 宣恩县| 益阳市| 抚州市| 阿拉善左旗| 克东县| 青岛市| 江山市| 阿尔山市| 聂拉木县| 兴宁市| 都江堰市| 峨眉山市| 浪卡子县| 甘泉县| 汝阳县| 婺源县| 包头市| 肇源县|