遊戲開發完整學習路線
在軟體開發中,遊戲開發這個方向看起來目標很明確,但其實是個領域很廣的方向,入門的時候如果得不到指點一二,很容易誤入歧途,相反,如果走這條路之前能得到前人的一些指路,是可以事半功倍的。
平臺與程式語言選擇
首先,遊戲開發的平臺就有很多型別:
個人主機平臺:Windows、Linux、Mac OC;
移動平臺:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
專業主機平臺:Xbox、PlayStation、Will等。
如果你想從事移動平臺的遊戲開發,Android主流JAVA語言,iOS主流Object-C語言,那麼你就要去學習這個平臺主流的語言,而在個人主機上主流的遊戲開發語言現在包括以後很長時間也還是C++。
但是並不是所不同平臺的遊戲開發,就毫無共通之處,學了這個到了另一個平臺就無用了。不是這樣的,程式設計的世界裡你走得越遠你會發現很多東西的本質都是相似的,例如你如果紮實地理解了C++的基本語法(而不是死記硬背),日後再轉Java語言也不是很難的事情,因為它們本質的物件導向特性還有各種程式語言特性都是相通的。
所以,如果你想走得遠,在學習的時候不能簡單流於表面,對於一樣知識越深入到底層,你就越能看到其它知識與其的異曲同工之處,因此你將比別人更輕鬆。但是,當然一開始最好儘可能是貼合自己的專屬領域和程式語言,這樣能儘快地在這個領域持有一席之地。
無論你選擇哪個平臺,遊戲開發這個浩大的工程都離不開遊戲引擎,所以這裡都有二條路線讓你選擇:
只使用遊戲引擎;
使用遊戲引擎並深入學習遊戲引擎原理。
線路一:只使用遊戲引擎
對於第一條路線,遊戲引擎的使用並不困難,因此適合想快速上手遊戲開發工作的人。我們工作大多數時候也不會自己開發遊戲引擎,所以這樣對於一般的日常工作也沒什麼大礙。對於只使用遊戲引擎的人來說,入門階段要做的就是看該引擎的教程(書籍、視訊、網上部落格、網上教程、官方幫助文件等),並且熟練該教程所使用的程式語言。
所以你要做的第一件事,就是去了解現在流行的遊戲引擎。因為不同平臺下的效能不同,支援的程式語言也不盡相同,所以針對不同平臺下的流行的遊戲引擎也是不同的(方括號裡面是特別推薦的,基於開源性、易用性、效能與效果等方面的綜合水平推薦):
windows或遊戲主機:【Unreal】、寒霜、CE3
蘋果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
安卓:【unity3d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
網頁:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。
在選擇遊戲引擎的時候,儘可能選用流行的遊戲引擎,因為這個遊戲引擎流行意味著官方的功能比較完善和易用,問答社群也比較多人解疑。各個遊戲引擎也各有千秋,Unity3d勝在簡單易用,對效能要求不高,但是效果不夠華麗,因而一般用在移動平臺而不會用在電腦或遊戲主機。Unreal勝在開源免費,而且效果也很出色,但是對裝置要求比較高,因而常常用來開發效果絢麗的大型遊戲。cocos2d-x也是開源免費的,在2D領域深有造詣,但是缺點是不視覺化開發。另外,如果你想了解遊戲引擎原理,那麼首要考慮的就是開源的遊戲引擎。
不同遊戲引擎使用的程式語言或者指令碼語言可能是不一樣的,所以當你想要學習某個遊戲引擎的時候,也應該留意該遊戲引擎所使用的語言。大部分情況是,Windows用的的是C++,同時結合lua或python指令碼語言。而ios平臺下使用Objective-C或swift,安卓平臺下使用Java。但這不是必然的,例如Unity在各個平臺下都可以用C#或者javascript指令碼語言。
下面是商業上流行的遊戲引擎詳細比較:
1) Unreal4(虛幻4)
適用平臺:Microsoft Windows、Mac OS X、iOS、Android、虛擬現實裝置(包括但不限於SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平臺。
程式語言:C++或無需編寫程式碼。
優點:開源免費,畫面效果出色,已有多款商業大作經驗。同時,它還能跨平臺,商店資源豐富,提供了無需編寫程式碼即可製作遊戲的強大功能(視覺化開發)。
缺點:開發機器配置要求較高。
2) Unity3D
適用平臺:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store應用程式、Mac、Linux/Steam OS、網路播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
程式語言:C#、javascript、Boo。
優點:方便易用,中文資料豐富,跨平臺,商店資源豐富,視覺化開發。
缺點:畫面效果一般,不是免費開源,引擎效率比較低。
3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)
適用平臺:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5瀏覽器、Windows Phone 7 & 8、Xbox 360。
程式語言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
優點:開源免費,跨平臺,中文資料豐富,2D技術豐富且成熟。
缺點:不視覺化開發,3D方面技術不成熟。
4) CryEngine3
適用平臺:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
程式語言:C++、Lua。
優點:畫面效果世界一流,視覺化開發,跨平臺。
缺點:開發機器配置要求較高,不是免費開源。
5) Frostbite3(寒霜3)
適用平臺:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
程式語言:C++。
優點:畫面效果出色,視覺化開發,跨平臺。
缺點:開發機器配置要求較高,不是免費開源。
6) Egret(白鷺)
適用平臺:HTML5、iOS、Android、Windows Phone。
程式語言:TypeScript、JavaScript。
優點:免費開源,配套工具多,全中文文件,視覺化開發,跨平臺。
缺點:支援平臺較少,大多數時候用於開發對效能和效率要求不高的小遊戲。
但是使用遊戲引擎畢竟是停留在表面看不到本質,當遊戲開發的時候出現了某些問題或者特殊需求,你往往很難處理。而且遊戲引擎技術日新月異,你所學的幾乎都是別人留下來的方法,而不是其本質思想。如果將來別的遊戲引擎興起,你又要重新學習另外的遊戲引擎怎麼使用。在很多大公司裡面,甚至都有自己公司內部專用的引擎(如網易公司的風魂引擎、金山公司的劍網3引擎、蝸牛公司的Flexi引擎等等)。所以單純地走這條路線,可能不會讓你走得很遠並且可能會日漸乏味。
線路二:使用遊戲引擎並深入瞭解遊戲引擎原理
對於第二條路線,深入學習遊戲引擎原理短時間不會讓你的工作有什麼卓越的成效,但是可以彌補只使用遊戲引擎導致的問題,而且學習遊戲引擎原理,更多時候不是一定就為了自己日後要造個遊戲引擎,而是更深入理解自己的遊戲引擎,更好地使用它。當然,千里之行始於足下,經常學習遊戲引擎底層原理的人到了一定的積累的時候,自己造個遊戲引擎也是可以的。
對於像學習遊戲引擎原理的人來說,需要制定自己明確的長期目標:
1) 首先,一開始可能對遊戲引擎沒什麼概念,建議先使用一兩個遊戲引擎(我推薦C++程式設計師學習虛幻4遊戲引擎,現在是免費開源的,非常值得學習。那些不開源的遊戲引擎儘量不要去學習,因為其對於學習原理來說沒有多大貢獻)。
2) 因為遊戲開發就是一門實時渲染的藝術,所以離不開圖形庫的學習。現在主流的圖形庫是Windows平臺專用的DirectX 11和通用平臺的Opengl。這兩個圖形庫,至少需要入門其中一個。
3) 然後,你就可以開始看計算機圖形學的書籍了。如果你發現你的理論底子不足,這個時候就需要補一下線性代數、基本的微積分、還有3D數學的知識。
4) 遊戲引擎中包含了各個部分,上面的渲染只是遊戲引擎的一部分。還有其它諸如著色器編寫、地形編寫、物理引擎編寫、模型和動畫、人工智慧體設計、網路程式設計等等,完成渲染部分的基本學習後,你可以選擇自己感興趣的部分進行專攻,畢竟我們實際工作大多數時候是團隊開發,而不是單打獨鬥,每個人都應該精通自己所擅長的那部分。
這裡為了文章的緊湊性,我將遊戲引擎的基礎理論知識和各個引擎元件的推薦書籍放到了文章的附錄處。
下表是基礎理論知識和遊戲引擎元件書籍推薦(不必全看,請有選擇地閱讀):
1) 數學基礎
下面這些數學基礎書籍是為遊戲開發量身定製的,比專門看某一數學方向更有效率:
《3D Math Primer for Graphics and Game Development》,有中文版
《Mathematics for 3D Game Programming and Computer Graphics》
《Essential Mathematics Guide》
《Geometric Tools for Computer Graphics》
2) 圖形庫
針對 DirectX 的書籍:
《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龍書,入門必看的
《Practical Rendering and Computation with Direct3D 11》,進階
《Real-Time 3D Rendering with DirectX and HLSL》
針對 OpengGL 的書籍:
《OpenGL SuperBible》,著名的藍寶書,以例子為主,有中文版。但不建議看中文版,翻譯得不好。
《OpenGL Programming Guide》,著名的紅寶書,有中文版。紅寶書更像是手冊,API大全,例子較少,適合熟練者查詢使用。
《OpenGL 4.0 Shading Language Cookbook》,進階,基本上就是API手冊,有中文版。但不建議看中文版,翻譯得不好。
3) 計算機圖形學
《The Nature of Code》,有中文版,比較簡單
《Fundamentals of Computer Graphics》,被國外多所大學採用的入門教材,介紹範圍比較廣,從基本的相關數學到建模、渲染、動畫、應用方面都有提及
《Physically Based Rendering》,主要是離線渲染
《Real-Time-Rendering》,必讀經典!必讀!
《計算機圖形學》,作者舍利
《Computer Graphics》,要看最新的第三版
《計算機圖形學原理及實踐:C語言描述》
4) Shader著色器
《Cg_tutorial》,入門
《The Complete Effect and HLSL Guide》,入門
《Shaders for Game Programmers and Artists》,含有大量入門例子
《Advanced Lighting And Materials With Shaders》,介紹光照模型和技術
《GPU Gems》進階必讀。
《Shader X》系列,每年出版一本,包含最新的實時渲染技術。論文性的比較多,偏難。
《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10為主,很詳細。
5) 地形
《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的討論了關於地形渲染的各種技術。
6) 模型匯入和動畫
《Character Animation With Direct3D》包含了最新的遊戲動畫技術
《Computer Animation》
《Real-Time Cameras》
《Computer Facial Animation》
《Realtime 3D Character Animation with Visual C++》
《Advanced Animation and Rendering Techniques》
《Cloth Modeling and Animation》
7) 網路
《TCP/IP 詳解 卷2》
《Network Programming for Microsoft Windows》
《Advanced Programming in the UNIX Environment》
《Windows核心程式設計》
《Multithreading applications in Win32》
《網路遊戲核心技術與實戰》
8) 物理
《Game Physics》
《Game Physics Engine Development》
《Real-time Collision Detection》,碰撞檢測方面最好的書
《3D Game Engine Design, 2nd》第8、9章值得一看
9) 細節層次
《Level of Detail for 3D Graphics》
10) 光線跟蹤
《Physical-Based Rendering - From Theory to Implementation》
《Another Introduction to Ray Tracing》
11) 人工智慧
《Programming Game AI by Example》有中文版
《Artificial Intelligence for Games》
《AI Programming Wisdom》
《AI Game Engine Programming》
12) 綜合
《Game Programming Gems》,文章的範圍比較廣,選擇性閱讀
《Color and Light in Nature》
《Digital Design of Nature》
《Form+Code in Design, Art, and Architecture》
相關文章
- 前端完整學習路線前端
- WEB前端開發職業學習路線初級完整版Web前端
- iOS開發學習路線iOS
- WEB前端學習路線2024完整版學習Web前端
- HarmonyOS應用開發學習路線
- Web前端開發學習路線圖Web前端
- Java學習路線(完整詳細2019版)Java
- Android 開發者學習路線(2020 版)Android
- 開發十年,留下最完整的Java架構學習路線,學完年薪65WJava架構
- 前端完整學習路線(轉載不知名大神)前端
- web前端就業開發學習路線(乾貨)Web前端就業
- 【精華】安卓開發學習路線規劃安卓
- 全全全棧測試開發學習路線全棧
- 適合新手小白的UI學習路線完整版UI
- Java學習課件框架,12月最新Java學習路線圖(完整詳細版)Java框架
- DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰強化學習遊戲框架
- web前端開發怎麼樣學習?看這份web前端學習路線Web前端
- 學習嵌入式的開發線路,新手怎麼學習嵌入式?
- AI 學習路線:從Python開始機器學習AIPython機器學習
- 機器學習能在遊戲開發中做什麼?機器學習遊戲開發
- 最新Java學習路線圖(完整詳細版)-千鋒Java教學出品Java
- 適用於初學者的完整雲端計算學習路線指南
- 全棧開發自學路線全棧
- web前端開發自學路線:html+css+JavaScript的學習方法Web前端HTMLCSSJavaScript
- 適合普通大學生的 Java 後端開發學習路線Java後端
- 大資料開發學習Hadoop路線圖(詳細篇)大資料Hadoop
- 寫給大資料初學者,從零開始學習大資料開發的完整路線大資料
- 前端學習路線前端
- Vue學習路線Vue
- JAVA學習路線Java
- Python學習路線Python
- Oracle學習路線Oracle
- 遊戲開發雜記(三) 開發及學習過程中的體會遊戲開發
- Java學習路線圖,內附完整Java自學視訊教程+工具經驗Java
- 遊戲開發流程與思想學習筆記(持續更新)遊戲開發筆記
- 學習Python可以做遊戲開發嗎?Python入門教程Python遊戲開發
- GitHub超火開發者路線相簿有AI學習路線了!star數近30萬GithubAI
- 小白如何學習大資料開發,大資料學習路線是怎樣的?大資料
- 新手Java學習路線乾貨教材 《Java Web開發實戰》JavaWeb