博客出處:www.cnblogs.com/clayman/archive/2009/05/17/1459001.htmlhtml
做者:clayman程序員
與玩遊戲相比,寫遊戲要複雜上千萬倍,除了須要掌握通用的編程技巧之外,還要有至關的圖形學,物理,數學基礎,特別是在國內,因爲相關資料的缺少,更是讓初學者無從下手。下面總結了一些入門方法和比較容易入手的資料。算法
首先你要精通一門高級語言,pc上游戲的首選語言就是C++。其次,要有良好的英文閱讀能力。對遊戲開發者來講英文閱讀能力是最重要也是最基本的工具之一,由於你遇到的大部分資源都將是英文的,不要總等着別人爲你翻譯。慢慢嘗試着閱讀英文資料,你會發現其實也並無那麼難:)編程
接下來,選擇一門圖形API,好比DirectX或者OpenGL。若是考慮到跨平臺,那麼OpenGL,OpenGL ES(移動平臺)是首選. 若是隻在ms的平臺,則DX是首選。我對OGL並非很瞭解,因此下面大部門資料都是和DX相關的。固然,做爲準備工做之一,你首先要到DirectX Develop Center下載最新版的DirectX SDK。
更新(2013.3.19) 注意,DirectX庫如今已經整合到了windows sdk中,部分工具也整合到了vs2012中,再也不有單獨的DirectX SDK。但不少例子仍然只在之前的DX SDK中,最後的版本事2010年6月發佈的。windows
入門書籍很是重要,推薦<<Introduction to 3D Game Programming with DirectX 9.0>>(好像去年出了中文版)也就是傳說中的龍書,這能夠說是最好的DX入門教材,Frank Luna從淺入深,討論了DX的方方面面。另外再配上<<DirectX 9 Graphics the Definitive Guide to Direct3D>>,書名雖然是definitive ,但實際屬於入門基本的書。看完這兩本書,你基本上已經對DirectX比較熟悉了。網絡
更新(2010.11.6): <<Introduction to 3D Game Programming with DirectX 9.0>>的第二版,《xxx, A Shader Approach》也能夠找到了。
更新(2013.3.19): 《Introduction to 3D Game Programming with DirectX xx》 此書的DX10和DX11版目前也很容易找到了
更新(2011.10.23):學習DX11的進階書 <<Practical Rendering & Computation with Direct3D 11>> ,最好的DX11參考書。 dom
不要一開始就看圖形學的書,這個時候你對圖形編程尚未一個基本的感性認識,所以八成看的雲裏霧裏。不要以網上的教程和論壇提問做爲主要學習途徑,找一本好書,系統學習,把各類例子都親手實現一遍,效率才最高。不要立刻看SDK裏的例子,不少圖形學的基本原理僅僅經過讀代碼是不會明白的。某些年代太太久遠的書最好*不要*看了,好比<<windows遊戲編程大師技巧>> <<3D遊戲編程大師技巧>> 。有人說基本的思想老是不變的,惋惜對於現代GPU來講,不少早期的技術和優化技巧早就過期了。這兩本書中只有軟件光柵器部分比較有價值,而對初學來講,快速用現代API實現一些例子,更能快速創建起對圖形渲染的技術的瞭解。ide
好了,入門以後,是你鞏固和拓展視野的階段。如今看計算機圖形學就比較合適了。吐血推薦<<Real-Time-Rendering>>,這本書算得上是全部圖形程序員的必讀書籍和參考手冊了,必定要看第三版。最近剛出了第三版(更新:已經有電子版了)。國內其餘全部以圖形學命名的書都有一個共同點:枯燥,過期。只需看看其中二維三維變換和曲線曲面表示的部分便可。若是這個時候發現你當年數學沒有學好,那麼如下幾本數學書是爲遊戲程序員量身定製的,基本上覆蓋了全部常見數學和幾何問題:
<<3D Math Primer for Graphics and Game Development>>
<<Mathematics for 3D Game Programming and Computer Graphics 3rd>>
<<Essential Mathematics Guide 2nd Edition>>
<<Geometric Tools for Computer Graphics>>函數
更新(2010.11.6) 看完上述入門書籍以後,就應該花點時間好好的完整閱讀DirectX文檔以及部分sample了,加深對DX整個系統,函數的瞭解。你會發現普通論壇裏60%的問題都是文檔裏講過的。工具
其實入門以後,就沒有固定的學習路線了,最好根據你感興趣的方向來學習。
Shader方面:
《Cg_tutorial》和《The Complete Effect and HLSL Guide》都是不錯的入門材料,固然還有SDK文檔。<<Shaders for Game Programmers and Artists>>有大量入門的例子。<<Advanced Lighting And Materials With Shaders>>詳細介紹了各類光照模型和技術。<<GPU Gems>> 1~3冊確定是必讀的,雖然有1,2有中文版,但某些翻譯並非很理想,強烈建議直接看英文版。ShaderX系列也是很經典的系列,每一年出版一本,包含了最新的實時渲染技術,現在已經出了第6冊了。不過網絡上只能找到1~3冊。1,2冊大部分shader都是用asm寫的,不過看懂原理,轉換爲HLSL也並不難。另外Nvidia SDK和ATI SDK也是學習shader的重要資源。最後還有剛出的<< Programming Vertex, Geometry, and Pixel Shaders>>
更新(2010.4.30):ShaderX已經出版了第7冊,後續的版本因爲版權緣由,更名爲GPU Pro: Advanced Rendering Techniques,仍然每一年出版一本。更新(2010.11.6): 天朝人民的智慧是無限的,不少圖形學的新書都能在taobao買單翻印的紙版了,包括ShaderX, GPU Pro系統等等.....
更新(2010.11.6): 關於ShaderX和GPU Gems經常有人問我較老的幾冊值不值得看,還有看不懂怎麼辦。這裏是我我的的見解,僅供參考:ShaderX和GPU Gems收錄的都是比較前沿的技術,雖然每本之間沒有連續性,但不少技術都創建在以前的方法上。有時間的話,建議從第一本看起。兩本書都屬於論文集,章節之間並無太多連續性,因此沒必要從第一頁看到最後一頁,選擇你感興趣的部分便可。好比對陰影感興趣,就只看陰影相關的章節,你能夠看到整個陰影技術近10年的發展,變化,頗有價值。另外,書裏不少前沿,實驗性的技術,因爲硬件限制,一般要2,3年後纔有可能普及,如今看之前的幾冊也不會太"過期"。 最後,這樣的書內容涉及了圖形學的方法面面,2d,3d,圖像處理,ai,遊戲構架,gpgpu等等,範圍太過普遍,特別是GPU Gems相比ShaderX更偏重學術研究,不少技術最終不必定能實際應用到產品中,有些章節看不懂也屬於正常現象。
地形:
<<Real Time 3D Terrain Engines Using C++ And DX9>>很是全面的討論了關於地形渲染的各類技術,至少應該把第5~9章都瀏覽一遍。以後即可以 到virtual terrain查閱近期的地形渲染技術。
更新(2010.11.6): 常常嘗試用PIX分析你電腦上的遊戲,地形渲染一般是最容易分析的部分,並且可讓你立刻了解目前流行的地形渲染方法。
模型導入和動畫:
<<Advanced Animation with DirectX>>,僅此一本足以。
更新(2010.5.5):<<Character Animation With Direct3D>>已經能夠很容易的找到了, 此書介紹了目前最新的遊戲動畫技術,做者是xbox360大做Alan Wake的開發人員,徹底能夠替代上面提到的那本。
物理:
<<Game Physics>>和<<Game Physics Engine Development>>都不錯。<<Real-time Collision Detection>>是碰撞檢測方面最好的書。:<<3D Game Engine Design, 2nd>>的8,9章也值得一看,除此以外,就是各類開源碰撞引擎,好比Bullet
LOD:
<<Level of Detail for 3D Graphics>>
Ray tracing:
<< Physical-Based Rendering - From Theory to Implementation>>
更新(2010.4.30): 一本免費的入門教程Another Introduction to Ray Tracing
更新(2011.10.23): 此書已有第二版,而且有電子版。
引擎設計:
說實話,這方面尚未特別好的書,大概越是核心的內容,越少有人願意寫吧。<<3D Game Engine Architecture Engineering Real-Time Applications with Wild Magic>>只有第三章值得一讀。<<3D Game Engine Programming>>能夠選部分感興趣的章節看看,不過總的來講,講的比較淺。
更新:<<3D Game Engine Design, Second Edition>>出了影印版本,此書是<<3D Game Engine Architecture Engineering>>更新版,強烈推薦。
最近發現<<Pro OGRE 3D Programming>>也很不錯,200多頁短小精幹,可是可讓讀者快速瞭解一個既有引擎的設計和構架。
更新(2010.7.15): 新出的《Game Engine Architecture》很是不錯,注意是Jason Gregory的版本。若是隻推薦一本引擎方面的書,絕對是這本,強烈推薦!!
更新(2010.6.28): <<Game Engine Gems>>是關於引擎設計的新系列叢書,與ShaderX相似,也是每一年一本,目前已經出版了第一冊,已有電子版
AI & Game Programming
<<Programming Game AI by Example>>很是不錯,好像還有中文版,備選<<Artificial Intelligence for Games>>(已有第二版)。固然<<AI Programming Wisdom>>系列也是必讀做品,不過目前網絡上只有1~2冊。
更新(2010.5.28):<<AI Game Engine Programming>>已比較好找了,雖說這是一本名存實亡的書,並無徹底介紹一個"one for all"類型的引擎,也沒有具體算法討論,但針對各類不一樣類型遊戲的AI設計作了詳細介紹,可做爲一本指參考導性書選擇閱讀。
網絡:mai%25##&%...(本人網絡白癡 +_+........)
綜合:
<<Game Programming Gems>>系列,不過因爲內容涉及的過於普遍,文章質量良莠不齊,選擇性閱讀就能夠了。歷年GDC, Gamefest,Siggraph等大型會議的paper也是應該關注的。至於那些「All in one」或者n天較你寫出個FPS遊戲的書就不要讀了,這類書的通病是什麼都說了,結果什麼也沒說清楚。
除了書之外,再推薦一些不錯的網絡資源:
http://www.gamedev.net/ 除了大量教程之外,論壇裏多年累計下來的內容保羅萬象。好好利用論壇搜索,你會發無論你多厲害,那裏總有一些比你強大的人在好久之前就遇到了和你一樣的問題,而且給出瞭解決方案。
Nvidia和ATI的開發者中心
http://www.gamasutra.com/ 與GameDev相似
http://www.beyond3d.com/ 這裏的除了討論軟件之外,還能看到對硬件構架的分析
固然,不要忘了收集各大論壇裏牛人們的blog:)
最後,僅僅靠看書是不夠的,多寫多練纔是王道。
ps:以上書籍,除了特別註明的之外,都是能夠經過網絡或者書店入手的。不要找我要電子書,我能找到的,相信你也能找到,你找不到的,我確定也沒有 :)
pps:若是你非要轉這篇文章,至少應該保留原文連接和做者吧.................