1,3D核心三要素
攝像機,游戲理論的3C,角色(Charactor)、攝像機(Camera)、控制(Control),3D游戲的視覺承載核心和技術(shù)支撐就是攝像機。
Pipeline,管線,流水線。3d處理的素材、數(shù)據(jù)、表現(xiàn)更加復(fù)雜,需要流水線操作,高效的分工協(xié)調(diào)配合才能做出效果。簡單的分為三種,Art Pipeline、Render Pipeline和Graphics Pipeline。
Art Pipeline,決定了美術(shù)能夠多大程度發(fā)掘引擎的潛能。簡單的講,美術(shù)的各種素材,比如模型、動作、貼圖等等如何導(dǎo)入進引擎再,配合各種材質(zhì)和引擎工具做出效果,對美術(shù)的制作能力要求很高。如何多快好省的做出效果,很多時候決定了引擎的流行程度。
Render Pipeline,決定了引擎的游戲運行時候的性能和表現(xiàn),某種程度上是引擎的核心,場景如何管理、如何組織復(fù)雜多變的顯示元素,渲染順序,渲染框架,如何高效實現(xiàn)光照、陰影,如何調(diào)用底層繪圖接口等等,引擎程序員有多厲害主要是看這個,最近看了cry engine的程序員介紹pbr,重金屬風(fēng)格啊,男程序渾身打孔,請腦補美劇里面的那種重金屬青年(逃
Effect,3D引擎的核心是如何真實的模擬現(xiàn)實世界,最好能夠宏大史詩,讓玩家沉浸,簡單的講,次時代,這個是很大的坑,后續(xù)補。
2,引擎組成
3D引擎最核心的兩個技術(shù)點,資源管理和渲染模塊。現(xiàn)在成熟的引擎,遇到問題,查官方文檔或者網(wǎng)上找資料,基本上可以解決,不過資源管理和渲染模塊,前者需要悟性加上大量經(jīng)驗尤其是上線項目經(jīng)驗的積累,后者的話,基本上是引擎的核心了,多少人皓首窮經(jīng)都不得其精通之法。
引擎框架,引擎如何組織運行,游戲循環(huán),各種子系統(tǒng)的集成等等
資源管理,引擎組織素材、文件管理、打包資源、游戲加載進內(nèi)存、資源卸載等等。這個影響兩個核心的點,如何組織大量素材加上如何高效管理內(nèi)存,前者至少需要有全局意識,后者需要大量經(jīng)驗的積累。
渲染模塊,最底層的繪圖API的調(diào)用,場景如何組織,如何渲染,支撐那些效果,基本上前面的核心三要素都是和這個有關(guān),下面會繼續(xù)聊得。
物理模塊,運動模擬加上碰撞檢測,底層大量的數(shù)學(xué)運算,有成熟的框架庫支撐,參考官方文檔基本上就可以高效實現(xiàn)酷炫效果。兩個很重要的,物理和動畫的結(jié)合,比如布娃娃等等,物件破壞,當(dāng)然,也有用美術(shù)預(yù)制好的碎片做出很好的擊破效果的。
動畫模塊,對大部分游戲來說,就表現(xiàn)而言,基本上僅次于渲染模塊。這個其實內(nèi)容也非常多,倒不是說它比物理模塊技術(shù)麻煩,而是,歷史悠久、流派眾多、風(fēng)格迥異。實現(xiàn)方式也是多種多樣,主流的是骨骼動畫,模型定點(Vertex)綁定骨骼(Bone),骨骼運動,通過計算驅(qū)動Vertex變換?;镜牟シ趴刂疲偬峁┐罅康臓顟B(tài)機和工具以方便設(shè)計人員組合調(diào)優(yōu)。永遠不要低估大神能夠在這塊做出風(fēng)格化甚至是酷炫的效果?。?!
音頻模塊,這個其實蠻有講究的。
跨平臺,兩個點,打包多平臺的安裝包運行和各種平臺碎片化差異化的處理。手游出現(xiàn)之后,這個非常重要,某種程度上決定了引擎的流行程度,cocos和unity的興起很大程度上是跨平臺和易用。一般情況下,底層都是c++,編譯成anroid和ios平臺的庫文件,打包進安裝包運行。
腳本模塊,腳本的話,開發(fā)效率更高,而且熱更新。unity的話,c++嵌入mono以支持c#,往往會再嵌入lua支持熱更新。cocos的話,支持lua和js。
粒子和UI,一般的話,這兩個只是作為渲染模塊的附帶功能的,不過,大部分國產(chǎn)游戲效果主要是看特效,特效的話主要是粒子實現(xiàn)的,UI的話就更不用說了,大家都是拼系統(tǒng)數(shù)值的,大量的工作量都在里面。
引擎工具,項目成員如何使用引擎,引擎強大的功能如何通過很好的接口暴露給使用者,這個的話,決定了團隊的整體開發(fā)效率。
調(diào)試工具,簡單的log,復(fù)雜的各種性能工具和圖形工具,后面會開坑。
3,不忘初心
為何c++
打通任督二脈是什么感覺?游戲技術(shù)往往很雜,也往往很多,c++是主流的底層通用語言,這門語言可以幫你打通各種技術(shù)點,并且可以朝著底層一直發(fā)展。游戲編程的話,很多時候,需要處理大量的業(yè)務(wù)邏輯和技術(shù)點,很雜也很苦逼,有時候,運氣和時機也很重要的,說多了都是累啊。之前的話,可能朝著廣度發(fā)展,技術(shù)學(xué)的多用的多,也是到了深入發(fā)展核心技術(shù)的時候。所謂T型人才,需要用廣泛的知識積累和核心的深入技術(shù)點突破,對游戲編程的話,往往是渲染。
VR的未來如何?c++打通底層的話,應(yīng)對VR的話,應(yīng)該不會出現(xiàn)技術(shù)債。大量的好手都去做VR,有種說法,VR處于技術(shù)紅利期,大家都還在積累技術(shù)經(jīng)驗,這個和手游不一樣,手游興起的話,某種程度上是創(chuàng)意,之前大量的公司都在嘗試各種想法,后來的網(wǎng)易兩個西游出來后,大量的研發(fā)團隊重新找回自己的打法和思路,然后行業(yè)主流迅速固化。VR興起的話,可能是這種大廠和前期技術(shù)積累的好手,直接發(fā)力,一波拉到很高的制高點,之前VR的話,unity感覺也行,最近感覺虛幻才是很多團隊的真愛,不知道未來會如何??(逃
為何底層
這個世界唯一不變的就是變化,計算機是個層層抽象的過程,底層技術(shù)給上層技術(shù)提供支撐,上層技術(shù)變化多花樣多,跟著潮流走很累很迷茫的。底層很多時候,很苦澀。以武俠為例把,底層技術(shù)類似于扎馬步練吐息,很基礎(chǔ)也很費腦,打通之后,至少感覺,走路輕了好多,艾瑪,我竟然會飛了,這種感覺。底子和內(nèi)功打好了,外功修煉起來快,不排除類似于獨孤九劍這種,招式制勝,天下武功,唯快不破。
何為底層
渲染。
4,渲染
a, 基礎(chǔ)
Pipeline,3d轉(zhuǎn)換2d,2d轉(zhuǎn)換像素,像素著色
光照,模擬光的效果,盡可能真實感,基礎(chǔ)的Phong光照模型。
貼圖,增強模型細節(jié)表現(xiàn)。能夠次時代就次時代,不能夠的話,就看手繪貼圖功力。
攝像機,攝像機控制,將3d轉(zhuǎn)換2d
陰影,shadowmap和lightmap,如果高效實現(xiàn)光影效果
Render To Texture,將場景渲染到貼圖,二次處理實現(xiàn)各種功能和效果。
b,繪圖API
核心,shader base + context state + buffer object。主流的API和GPU都支持shader,方便靈活實現(xiàn)各種效果。context state,繪圖API底層都是通過各種狀態(tài)控制。buffer object,減少cpu和gpu傳送數(shù)據(jù),優(yōu)化性能。
常見API,directx、opengl、opengles
(后面坑太大,下次再補,未完待續(xù))
c,引擎
cocos、threejs、orge、unity、虛幻