游戲引擎剖析(9)
發(fā)表時(shí)間:2024-02-08 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]原文作者:Jake Simpson譯者: 向海Email:GameWorldChina@myway.com 第9部分: 現(xiàn)成產(chǎn)品與定做的游戲引擎設(shè)計(jì)工具,游戲特定主題現(xiàn)成產(chǎn)品與定做的設(shè)計(jì)工具 我們從第8部份的腳本引擎來到這一章節(jié)中的許多主題,我們認(rèn)為那些鐵桿游戲玩家和有志成為游戲開發(fā)者的那些人將...
原文作者:Jake Simpson
譯者: 向海
Email:GameWorldChina@myway.com
第9部分: 現(xiàn)成產(chǎn)品與定做的游戲引擎設(shè)計(jì)工具,游戲特定主題
現(xiàn)成產(chǎn)品與定做的設(shè)計(jì)工具
我們從第8部份的腳本引擎來到這一章節(jié)中的許多主題,我們認(rèn)為那些鐵桿游戲玩家和有志成為游戲開發(fā)者的那些人將會發(fā)現(xiàn)它們相當(dāng)有趣。我們將開始討論現(xiàn)成產(chǎn)品與定制的設(shè)計(jì)工具。
你的工具的選擇是你引擎設(shè)計(jì)的一個(gè)非常重要的部份,因?yàn)檫@是你將用來給你的游戲產(chǎn)生內(nèi)容的東西,是最耗時(shí)的部份。在這個(gè)過程中有助于節(jié)省時(shí)間和資源的任何東西都是好的。那些不能的東西就是糟糕的。在那里,那是容易的。
當(dāng)然沒有那么容易。有比這更多的事情可能會立刻被注意到。你的工具集的選擇,和從工具到游戲的資產(chǎn)路徑比它聽起來更有技巧得多,并受到很多因素的影響,比如,是否適宜手邊的工作,費(fèi)用,內(nèi)容生產(chǎn)者的熟悉,市場滲透,工具支持等等。當(dāng)考慮選擇現(xiàn)貨成品工具,或者即使當(dāng)開發(fā)你自己的工具時(shí),記得開發(fā)者實(shí)際在做工作,最好能夠做需要借助工具做的。一些現(xiàn)貨成品工具能在價(jià)格上達(dá)到那里,當(dāng)你陷入多個(gè)拷貝許可時(shí),費(fèi)用猛漲。
然后就有誘人的可能性從頭制造你自己的工具,為你游戲和引擎的需要而設(shè)計(jì)。這當(dāng)然需要時(shí)間,和程序員大量的努力來產(chǎn)生在開發(fā)者友好方式中所需要的東西?焖俅蛟旎诖翱诘奈募D(zhuǎn)換器是一回事情,從頭建造一個(gè)完整的關(guān)卡設(shè)計(jì)工具又是另外一回事情。另一方面,如果你確實(shí)選擇這條道路,最后你會有游戲開發(fā)者地帶其他人沒有的工具,因此你的東西將會看起來是獨(dú)特的。如今與眾不同是一件非常值得想望的事情,而且從群眾這些天起突出是一件非常令人想要的事物,產(chǎn)生所有的競爭。
當(dāng)然由于內(nèi)部的工具開發(fā),你需要某人來做所有那些不可避免的小的改變和修正。但這里真正的意義是這是可能的。使用現(xiàn)成的工具,工具開發(fā)者會很少因?yàn)槟阈枰囊恍┨卣鞫淖兯麄兊妮敵鑫募袷。這樣你的東西最后看起來更加通用一些,否則你必須采用額外的步驟使用另外的工具來得到想要的結(jié)果,當(dāng)然會花費(fèi)開發(fā)者更多的時(shí)間。
值得記住的是如今許多有名的3D工具已經(jīng)有一段時(shí)間的歷史了,并且正在產(chǎn)生簡直沒有錯誤的產(chǎn)品,更重要的是,對他們所做的已經(jīng)有一定程度的經(jīng)驗(yàn)了。
如果你選擇建造你自己的工具,多半你是,a) 重新創(chuàng)造車輪到某種程度 b) 陷入那些建造現(xiàn)成工具的人們已經(jīng)遇到過的相同的問題之中,只是他們已經(jīng)解決了這些問題。時(shí)常人們建造一個(gè)單一特定的工具花費(fèi)了相當(dāng)?shù)臅r(shí)間和努力,并產(chǎn)生了一個(gè)遠(yuǎn)遠(yuǎn)超出你自己的個(gè)人需求的工具。還有,他們有代表性地收編了一些你或者認(rèn)為是沒有用的,或者沒有時(shí)間自己實(shí)現(xiàn)的特征。加上他們典型地有吸收特征你或會沒有想有用,或沒有時(shí)間實(shí)現(xiàn)你自己. 這是第三方軟件無法爭辯的。
插件和目的建造工具
通常大多數(shù)的游戲開發(fā)過程最終都是這樣的混合,自己開發(fā)的文件轉(zhuǎn)換器工具,現(xiàn)成的內(nèi)容創(chuàng)造工具,和通常那些要增加一些必須的特殊功能的工具的一些附加插件。現(xiàn)成工具在提供你不可避免會需要的功能方面有很長一段時(shí)間了,但是正如不可避免,總有一些很有用的,有幫助的,或者完全必須的東西你不能得到。一個(gè)小的插件可能是一個(gè)很好的替代品,而且時(shí)常那就是所走過的路。為特定目的建造的預(yù)處理程序也是可用的,比如把TGA文件轉(zhuǎn)換為一個(gè)對PS2友好的格式,或者那些相關(guān)的東西。
如果你或你的公司打算建造某種類型游戲的工具,那么這些工具一般是從一個(gè)項(xiàng)目到一個(gè)項(xiàng)目地演變發(fā)展,而不是每次都從頭重新建造。如果你變換游戲類型,很好,那些產(chǎn)生具有每個(gè)多邊形命中能力的高分辨率模型的工具明顯地不是一款RTS(即時(shí)戰(zhàn)略)風(fēng)格游戲所必須的。
Gil Gribb,Rave Software的技術(shù)帶頭人,對‘現(xiàn)成的工具’和‘自己動手建造’的問題是這么說的:
"自己開發(fā)的工具有能夠根據(jù)自己產(chǎn)品的需要進(jìn)行定制的優(yōu)勢,你擁有代碼,可以修正任何錯誤或者增加任何的改進(jìn)。
自制工具的缺點(diǎn)是建造和維護(hù)它們是非常昂貴的,通常成本要比現(xiàn)成工具高很多。在許多情況下,由于應(yīng)用程序范圍的緣故,建立自己的工具是完全不可能的,比如說3D建模和動畫軟件包或者位圖編輯軟件。"
當(dāng)然,如果你想要游戲玩家能夠修改你的游戲,而且你自己建立了所有的工具,那么你就必須要向世界發(fā)布這些工具。這可能會引起一點(diǎn)點(diǎn)疑惑,記住建立你自己的工具的部分原因是你可以領(lǐng)先你的競爭者。有時(shí)侯發(fā)布這些工具的源代碼甚至可能讓你獲益匪淺,這確實(shí)提供了一種創(chuàng)造內(nèi)容的方法。再次,Gil Gribb闡述這個(gè)主題:
"我是支持發(fā)布幾乎所有的源代碼。我認(rèn)為我們沒有任何來自我們的競爭者的害怕的事情,合法的業(yè)務(wù)不會想到竊取知識產(chǎn)權(quán)。游戲迷,業(yè)余游戲制作者,以及游戲的普及都能夠從發(fā)布的源代碼獲益。"
好,我們的游戲引擎剖析系列到這里,當(dāng)然我們已經(jīng)特別討論了許多和引擎相關(guān)的主題,下面讓我們繼續(xù)討論一些與游戲特定相關(guān)的部分。
游戲控制機(jī)制
控制機(jī)制能夠?qū)﹂_發(fā)中的游戲帶來巨大的差別,有時(shí)甚至表明你正在建立的游戲的種類或者風(fēng)格。
嘗試在某個(gè)時(shí)候用gamepad玩一個(gè)即時(shí)戰(zhàn)略類游戲--它不只沒有樂趣。有時(shí)當(dāng)你被限制在一個(gè)特定的輸入裝置的時(shí)候,例如鼠標(biāo)和鍵盤,為你的游戲發(fā)明新的控制方法會是一個(gè)令人筋疲力盡的過程。當(dāng)Raven開始開發(fā)Heretic II時(shí)他們決定做的第一件事情之一就是為用鼠標(biāo)使用第三人稱照相機(jī)嘗試和找出一個(gè)直觀的方法。在這以前,大多數(shù)游戲采用的是Tomb Raider風(fēng)格的照相機(jī)(第三人稱預(yù)兆的追逐)他們發(fā)現(xiàn)這時(shí)常不能正確地工作,在很多情形下會給玩家?guī)泶煺。照相機(jī)時(shí)常會得到任意的視角,如果可能的話移動相機(jī),而且有時(shí)改變玩家的方向。
假定他們的目標(biāo)對象是FPS游戲人群,Raven需要找到一個(gè)對FPS游戲玩家來說直觀的控制烏鴉座(Corvus)的方式。他們這樣做了,但確實(shí)花費(fèi)了一些時(shí)間,和一些不同的方式—他們應(yīng)當(dāng)讓照相機(jī)固定在一個(gè)方向嗎,或者讓它是浮動的嗎?大多數(shù)游戲開發(fā)努力—除非一個(gè)確定類型游戲的一個(gè)沒有虛飾的實(shí)現(xiàn)—傾向于花費(fèi)一些研發(fā)找出物理控制裝置和游戲需要的內(nèi)部控制機(jī)制的最直接的合并。這里是一個(gè)暗示—一旦你發(fā)現(xiàn)一個(gè)方式很起作用,就堅(jiān)持下去。用這種方式控制游戲內(nèi)在的東西能把視野,直覺,甚至游戲的焦點(diǎn)完全改變成你從未想要過的東西。發(fā)現(xiàn)起作用的東西,證明它起作用,然后就別管它。過分設(shè)計(jì)控制會導(dǎo)致特征偏離和可察覺的游戲概念問題。
像這類特征偏離的一個(gè)很好的例子可以在Independence War中看到。這款游戲有著如此多的模式,按鍵,等等,僅僅熟悉和操縱游戲都不可能。
很明確這里的關(guān)鍵是簡單。一個(gè)好的經(jīng)驗(yàn)法則是,在正常的游戲中,如果你的游戲需要比在普通的gamepad的按鍵或者你手上的手指更多的按鍵,那么一些事情需要被重做。注意, 我不是說一款游戲不應(yīng)該有靈活性—Soldier of Fortune必定有許多可能的按鍵設(shè)定。但通常,當(dāng)你認(rèn)為它們大多數(shù)實(shí)際上都是不需要的時(shí)候Quake引擎有一個(gè)很好的方式。是的,你可以選擇你想要使用什么武器,但你不是必須這樣。游戲?qū)詣拥貫槟隳菢幼觥_@就是靈活性和過度設(shè)計(jì)之間的不同。如果游戲需要你按下某個(gè)鍵來選擇一個(gè)武器,那將會有問題。你理解這個(gè)了嗎?
控制機(jī)制不能被過高估價(jià) -- 一款游戲時(shí)常將會根據(jù)玩家覺得他們對事件或者主要角色有多少控制而獲得成功或失敗。如果控制被改變,重新定向,或僅僅簡單地從他們哪兒移除,它能導(dǎo)致游戲自身缺乏參與,不用說,那是一件很糟糕的事情。在這上面花費(fèi)時(shí)間并讓它保持簡單,將會有巨大的幫助。
實(shí)體和照相機(jī)
現(xiàn)在我們來到了引擎不太令人愉快的部份,也是定義得最少的部分。當(dāng)游戲運(yùn)行的時(shí)候,游戲在這個(gè)部分能變得極端地多出錯,耗時(shí)間,或僅徹底的極限。
在這里我們所談?wù)摰氖怯螒蛞娴?"游戲" 部份。這個(gè)部分使用所有的其它技術(shù)讓一些事物顯示在屏幕上,到處移動,讓它對你產(chǎn)生反應(yīng)并且讓你對一些事物產(chǎn)生反應(yīng)。這個(gè)系統(tǒng)有許多方法,但現(xiàn)在我將緊扣Quake的方法因?yàn)槟鞘俏易钍煜さ摹?br>
讓我們從實(shí)體開始。這些可以被定義為‘游戲?qū)ο蟆,F(xiàn)在那不僅僅意謂你在屏幕上看見的模型,雖然實(shí)體確定地控制這些 -- 實(shí)體也可能是其他的事物。基本上它是游戲在任何給定時(shí)間需要知道的任何事物,例如讓事情繼續(xù)進(jìn)行的定時(shí)器,模型的碰撞檢測盒,特效,模型,游戲玩家,等等。
甚至照相機(jī)都可能是實(shí)體(在幾乎所有Raven的產(chǎn)品中都是這樣)。照相機(jī)在世界中被分配一個(gè)有角度的原點(diǎn),它們每幀都被刷新并告知渲染器應(yīng)該從哪里得到它的視野數(shù)據(jù),and off we go。典型地實(shí)體是為了返回到游戲早先的狀態(tài)而被存儲和裝載的那些東西。通常在裝載過程中使用的方法是把游戲地圖裝載進(jìn)來,好像你正在重新開始一個(gè)關(guān)卡一樣,然后裝載所有存儲的實(shí)體,這樣他們就返回到游戲存儲時(shí)它們的狀態(tài)。Voila,即刻返回一個(gè)存儲的游戲。當(dāng)我理解Heretic II的方法時(shí)這并不是那么的容易—裝載/存儲幾乎比其他任何事情帶給我的問題還多,特別是在協(xié)作模式。
照相機(jī)有許多形式:
自由形式:照相機(jī)能去任何地方
腳本:照相機(jī)可以沿著一條設(shè)定的路徑前進(jìn)
游戲時(shí)間:照相機(jī)有必須要遵循的定義的行為
僅僅說"嗯,我將僅僅跟隨主要的角色"是不夠的。這意謂你也可能需要讓照相機(jī)穿過墻壁,或讓它按一些方式移動以致甚至引起一些胃的惡心。讓它沿著一些定義的上下運(yùn)動路徑前進(jìn)也有益處,如同任何玩Descent游戲超過一小時(shí)的人可以告訴你的一樣。身體和頭部習(xí)慣于上下是一個(gè)靜態(tài)的變量,并當(dāng)它不是時(shí),他們不喜歡它。制作Quake 1的 Mike Abrash,曾經(jīng)告訴我即使當(dāng)它被定義,他仍然處理 的麥可 Abrash 地震 1,曾經(jīng)告訴我即使當(dāng)它被定義,他仍然從他們正制作的游戲感到運(yùn)動惡心。他提到,對于他來說,離開制作Quake 1一年時(shí)間才讓他的胃安定下來。啊哈,我們所作出的犧牲。
武器系統(tǒng)
游戲模塊的另外一個(gè)部份是武器系統(tǒng)。大多數(shù)的游戲有武器系統(tǒng)或類似的東西。 這是在世界中影響其他的物體,而且使他們對給定情形產(chǎn)生反應(yīng)的東西,--比如說被射擊。通常武器系統(tǒng)由許多不同的類型組成;攻擊掃描,基于飛彈的,以及范圍形式。
攻擊掃描是直接攻擊武器。在屏幕上他們產(chǎn)生的效果只是那樣,一個(gè)效果。當(dāng)使用它的時(shí)候,和武器的實(shí)際操作沒有任何關(guān)系。當(dāng)你用手槍開火時(shí),子彈被認(rèn)為立即穿過世界并直接擊中在它運(yùn)動軌跡上的任何人/事物。
基于飛彈的武器有一個(gè)占用有限時(shí)間穿越世界的真實(shí)射彈,從而帶給對方一些可以躲避的時(shí)間。
基于范圍的武器像手榴彈和炸彈一樣的東西,不必?fù)糁芯涂梢詡Φ侥;你只是必須處于爆炸范圍?nèi)。處在那種爆炸范圍內(nèi)的玩家受到飛濺損害。熔巖是另外一種形式的基于范圍的武器。
那么你如何決定什么被擊中而什么沒有被擊中呢?很好,這個(gè)問題把我們帶到了追蹤,我們將在接下來的物理學(xué)和人工智能章節(jié)更多的接觸追蹤。這是一組函數(shù)例程,當(dāng)給定世界中一條從A點(diǎn)到B點(diǎn)的直線時(shí),比如從槍的末端到預(yù)先定義的距離,它告訴游戲什么被擊中。追蹤很棒,但很昂貴,因?yàn)樗麄儽仨殞δ菞l線上的所有多邊形進(jìn)行‘碰撞檢測’來看是否有什么地方被擊中,更不用說模型和其它對象了。這也是一些物理學(xué)的工作方式,從一個(gè)給定的角色做一個(gè)筆直向下的跟蹤可以知道地板位于什么地方。肆意的濫用追蹤 — 如,在游戲的一幀中多次使用它們 -- 對于今天許多游戲的速度下降是有責(zé)任的。在Jedi Knight II:Outcast,他們的光刀戰(zhàn)斗已經(jīng)遇到了這個(gè)問題,因?yàn)樗麄儾粌H需要知道光刀是否擊中了某處的什么和它現(xiàn)在的位置,而且對于它們之間的所有點(diǎn)都得這樣,他們對光刀做了多次追蹤。
好吧,又一個(gè)章節(jié)結(jié)束了,僅僅剩下兩個(gè)章節(jié)了。下面我們介紹人工智能和搜索的更多細(xì)節(jié)。