與玩游戲相比,寫游戲要復(fù)雜上千萬倍,除了需要掌握通用的編程技巧以外,還要有相當(dāng)?shù)膱D形學(xué),物理,數(shù)學(xué)基礎(chǔ),特別是在國內(nèi),由于相關(guān)資料的缺乏,更是讓初學(xué)者無從下手。下面總結(jié)了一些入門方法和比較容易入手的資料。
首先你要精通一門高級語言,比如C++或者C#,其次,要有良好的英文閱讀能力。對游戲開發(fā)者來說英文閱讀能力是最重要也是最基本的工具之一,因為你遇到的大部分資源都將是英文的,不要總等著別人為你翻譯。慢慢嘗試著閱讀英文資料,你會發(fā)現(xiàn)其實也并沒有那么難:)
剛開始,你要做的就是選擇一門圖形API,一般就是DirectX或者OpenGL之間選一個。如果考慮到跨平臺,那么OGL是首選. 如果只在ms的平臺,則DX是首選。我對OGL并不是很了解,所以下面大部門資料都是和DX相關(guān)的。
當(dāng)然,作為準(zhǔn)備工作之一,你首先要到DirectX Develop Center下載最新版的DirectX SDK。
入門書籍非常重要,推薦<<Introduction to 3D Game Programming with DirectX 9.0>>(好像去年出了中文版)也就是傳說中的龍書,這可以說是最好的DX入門教材,F(xiàn)rank Luna從淺入深,討論了DX的方方面面。另外再配上<< Advanced 3D Game Programming With DirectX 9.0>>,書名雖然是advanced,但實際上沒有多少advanced級別的內(nèi)容?赐赀@兩本書,你基本上已經(jīng)對DirectX比較熟悉了。如果你希望學(xué)習(xí)XNA,也是一樣的,畢竟XNA是以DX為基礎(chǔ)。
不要一開始就看圖形學(xué)的書,這個時候你對圖形編程還沒有一個基本的感性認(rèn)識,因此八成看的云里霧里。不要以網(wǎng)上的教程和論壇提問作為主要學(xué)習(xí)途徑,找一本好書,系統(tǒng)學(xué)習(xí),效率才最高。不要馬上看SDK里的例子,很多圖形學(xué)的基本原理僅僅通過讀代碼是不會明白的。某些年代太過久遠(yuǎn)的書就不要看了,比如《windows游戲編程大師技巧》(總看到有人在找這本書)。有人說基本的思想總是不變的,可惜對于現(xiàn)代GPU來說,很多早期的技術(shù)和優(yōu)化技巧早就過時了。圖形編程是發(fā)展的非?斓募夹g(shù),看看GPU的發(fā)展速度,1~2年就是一代產(chǎn)品的革新。
好了,入門之后,是你鞏固和拓展視野的階段,F(xiàn)在看計算機(jī)圖形學(xué)就比較合適了。吐血推薦<<Real-Time-Rendering>>,這本書算得上是所有圖形程序員的必讀書籍和參考手冊了。最近剛出了第三版(更新:已經(jīng)有電子版了)。可惜國內(nèi)只有第二版,稍微有點老,如果實在找不到第三版,還是值得一讀。國內(nèi)其他所有以圖形學(xué)命名的書都有一個共同點:枯燥,過時。只需看看其中二維三維變換和曲線曲面表示的部分即可。如果這個時候發(fā)現(xiàn)你當(dāng)年數(shù)學(xué)沒有學(xué)好,那么有三本數(shù)學(xué)書是為游戲程序員量身定制的:<<3D Math Primer for Graphics and Game Development>>, <<Mathematics for 3D Game Programming and Computer Graphics>>和<<Essential Mathematics Guide 2nd Edition>>,第一本書有中文版,最后一本則是08年才出的新書。
其實入門之后,就沒有固定的學(xué)習(xí)路線了,最好根據(jù)你感興趣的方向來學(xué)習(xí)。
Shader方面:《Cg_tutorial》和《The Complete Effect and HLSL Guide》都是不錯的入門材料,當(dāng)然還有SDK文檔。<<Shaders for Game Programmers and Artists>>有大量入門的例子。<<Advanced Lighting And Materials With Shaders>>詳細(xì)介紹了各種光照模型和技術(shù)。<<GPU Gems>> 1~3冊肯定是必讀的,雖然有1,2有中文版,但某些翻譯并不是很理想,強(qiáng)烈建議直接看英文版。ShaderX系列也是很經(jīng)典的系列,每年出版一本,包含了最新的實時渲染技術(shù),如今已經(jīng)出了第6冊了。不過網(wǎng)絡(luò)上只能找到1~3冊。1,2冊大部分shader都是用asm寫的,不過看懂原理,轉(zhuǎn)換為HLSL也并不難。另外Nvidia SDK和ATI SDK也是學(xué)習(xí)shader的重要資源。最后還有剛出的<< Programming Vertex, Geometry, and Pixel Shaders>>
地形:<<Real Time 3D Terrain Engines Using C++ And DX9>>非常全面的討論了關(guān)于地形渲染的各種技術(shù),至少應(yīng)該把第5~9章都瀏覽一遍。之后便可以 到virtual terrain查閱近期的地形渲染技術(shù)。
模型導(dǎo)入和動畫:<<Advanced Animation with DirectX>>,僅此一本足以。
物理:<<Game Physics>>和<<Game Physics Engine Development>>都不錯。<<Real-time Collision Detection>>是碰撞檢測方面最好的書,可惜目前還沒有電子版。
LOD:<<Level of Detail for 3D Graphics>>
Ray tracing:<< Physical-Based Rendering - From Theory to Implementation>>
引擎設(shè)計:說實話,這方面還沒有特別好的書,大概越是核心的內(nèi)容,越少有人愿意寫吧。<<3D Game Engine Architecture Engineering Real-Time Applications with Wild Magic>>只有第三章值得一讀。<<3D Game Engine Programming>>可以選部分感興趣的章節(jié)看看,不過總的來說,講的比較淺。更新:<<3D Game Engine Design, Second Edition>>出了影印版本,強(qiáng)烈推薦。最近發(fā)現(xiàn)<<Pro OGRE 3D Programming>>也很不錯,200多頁短小精干,但是可以讓讀者快速了解一個既有引擎的設(shè)計和構(gòu)架。
AI:<<Programming Game AI by Example>>非常不錯,好像還有中文版,備選<<Artificial Intelligence for Games>>。當(dāng)然<<AI Programming Wisdom>>系列也是必讀作品,不過目前網(wǎng)絡(luò)上只有1~2冊。
網(wǎng)絡(luò):%##@%...(本人是網(wǎng)絡(luò)白癡 +_+........)
綜合:<<Game Programming Gems>>系列,不過由于內(nèi)容涉及的過于廣泛,文章質(zhì)量參差不齊,選擇性閱讀就可以了。歷年GDC, Gamefest t,Siggraph等大型會議的paper也是應(yīng)該關(guān)注的。
至于那些“All in one”或者n天較你寫出個FPS游戲的書就不要讀了,這類書的通病是什么都說了,結(jié)果什么也沒說清楚。
除了書以外,再推薦一些不錯的網(wǎng)絡(luò)資源:
www.GameDev.net 除了大量教程以外,論壇里多年累計下來的內(nèi)容保羅萬象。好好利用論壇搜索,你會發(fā)不管你多厲害,那里總有一些比你強(qiáng)大的人在很久以前就遇到了和你同樣的問題,并且給出了解決方案。
Nvidia和ATI的開發(fā)者中心
creators.xna.com XNA官方網(wǎng)站
www.gamasutra.com 與GameDev類似
www.beyond3d.com 這里的除了討論軟件以外,還能看到對硬件構(gòu)架的分析
www.ziggyware.com 最好的XNA教程網(wǎng)站
www.gameres.com 國內(nèi)唯一比較專業(yè)的游戲編程網(wǎng)站,可惜和GameDev相比就顯得太寒磣了-_-#
當(dāng)然,不要忘了收集各大論壇里牛人們的blog:)
最后,僅僅靠看書是不夠的,多寫多練才是王道。