如何在 5 分鐘內成為遊戲引擎的行家裏手?

愛範兒 於 07/10/2016 發表 收藏文章

引用編者按:本文轉載自轉載自微信公眾號 VR 價值論(vr-value),轉載時已獲得作者授權。

本文您將了解到:

  • 你所熟悉的遊戲到底是怎樣做出來的?
  • 如何在 5 分鐘內大體了解遊戲製作的流程?
  • 遊戲發展為今天的樣子到底經歷了什麼?
  • 遊戲製作中到底有哪些很重要的概念?

是不是應該聊點輕鬆的心靈雞湯。No……俺們只認價值的有用的好貨。

今兒,VR 價值論要分享的是一篇有意思的技術貼,聊一聊 “如何從遊戲開發的角度理解遊戲引擎架構”。

由於今天的貨實在太乾了,價值君想對一般的羣眾們説一句,飄過就好啦~

不過,如果你是一個對做遊戲感興趣,但是又沒有概念的小白;或者對製作遊戲有一定的基礎,但是對整體邏輯並不清晰的中白,請務必駐足觀望,同時完成兩個動作:收藏,精讀。然後,成為行家裏手。

今天的乾貨很有意思,能把遊戲引擎的梳理得如此老少皆宜,不失乾貨,還能在字裏行間散發出一股濃濃的逗比氣場,除了這位大牛,也是沒 Sei 了

引用本期由來自資深 3D 場景美術師對 VR 價值論進行獨家分享:遊戲的製作流程到底是如何一步步變成了今天的模樣?

撰文:51VR 資深 3D 美術師——發瘋的然然,編輯整理:VR 價值論

作者心裏話:

以前曾做過關卡美術,以關卡美術的角度看整體的遊戲製作流程,其實很有價值。乾貨之旅開啟之前,先來認識一下目前比較流行的遊戲引擎 UE4。

1、啥叫 UE4?


暈了。


徹底暈了。

對,沒錯,這玩意一點看起來一點都不親和,不過應該能看得出來,這東西是一款軟件。

2、泛聊一下業內的引擎軟件

準確來説,上圖這個軟件是一種遊戲引擎。

要想進入遊戲行業,一定會接觸到遊戲引擎,只要去看過招聘信息的,應該都會發現,很多公司都會要求會用 Unity3D、CE3、UE4、Cocos2d-x。這些還都是商業引擎,如果有心,還能稍微能接觸到一下。而且既然是商業的,靠這東西賺錢,他就會相對比較親和易用。

有商業的就有非商業的,像 EA 的寒霜、育碧的 ANVIL、暴雪的銀河、KONAMI 的 FOX,還有像 SQUARE-ENIX 這種變態的雜七雜八工作室拼起來的公司,那引擎就更亂了,尤其是暴雪的銀河引擎,其實只要買了《星際爭霸 2》遊戲就能接觸到,《星際 2》的地圖編輯器就是銀河引擎的縮水版。

用過的都知道,那玩意其實一點都不好用。但是你要想去暴雪工作,學會用銀河引擎是早晚的事。

雖然我沒有去核實,不過我敢説《風暴英雄》也是拿這東西做的。

不過上面這些大廠還都算是有良心的,他們的引擎也算是比較易於上手的,只不過有些概念需要轉換一下。當然也有一些遊戲廠商,他們自主研發的引擎就是內部使用,人壓根就不靠這東西賺錢,不僅界面醜的一塌糊塗,而且功能……別説外行了,內行想搞明白都很費勁。

不過相信我,如果要做遊戲,這東西是吃飯的傢伙,弄明白是遲早的事。

3、最早的引擎

好吧,不嚇唬人了,這東西其實不難理解,所以進入正題。我們先看一個相當早期的遊戲。


這款遊戲怎麼玩應該想象的來吧,兩個控制桿,一個控制左邊的白槓槓,一個控制右邊的白槓槓,如果對方沒接住那個白點點,自己就得一分。

要想做出這款遊戲,也得需要一個引擎吧,雖然這款遊戲問世的時候我爸我媽還是陌生人呢,不過遊戲很簡單,我們還是可以分析出來這款遊戲怎麼做的。

分解一下:

白槓槓是要靠人控制的,那裏面肯定有個程序是説,我控制桿向左,白槓槓就向左,我控制桿向右,白槓槓就向右。

那麼取個名字吧,我們把這個白槓槓叫做角色。當這個白點點和白槓槓接觸的時候,會反彈回去對吧,人只能間接的控制這個白點點,那我們給這個白點點取一個名字,叫做道具。

這個黑底和中間白色的虛線只是一個示意的作用對吧,不牽扯程序,那我們把這個東西取個名字,叫做場景。上面的兩個數字是為了給玩家展示結果的,也是一個單獨元素,那我們也給他取個名字,把這個東西叫做 UI。

如果白點點和白槓槓一接觸,可以發出一個 “當” 的聲音,那我們就把這個 “當” 的聲音叫做音效。

這時候我們看一下這時候引擎這個軟件是個啥玩意:

  1. 可以做一個角色;
  2. 可以做一個道具;
  3. 可以做一個場景;
  4. 可以做一個 UI;
  5. 可以加音效;
  6. 可以用計算機語言把這個邏輯串起來;
  7. 有一個可以執行上面 6 個功能的界面。

能達到以上 7 點的這麼一個軟件就是最早的引擎了。雖然事實執行上沒有我講的這麼簡單,因為那時候的計算機語言還沒有這麼高級,不過理解這個過程是沒有問題的。用圖形表現出來就是:


4、萬惡的技術革命

可是!後來計算機牛逼了,一個畫面上可以處理更多的像素了!下面我們看一下俄羅斯方塊,通過他理解一下引擎。

我知道俄羅斯方塊剛出來的時候比這個畫面土多了,找這個例子只是為了好理解。


我們都知道這東西只要湊夠一行就能消掉對吧,它湊夠一行消掉那是程序員乾的活。但它靠判定什麼樣的東西湊夠一行呢?是一個 “被填充的格子” 湊夠一行就可以消掉。


一個這樣的方塊,我們完全可以理解為他是有 4 個 “被填充的格子” 的塊塊,那個黑黑的沒有沾滿的地方不理他,反正就是空的嘛。


那從邏輯上來説,這兩張圖完全沒區別的兩個東西,對吧。


那也就是説,這兩張圖完全沒區別的兩個東西,對吧。所以説這個塊塊佔據的地方,用什麼東西展示是無所謂的,沒錯吧?

因此人們就引入了一個概念,這個塊塊佔據的區域,這個區域,不是塊塊哦,是這個區域!老外給這個區域取了一個名字叫做 Collision,國人翻譯過來叫做碰撞體。

然而有了這個概念還不夠,因為這個 Collision 是和他對應的圖片相關聯的,所以他們把圖片加 Collision 合在一起打了一個組,取了個名字叫做 Entity。

這個圖片最早可能使用 Photoshop 做的,也有可能是拿 Windows 自帶的那個畫圖做的,這都不重要。總之有一個圖片,有一個叫做 Collision 的數據,打包起來叫做 Entity。
然後人們覺得這個概念相當好用,而且從理論上完全可以給每個 Entity 添加自己獨特的程序和音效。這時候的遊戲引擎就發展成大約這個樣子:


這裏要説明的是,並不是每個 Entity 都會包含所有屬性,比方説打醬油的框框這種 Entity,給張圖片就 OK 啦。

5、2D 遊戲井噴了

隨着萬惡的資本主義社會對金錢的追求,他們一次又一次地引發科技革命對吧,計算機越來越牛逼了。人就想,如果圖片能填充給 Collision,那動畫可不可以呢?答案是必須可以啊!沒有什麼東西能阻止人類賺錢。

然後他們又想,不一定所有的 Entity 都必須加圖像呀,有一些只要有程序就可以了,製作的時候在引擎裏我們只要示意一下它存在,真正玩的時候玩家看不到,但是效果是實實在在有的,這樣可以實現很多效果。

這個東西其實很容易被想到,人們為了區別於加上圖片的 Entity,他們取了個名字叫做效果器,或者發生器。實質上就是把喵叫了個咪,放在引擎裏。
然而這個架構真的很厲害,它解放了很多製作人的想象力。而且從邏輯上講,只要硬件和科技的升級,圖片、聲音、程序的質量,都可以升級 Entity 或者效果器的質量。

也就是説這個架構是一個可以成長的架構。所以直到現在,即使各種引擎多得眼花繚亂,名字都讓人記不完,但是其實仔細去看,實際去操作,他們無非也就是在這個基礎上繼續升級而已。或者仍然是這個理念,換了一種表現形式罷了。


我們用一個具體的例子理解一下。看一下超級瑪麗。


這麼一個東西,實質上就是這樣的。紅色的是角色的 Entity,馬里奧和庫利寶都是,馬里奧包括了手柄各種操作時對應的動畫、音效、程序。而庫利寶只是簡單的機械運動和重複動畫。綠色的是帶動畫的道具的 Entity。


是帶動畫的道具 Entity,平時就一閃一閃的,頂一下會變樣子,一頂就碎了。咖啡色的就是隻有圖片不帶動畫的 Entity。


只帶一個 Collision。除了站在上面掉不下去,或者擋在前面過不去,基本就沒啥用了。上面白色的數字是 UI。不過注意哦,天上的雲和地上的草,就是沒有 Collision 的 Entity。


其實雲和草是一個玩意,為了省資源可能引擎裏面調了個顏色就用了。

後來人們統稱角色為角色,剩下的東西通通都叫做場景。然而場景美術做什麼呢?顧名思義,然而我就是場景美術,做的就是場景。

這個桶頂端就有這麼一個效果器,一旦玩家按了手柄上的“↓”,他就鑽進去了。根據這個製作方式,實際上可以做出無數種可能。在沒有骨骼這個概念引進 2D 遊戲之前,幾乎所有的 2D 遊戲都是這麼幹的。


冒險島


火焰紋章


惡魔城


拳皇


仙劍

6、3D 技術

其實 3D 技術很早就有了,只不過當 Pixar 做出《玩具總動員》大賣之後,人們才深刻意識到原來可以用到藝術領域!要知道 Pixar 是當年喬布斯投資的,喬布斯真的很有眼光。


這時候可是 1995 年之前,遊戲畫面是這個樣子的。


魔獸爭霸初代,算是實時渲染的頂級了。

當人們看到 3D 也可以做得很漂亮時,就有人想了,能不能用 3D 技術幹出來遊戲呢!我們現在都知道,當然可以呀,不過 20 年前的他們不知道,他們面臨了很多困難。

要知道電影效果好,但是他們渲染時間長,弄不好就渲好幾個月。

可遊戲是實時渲染,什麼意思呢?比如一個 30 幀的遊戲,他的每一幀畫面一定要在 1/30 秒內渲染出來,否則就會卡頓,目前遊戲基本上都會要求到 30 幀以上。

現在我們清楚了,生成遊戲的這個軟件叫做引擎,要想把 3D 技術用到遊戲裏,那麼怎麼改造這個引擎呢?理論上講,把模型扔到引擎裏,能在 1/30 秒內渲染出畫面就行。

所以在用之前,就先要了解一下 Pixar 的前輩們製作玩具總動員的方式。故事板分鏡劇本什麼的我就不説了,單説美術製作這一塊。

Pixar 先做了很多模型,給他們畫好貼圖,調整好材質,然後給模型綁上骨骼,然後再一幀一幀地像玩木偶一樣把每一幀記錄下來,然後給每個角色配上一個表情控制器,再一幀一幀地控制每一個角色表情,最後調整燈光、調整攝像機、渲染,就出來了。

用一個簡單的例子説明一下。有個軟件叫做 3DSMAX,做出來的模型是這個樣子的,這個圖他賴皮,打光渲染了,實際上做出來比這個醜。


然後他們用了一個叫做材質球的東西控制這個模型面上的表現。

怎麼表現呢?我們想在模型上畫顏色。怎麼辦?然後這幫人想起來了小時候手工課玩過的紙模。


聰明的人類就想到把 3DSMAX 的模型也弄成這個樣子,就給模型了一個屬性,叫做 UV。


把模型的每個面展到一個平面上,模型的每個面都都對應到這張平面圖上,那麼理論上講,只要在相應的位置上畫一張 2D 的圖,就完全可以映射到模型上。

不過問題是,只有顏色不行呀,為了達到逼真的效果,表面還應該有反光對吧。這時候就給了一個屬性,叫做 Specular,用一張遮罩來控制這張 2D 圖片對應位置的反光程度。白色的表示強反光,黑色表示不反光。畫出來是這個樣子的:


然後通過材質球連接到模型上,模型就變成了這個樣子。


嗯,帥帥的,不過那時候電影中用來表現細節還有個 Bump 技術,用一張黑白圖來表現表面的凹凸起伏,比方説《玩具總動員》裏那個綠色的恐龍身上的小細紋。

其實現在的動畫電影也還在用這個技術。他們表現煙霧還有個粒子運算技術,表現反射還有個光線追蹤技術,只要花時間去渲染,效果大家都看到了,很逼真。不過也能想象到,不管哪個技術,在哪個年代實時渲染都幹不成。

幹不成怎麼辦?沒有什麼能阻止人類賺錢。有一部分人就想出了這樣一種製作模式。


既然咱 1/30 秒渲染不出來,那麼就把渲染好的圖片直接用到引擎裏去做就好了呀。然後他們就用這種方式做出了這樣的遊戲:


紅警 95

這種精度的畫面在當時看起來相當驚豔,其實這只是表現手法而已,這款遊戲最厲害的地方是,支持局域網 8 人聯機。

現在聽起來好像沒啥特別的,不過在當時集體打單機的時間,確實讓人感覺時代變了。製作這款遊戲的公司叫做 Westwood,而且這款遊戲在全球各個區域持續銷量第一。

不過悲劇的是,後來 EA 收購了 Westwood,再後來因為經營不善,就解散了,已然成為了歷史。

這種製作方式不管放在當時還是現在都是一個很典型的製作方式,因為這種表現方式可以直接把透視問題完美解決。也因為他壓根就沒有透視,而且隨着硬件性能的提升,畫面也越來越精美。


帝國時代 1 / 2


星際爭霸,在現在看來畫面都還很不錯


暗黑 1 / 2

這種製作方式在現在有一種流行的叫法,叫做 3 渲 2。意思就是 3D 的模型,渲染成 2D 的圖片。因為 2D 的圖片相對要更省資源,所以在很多廠商剛起步沒有很強的研發能力,他們選擇製作手機的時候,畫面的表現形式就會使用這種方式。


大 COC,典型的例子。還有像神鵰俠侶手機版這樣的,目前這種遊戲很容易就能找到。

這是一種思路,還有一票人,他們這樣想:3DSMAX 的材質球渲染起來很費勁,那就不要用他那個渲染很費勁的高端材質球就好了呀。整個渲染速度很快的低端材質球,那製作模式就變成了。


解釋一下,因為模型是 3D 的,所以 collision 也會變成 3D,遊戲引擎可以自己生成 Collision ,但是大多數情況下人們還是喜歡自己去定製一個特別合適的 Collision。

而材質球就會當做是一個 Entity 的屬性,只不過這個屬性超級複雜而已。這一套看起來也相當高大上沒錯吧,沒錯,這玩意確實相當高大上,看看 EA95 年初代的極品飛車的畫面就知道了。


這在當時已經算是很驚豔的玩意了。這輛車好像是蘭博基尼……

我在製作流程的示意圖裏是用控制材質球的圖片組來説的,其實我想説的是,那個年代這個組裏只有一張貼圖,所以怎麼逼真怎麼畫就對了。不過當電腦運算能力上來了再看看遊戲畫面:


CS,值得一提的是,雖然貼圖支持很少,不過這時候的 3D 引擎已經可以表現一些特效了。


魔獸爭霸 3,這時候雖然貼圖支持也不多,不過特效已經可以做得很好看了。


包括魔獸世界也是這一套製作方式。特效非常漂亮,不過這實際上完全可以看做是一個擁有粒子效果的 Entity,可以理解為 Entity 的屬性又增加了。

這已經是 10 年前的事了,那時候還用不了 Specular 技術。因為電影中的 Specular 直接和光線追蹤掛鈎,而光線追蹤是個運算大坑,作為藝術家的遊戲製作團隊事實是不敢輕易去觸碰工程師乾的活的,所以看到的那些光影效果其實完全都是畫出來的,技術是無法阻礙藝術家對完美的追求的,只不過追求的結果有點假而已。

7、3D 技術的發展

很快,人們在細節表現方面就有了突破,可以表現細節的貼圖不再是隻有 Bump 貼圖了,人們發明了法線貼圖,老外叫他 Normal Map。

和 Bump 貼圖的製作方式不同,Bump 貼圖是靠手畫出來的,有模型表現不出來的細節,而 Normal Map 直接靠映射方式。
在 3D 軟件裏,用一個低面數模型包裹住一個高面數模型,然後設置一下,高面熟模型信息就會記錄在低面數模型上。同時會烘焙出一張紫色貼圖,這張圖就叫做 Normal Map 了。不過不管是 MAX 還是 MAYA,都沒有第三方軟件烘得快烘得好,這款第三方軟件一般是用 Xnormal。

同時人們還發現,Specular 這種東西只要不和光線追蹤掛鈎就很省資源,實際的表現也很出色。當這個技術被用在遊戲引擎中併發布出來的時候,人們欣喜地稱之為次世代。


COD


戰地

人們被驚豔到了,這時候的製作流程也得到了升級。既然可以表現高面熟模型的細節,那麼就需要製作高面熟模型。製作高面熟模型的軟件叫做 Zbrush,製作流程就變成了:


8、當今

當然上面的這些製作流程只是為了幫助大家更方便地去理解引擎工作過程。事實上有很多技術已經整合到引擎裏面了。當年的次世代現在已經變成了現世代,而如今的次時代更加尖端。
雖然大的製作流程沒有變化,不過細節卻變得天翻地覆。由於計算機的運算能力的提升,引擎同時也整合了更強大的粒子特效,實現了更逼真的光照系統,支持更大的貼圖尺寸,支持更多的模型面數,同時還通過例如全局光貼圖(Ambient Occlusion Map),陰影貼圖(Shadow Map) 等技術讓畫面變得更加逼真。

目前材質球使用的新技術是這樣的,之前我們講 Specular 貼圖是不能表現光線追蹤的效果嘛,無恥的人類,做了一個假的光線追蹤系統,我叫做假環境反射貼圖(Cube Map),因為是假的,所以遊戲裏面照鏡子看不見自己。不過我相信有一天,這都不是事兒。

由於光影強大,環境模擬強大,所以貼圖的製作越來越變得去光影化,很多時候完全就是填色遊戲。而由於對更高精度貼圖的支持以及更高模型面數的支持,高模雕刻的精細程度反而變成了重中之重。

而且隨着 3D 打印機的出現,Zbrush 的地位也突然被抬得特別高。可以這麼説,只要材料足夠,完全可以用 3DSMAX 或者 MAYA 做出一個大致的模型,然後通過 Zbrush 精細每個零件,最後通過 3D 打印機打印出來,拼起來是個火箭筒還是個坦克就隨你便了。

並且理論上講,只要你做得夠精細夠符合工程學原理,給一枚導彈,就能把飛機炸下來。不過我還是建議不要做這種危害社會的事情……

同時,現在的音效也可以把交響樂很輕鬆地塞到遊戲裏。當這麼多的功能全部整合到引擎裏,就是我們現在看到的引擎模樣了。


不過,當理解了遊戲製作最基本的邏輯,再去看不管哪一款引擎,事實上就是找到它的那個功能而已。

題圖來源:a2ua


資料來源:愛範兒(ifanr)

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→