摘要:下面列舉了游戲開發中常見的崗位以及兩條常見的協作開發的流水線其實學習游戲引擎,前期對于任何崗位來說路線都是相似的,基本上就是一個熟悉基本操作理解基本概念拓展專業知識的過程。當然這不是絕對的,任何引擎的開始階段和大成階段都是相似的。
這是【游戲開發那些事】第51篇原創
前言:游戲引擎,表面上看是一個工具,實質上卻是一本“技術圖譜”,每一個點擊行為的背后都有著其獨到的意義。每一個模塊都索引著數以萬行的工程代碼、數以百計的科研論文以及數以十計的專業書籍。學習引擎,其實就是一個修煉內功的過程,需要你不斷深挖里面的技術細節,找到對應的學習資料并消化理解。
游戲引擎的概念我在前面文章已經說過,其實就是一套整合了各種游戲開發工具、封裝底層并提供程序函數庫的軟件系統。
游戲引擎架構系統分層
引擎技術固然復雜,但通過這些年的不斷迭代,大部分商業引擎已經擁有了非常完善的編輯系統、不錯的交互體驗、詳細的文檔以及豐富的開發功能,學習的門檻的降低也讓更多的崗位參與進來(進而誕生出了越來越多的獨立游戲)。下面列舉了游戲開發中常見的崗位 以及 兩條常見的協作開發的流水線:
其實學習游戲引擎,前期對于任何崗位來說路線都是相似的,基本上就是一個熟悉基本操作、理解基本概念、拓展專業知識的過程。但進入后期階段,程序員需要擁有更多的思考和知識儲備,需要從代碼層面理解并進一步達到能夠獨立編寫的境界。下面分享一下我近些年學習引擎的經驗,希望能夠幫助到你,
預備階段:引擎選擇,語言基礎,計算機基礎
Cocos、Cryengine、Unity、Unreal我都有接觸過,其實發展了這么多年各有適合的領域,當然也有不少值得詬病的地方。如果非要一句話說出來誰好誰壞是不現實的,也顯得很不負責任(其實每天都有人吐槽UE耦合的Gameplay、藍圖不好維護,吐槽Unity一堆半成品功能、資源加載慢、Mono低效等)。
在我看來,大部分人只要考慮學習引擎的成本,就業難度,發展方向就可以了,考慮目前市面上就業以及影響最廣泛的是Unity和Unreal,所以只推薦這兩個。
不過這兩個引擎一開始就給開發者出了道難題:我是學C#還是C++?
如果你是在校生,有時間慢慢學習,那么更推薦Unreal,開源代碼有更多的研究空間,C++學透了也是好處多多。
如果你是為了盡快找到一份工作或者快速出成品,Unity上手確實更快一些,C#也相對友好一點。
當然這不是絕對的,任何引擎的開始階段和大成階段都是相似的。但Unreal的學習曲線可能曲折一些(C++占了不小的因素),某一個階段的受挫很可能會影響到開發者學習的動力和進度。
不管怎么說,學習語言、看書都是必經之路,無論哪個方向都要沉下心來好好看一兩本經典書籍。比如C++,有《C++ Primer》《Effective C++》《C++語言的設計和演化》入門和拓展,進階有《C++Template》《深入探索C++對象模型》《More Effective C++》,虛幻引擎里面的C++是經過魔改的,如果你專注于寫游戲邏輯,確實用不到太多的C++特性,但考慮到未來的成長還是要盡可能深入。C#書籍,《C#圖解教程》《C#本質論》《C#高級教程》《深入理解C#》《CLR via C#》,如果是純小白,那么先只看一本,其他的慢慢消化。多說一句,語言的本質殊途同歸,真正的大佬也不會拘泥于某一個語言。(PS:上述的電子書都可以從我的公眾號里面獲取)
除了語言外,還有一個更重要的預備知識——計算機基礎。計算機基礎水平決定了你以后的發展速度和天花板(也是科班出身的優勢所在),所以強烈建議學好一門語言并持續性的鞏固操作系統、計算機網絡、數據結構和算法等專業知識。我一直后悔本科的時候并沒有吃透這些內容,所以工作的這些年來從來沒有停止過操作系統等知識的學習。這對很多人來說是一個漫長的過程,因此我們可以在后續的工作中慢慢鞏固。
關于這些知識的意義,比較直觀的例子就是他們通常能幫我解決各種疑難雜癥,比如:
遇到崩潰但是堆棧信息不準(匯編可以輔助我們定位)
本地能編譯通過,但是遠端編譯不過(可能是宏定義或者UnityBuild導致)
手機直接卡死,沒有任何堆棧信息(可能是內存問題)
字符串莫名的亂碼,Debug和Shipping版本表現不一致(編譯器優化問題)
這些問題在沒有融會貫通那些計算機基礎知識前是很難找到解決方案的
第一階段:熟悉游戲開發,學習引擎編輯器的基本操作
如果你從來沒有接觸過任何引擎,也沒有相關的技術積累,那么無論你是做什么崗位都要放平心態,當做一普通的軟件去學習即可。這個階段的目的是熟悉引擎的基本操作,方法就是找一個入門教學視頻/入門書籍跟著做,遇到不懂直接去搜索引擎(或者官方文檔)上查,同時嘗試理解引擎中的一些基本概念,比如unity中的GameObject、Component、Script或者Unreal中的actor、Component、藍圖等(一個月的時間足夠了)。很多大佬總是對教程或者視頻嗤之以鼻,但是在我看來,視頻教學確實是一個速度最快、理解起來最容易的方案。
如果你有一定的相關經驗和積累,可以跳過上面這一步,直接嘗試脫離教程進行Demo的編寫。注意不要急于一口氣把所有的Demo都做一遍,挑一個感興趣的方向并盡可能地去完善,你的收獲會更大的。比如做一個橫版跳躍,一個簡單的RPG或者ACT項目,不同的項目側重點都有所不同,可以提前大致了解一下。此外,脫離教程并不是脫離項目,教程(或者官方案例)里面的項目代碼、藍圖等還是有很大的參考意義的,自己在實現Demo的時候要多對比和借鑒,真正的理解其意圖才能更好的優化和改進。
Unreal和Unity的編輯器界面其實都很相似,觸類旁通
第二階段:補充游戲專業知識,理解基本原理
當你可以輕車熟路地配置一個Prefab,寫寫腳本或者能手到擒來地拉一個藍圖,實現一個Demo后,就不要甘心再當一名熟練工了。接下來我們需要開始補充相關專業知識,盡量理解你常用的每一個模塊以及每一個資源背后的意義。
當你將一個Prefab拖入場景時或是當你打開一個藍圖時,不妨思考一下他到底是個什么東西?為什么模型分為靜態模型和骨骼模型,而不是動態模型?為什么骨骼模型的外表叫做蒙皮?
這個階段你可以配合官方文檔去索引相關的技術概念,比如動畫系統里面的IK、Montage(蒙太奇)、BlendSpace、骨骼動畫、蒙皮動畫,然后就能通過這些概念到網上搜索相關的書籍、論文、視頻等等。如此往復拓展,你的知識圖譜會迅速被打開并充實起來。
動畫系統的書籍有哪些——《Character Animation With Direct3D》
動畫系統一般包含哪些技術—— 骨骼蒙皮動畫、Morph動畫、狀態機、Ragdoll、Root Motion、IK
骨骼蒙皮的技術原理—— Mesh按照權重綁定到骨骼上進行遞歸移動
動畫系統有哪些前沿的技術——Motion Capture、Motion Match、Path Warpping等
(其他模塊類似,時間充裕的話建議系統的學習并整理該模塊相關的知識)
此外,你應該再次打開工程項目和引擎,開始嘗試深入看一些成熟項目(引擎)的代碼。在理解了一些專業的概念后,最好去代碼里面再去看一下他的實現方式,這時候你的理解會比第一階段更加深刻。比如一個組件是如何掛到對象上并生效的?動畫藍圖本質上是一個什么東西?這些動畫數據是如何傳遞的?這個時候你就可以嘗試性的梳理和分析源碼,逐個的解決你的問題。這里建議合理利用堆棧信息、畫圖工具、斷點調試等手段進行輔助。
這個階段其實比較艱難,除了專業知識外你還會遇到各個方面的難題。比如數學物理基礎、語言特性、系統原理、編譯調試方法以及各種Bug,一個一個攻破。
上面這些并不是只針對程序的,其實作為一名合格的策劃/美術,即使不看源碼至少也需要把官方文檔研究透徹,通過一些視頻或者書籍理解部分系統的基本原理。只有真正的理解了這些,你才會真實的感受到自己的進步和成長,以后在面對這些系統的時候也會更加游刃有余。
不過考慮到現代引擎如此的復雜和龐大,有必要逐個模塊去學習么?答案是否定的,畢竟人的精力有限。即使我已經接觸引擎5年了,還是有很多模塊幾乎沒有碰過,不是說他不重要,而是他不在我的規劃目標之內。所以要自己規劃發展方向和感興趣的內容,然后再進行相關資料的查閱和學習。
第三階段:代碼修煉(針對程序員)
這階段的已經對引擎的某些模塊有了專業的理解和思考,下一步就是動手去使用和完善。這個時候光看書籍和資料已經不夠了,需要去看相關的源碼或者Demo來加深理解,并嘗試寫一些復雜的代碼模塊。這一步其實和第二步是相輔相成的,你在查閱各種資料的同時,就可以動起手來仿寫一些相關的代碼并根據自己的需求進行拓展。
比如說你通過書籍《網絡多人游戲架構與編程》理解了什么是幀同步和狀態同步,那么在當前的引擎中使用的是什么方式?能否轉換成另一種方式呢?難點都有哪些?你可能需要下面的能力
計算機網絡基礎知識
TCP/UDP Socket編程
序列化的實現和應用
理解引擎Tick和各個模塊的更新邏輯
C++一些常見的語言技巧
操作系統內存知識
復雜模型的抽象能力
再比如,你了解了AI中基本的尋路算法和行為樹概念,你知道引擎里面是如何實現的么?A*算法在引擎里面有集成么?一個復雜的場景如何拆成格子類似來應用A*呢?能不能自己寫一個簡易的行為樹呢?這些都是我們在學習引擎以及拓展開思路后需要思考和解決的問題。
在編寫這些代碼的時候,你會遇到各種各樣的問題,不僅是對編程能力的鍛煉也是對你個人編程素養以及計算機素養的提升,以往許多看起來高端且理解不夠透徹的知識點也會逐漸被消化和關聯起來,比如內存池以及內存管理、無鎖編程、異步編程、Hook技術、游戲安全等。
另一方面,我們的大腦會不斷地對其進行抽象,引擎的代碼結構也會逐漸變得清晰,漸漸的我們就可以真正地理解模塊的結構和意義。當然,平時如果保持一個畫圖分析、寫筆記總結的習慣,這個過程會更順利一些。
個人繪制的一些架構圖
個人的一些筆記目錄
第四階段:脫離引擎(針對程序員)
這個階段已經基本脫離引擎了,我們更多的是從程序的角度思考架構與實現方式,思考如何將更先進的理論思想(包括架構方式和專業的論文知識)應用到我們的環境中來。你可以嘗試看不同的引擎源碼,參考不同的開源項目與論文,開始對比不同引擎的優劣并嘗試自己實現與優化,不斷磨練自己編碼能力的同時,也在深入著某個方向的專業能力以及架構能力。慢慢地,你會擁有屬于自己的一套思考理論(比如我習慣先跑流程,梳理概念然后關注數據存儲方式),可能打開一個引擎源碼就能猜到哪些模塊是干什么的,它的結構大致是什么樣子的,運行時類型怎么獲取、資源的管理方式是什么、GC的方式是什么、Tick更新的順序是什么、多線程如何進行封裝與應用等等,這時候他是Unity還是Unreal對你個人的技術來說似乎沒有太大的差別了。
不過,你依然很難做到游戲開發領域全方向的專家,換一個方向可能還需要重新走一遍相似的路(當然會快很多)。另一方面,每一個領域的技術也一直在推進著,科研界從沒有停止過論文的產出(比如每年的siggraph,近些年深度學習與游戲AI的結合),工業界也從來不會放慢對新技術投入生產的腳步(比如DX12、Vulkan的推進),我們的學習仍不能止步。
以上就是我關于引擎學習的一些經驗分享。當然最后一個階段某種程度上已經超過我的能力范疇,算是我后續發展的一個方向吧。總的來說,多思考、多提問、多查資料、多寫代碼、多總結,只要堅持下去每個人都可以成為一名優秀的開發者。
始于引擎最后又脫離引擎,這可能就是游戲開發領域的至高境界吧~
文章的最后給大家介紹一個“良心”教程!感興趣的小伙伴可以繼續了解?
正如我前面提到的第一個階段,無論你是從事游戲開發,游戲策劃,游戲測試還是游戲界面,選擇一門高質量的課程學習,入門游戲引擎就會變的輕松易上手,還能提高你的技能,拓展一些實際開發的應用場景,讓你在某些方向上直接進階到中級。
因此,為了讓有意向學習游戲開發的零基礎小伙伴快速進入游戲市場之中,翼狐網聯合擁有十年授課經驗的講師阿雷,為大家推出?Unity 3D游戲開發從入門到精通【知識點教學】的線上課程!
課程視頻
這是一套從入門到精通的教程,通過對案例的實操講解來提高學員的學習熱情,循序漸進地掌握游戲程序開發的各項知識點。
游戲程序開發歸根到底就是軟件工程,是游戲制作環節中不可缺少的重要部分,因此游戲開發需要掌握一定的軟件知識和編程語言。
課程中將會幫助大家掌握Unity軟件的基本操作,以及熟悉運用C#功能實現和掌握特效制作技巧,讓你系統性地學習游戲開發的所有知識。
本課程非常適合對游戲開發或者互動程序開發感興趣的學員。講師將圍繞Unity的基本界面操作展開,重點掌握Unity常規功能模塊的使用。
另外,講師還會對Unity官方API應用展開分析,逐步學會使用C#編寫腳本來實現功能開發。后期講師還會圍繞粒子系統的應用進行講解,讓大家掌握一些粒子特效的制作。
課程通過基礎軟件到游戲制作理論與案例實操,為游戲開發萌新小白量身設計的課程,適用于零基礎學員,當然,如果你有三維軟件以及二維軟件使用基礎的話將會更容易上手。
多模塊教學,囊括豐富的知識
??Unity地形制作
?燈光運用
??畫面后期特效
??攝影機運用
??物理系統
??Mcanim動畫系統
??UI
??Unity API
??RT特效
通過本次系統性地學習,你將會輕松掌握游戲開發必備知識及開發必備技能,讓你快速掌握并精通游戲開發。
▼掃碼查看官網課程▼
劃到文末可領大額滿減優惠券
01
PART
???講師介紹
阿雷
資深講師
傳媒學院專職講師,具備十年授課經驗,有超過4000課時課堂授課經驗,教授的學生達千人,扎根于廣泛的行業經驗,善于將課堂教學與實際工作相聯系,能為學生提供優質的教學內容。
課程案例
02
PART
???三大模塊講解
本課程是零基礎游戲開發流程教學,為了讓大家能夠高效地進行學習,講師將會從Unity軟件基礎開始講起,由淺入深地掌握游戲開發的每一個核心操作環節。
①Unity界面操作
首先講師將會帶領大家學習軟件基礎,通過一個鄉村室外地形環境的制作熟悉Unity的各個模塊操作。
②Unity API部分
第二部分,講師將開始教大家如何快速熟練使用Unity的API開發各種功能板塊,深入理解PBR材質效果制作以及基本效果模塊使用。
③粒子效果
從軟件基礎開始,通過4個基礎案例,熟悉一下粒子特效的基本制作,重點學習粒子系統,為各種實時特效打基礎。
整個課程的講解從前期Unity的各個模塊操作方法開始,從零到整讓大家學會制作游戲開發的各個功能模板,講師還會穿插講解在制作中經常遇到的問題及解決思路,幫助大家更有效地學習。
03
PART
???課程參數
包含內容:高清視頻+配套文件
課程時長:共88課時,約40小時
優勢:本次課程可無限次回放,上課時間地點自由,不怕錯過上課時間。
使用軟件:Unity2019.3.3f1(推薦)、Unity2020.2.2f1
系統支持:不限系統
適合學員:游戲開發,互動場景開發,應用程序開發,短片制作,AR、VR開發,相關專業在校學生
工程文件:教學所有章節的最終工程文件
滑動查看課程目錄
第一章:Unity 3D 入門基礎
課時1:軟件簡介與項目創建
課時2:熟悉UI布局
課時3:導入并熟悉標準素材
課時4:視圖變換與物體變換操作
課時5:反彈球訓練
課時6:熟悉Prefab
課時7:熟悉Play模式
第二章:鄉村自然環境制作-環境制作
課時8:熟悉并創建地形
課時9:雕刻地形與水體形狀
課時10:導入FPS并添加攝影機
課時11:地形調整
課時12:給地形與水體添加材質
課時13:種植樹木
課時14:種植花草
課時15:人工活動環境創建
第三章:鄉村自然環境制作-氣氛烘托
課時16:為水面添加水蒸氣
課時17:添加火焰效果
課時18:添加火焰的聲音效果
課時19:添加環境音效果
課時20:添加環境霧效果
課時21:燈光的簡單烘焙
課時22:添加后期畫面效果
第四章;燈光、材質與效果模塊
課時23:燈光屬性與類型
課時24:GI預設方式
課時25:Probe使用
課時26:拖尾效果
課時27:基本材質類型
第五章:物理模塊
課時28:剛體、物理材質
課時29:碰撞器與觸發器
課時30:角色控制器
課時31:力節點
第六章:"攝影機、音頻與后期畫面處理模塊"
課時32:相機類型與屬性
課時33:場景顯示優化
課時34:音源系統屬性
課時35:攝影機畫面后期處理
第七章:Mecanim動畫系統模塊
課時36:Animation制作簡單動畫
課時37:Animator動畫邏輯關系編輯
第八章:UI模塊
課時38:界面基礎工具與知識
課時39:界面常見元素
課時40:界面制作
第九章:"C#語言基礎"
課時41:變量
課時42:條件選擇語句
課時43:循環語句
課時44:數組
課時45:功能與方法
課時46:類
課時47:屬性
課時48:列表
課時49:枚舉
課時50:字典
課時51:事件與托管
第十章:輸入與變換操作相關功能
課時52:Unity3D核心API知識
課時53:輸入系統基本配置介紹
課時54:鍵盤輸入操作
課時55:鼠標輸入操作
課時56:變換操作
第十一章:常規功能
課時57:矢量與坐標系
課時58:時間處理
課時59:Gizmos
課時60:Prefab與Instantiate
課時61:協同功能
第十二章:物理與角色控制
課時62:力
課時63:碰撞器與觸發器
課時64:角色運動
第十三章:Mecanim與AI
課時65:Mecanim動畫系統控制
課時66:NavMesh與路徑搜索
課時67:編寫AI系統
第十四章:UI、聲音與關卡
課時68:UI相關操作
課時69:UI的功能托管
課時70:聲音
課時71:關卡操作
第十五章:信息與數據
課時72:組件操作
課時73:游戲元素搜尋
課時74:信息廣播
課時75:單例模式
課時76:數據保存與加載
第十六章:粒子系統核心知識
課時77:實時特效基礎知識
課時78:初識粒子系統
課時79:粒子的常規屬性模塊
課時80:粒子的其他屬性模塊與渲染相關模塊
第十七章:火焰效果制作
課時81:基礎火焰粒子系統制作
課時82:火花粒子系統制作與完善
第十八章:技能升級效果制作
課時83:基礎粒子系統制作
課時84:多粒子效果系統完善
第十九章:星光環繞效果制作
課時85:星光基礎粒子系統制作
課時86:Unity星光纏繞效果完善
第二十章:粒子與鼠標互動
課時87:基本粒子與C#腳本編寫
課時88:效果調整與完善
本套課程系統而全面,通過游戲開發的整個流程的分析和講解,帶大家用最簡便高效的方法掌握游戲開發三大核心要點。
如果你也想開發出屬于自己的游戲,又苦于沒有基礎,那么這次的零基礎教學就是最好的學習機會,可不要錯過了。
精彩課程不容錯過
掌握關鍵知識點
突破游戲開發重難點
讓你從0到1獨自開發游戲
課程原價:499元
上新價:399元
(上新活動隨時結束,結束后漲價)
Jerish為粉絲們爭取了
60元優惠券
券后僅需??→??¥?339?
??掃碼立即領券搶購??
優惠券限時限量,先到先得!
※?疊加開通VIP更優惠!全站1000+VIP課程免費看※?
課程可通過翼狐網或翼狐APP進行學習
購買后即可永久觀看哦!
戳“閱讀原文”,立即學習本課程!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121672.html
摘要:但開發的游戲是無法通過網頁發給別人在線玩的,更不能做成微信小游戲。它使用作為開發語言,開發出的游戲可以直接生成微信小游戲網頁安卓等平臺上的版本。 微信群里最大的騷擾源有兩種: 一是轉發#吱口令#~!@#¥%……&*,長按復制此消息領紅包之類的 另一種就是各種小程序和小游戲的分享 前天有同學無意間把一個小游戲分享到了答疑群中,我看了一下,其實游戲的代碼邏輯并不復雜(簡化版的跳一跳,套上個...
閱讀 537·2021-10-19 11:45
閱讀 1346·2021-09-30 09:48
閱讀 1463·2021-08-16 10:56
閱讀 727·2021-07-26 23:38
閱讀 3206·2019-08-30 13:15
閱讀 2589·2019-08-30 12:45
閱讀 1823·2019-08-29 12:14
閱讀 2059·2019-08-26 18:42