僅供個(gè)人學(xué)習(xí)使用,請(qǐng)勿轉(zhuǎn)載,勿用于任何商業(yè)用途。
作者:Clayman
與玩游戲相比,寫(xiě)游戲要復(fù)雜上千萬(wàn)倍,除了需要掌握通用的編程技巧以外,還要有相當(dāng)?shù)膱D形學(xué),物理,數(shù)學(xué)基礎(chǔ),特別是在國(guó)內(nèi),由于相關(guān)資料的缺乏,更是讓初學(xué)者無(wú)從下手。下面總結(jié)了一些入門方法和比較容易入手的資料。
首先你要精通一門高級(jí)語(yǔ)言,比如C++或者C#,其次,要有良好的英文閱讀能力。對(duì)游戲開(kāi)發(fā)者來(lái)說(shuō)英文閱讀能力是最重要也是最基本的工具之一,因?yàn)槟阌龅降拇蟛糠仲Y源都將是英文的,不要總等著別人為你翻譯。慢慢嘗試著閱讀英文資料,你會(huì)發(fā)現(xiàn)其實(shí)也并沒(méi)有那么難:)
剛開(kāi)始,你要做的就是選擇一門圖形API,一般就是DirectX或者OpenGL之間選一個(gè)。如果考慮到跨平臺(tái),那么OGL是首選. 如果只在ms的平臺(tái),則DX是首選。我對(duì)OGL并不是很了解,所以下面大部門資料都是和DX相關(guān)的。當(dāng)然,作為準(zhǔn)備工作之一,你首先要到DirectX Develop Center下載最新版的DirectX SDK。
入門書(shū)籍非常重要,推薦<<Introduction to 3D Game Programming with DirectX 9.0>>(好像去年出了中文版)也就是傳說(shuō)中的龍書(shū),這可以說(shuō)是最好的DX入門教材,F(xiàn)rank Luna從淺入深,討論了DX的方方面面。另外再配上<<DirectX 9 Graphics the Definitive Guide to Direct3D>>,書(shū)名雖然是definitive ,但實(shí)際屬于入門基本的書(shū)。看完這兩本書(shū),你基本上已經(jīng)對(duì)DirectX比較熟悉了。如果你希望學(xué)習(xí)XNA,也是一樣的,畢竟XNA是以DX為基礎(chǔ)。
更新(2010.11.6): <<Introduction to 3D Game Programming with DirectX 9.0>>的第二版,《xxx, A Shader Approach》也可以找到了。
不要一開(kāi)始就看圖形學(xué)的書(shū),這個(gè)時(shí)候你對(duì)圖形編程還沒(méi)有一個(gè)基本的感性認(rèn)識(shí),因此八成看的云里霧里。不要以網(wǎng)上的教程和論壇提問(wèn)作為主要學(xué)習(xí)途徑,找一本好書(shū),系統(tǒng)學(xué)習(xí),效率才最高。不要馬上看SDK里的例子,很多圖形學(xué)的基本原理僅僅通過(guò)讀代碼是不會(huì)明白的。某些年代太過(guò)久遠(yuǎn)的書(shū)最好*不要*看了,比如<<windows游戲編程大師技巧>> <<3D游戲編程大師技巧>> 。有人說(shuō)基本的思想總是不變的,可惜對(duì)于現(xiàn)代GPU來(lái)說(shuō),很多早期的技術(shù)和優(yōu)化技巧早就過(guò)時(shí)了。圖形編程是發(fā)展的非常快的技術(shù),看看GPU的發(fā)展速度,1~2年就是一代產(chǎn)品的革新。
好了,入門之后,是你鞏固和拓展視野的階段。現(xiàn)在看計(jì)算機(jī)圖形學(xué)就比較合適了。吐血推薦<<Real-Time-Rendering>>,這本書(shū)算得上是所有圖形程序員的必讀書(shū)籍和參考手冊(cè)了。最近剛出了第三版(更新:已經(jīng)有電子版了)。可惜國(guó)內(nèi)只有第二版,稍微有點(diǎn)老,如果實(shí)在找不到第三版,還是值得一讀。國(guó)內(nèi)其他所有以圖形學(xué)命名的書(shū)都有一個(gè)共同點(diǎn):枯燥,過(guò)時(shí)。只需看看其中二維三維變換和曲線曲面表示的部分即可。如果這個(gè)時(shí)候發(fā)現(xiàn)你當(dāng)年數(shù)學(xué)沒(méi)有學(xué)好,那么有三本數(shù)學(xué)書(shū)是為游戲程序員量身定制的:<<3D Math Primer for Graphics and Game Development>>, <<Mathematics for 3D Game Programming and Computer Graphics>>和<<Essential Mathematics Guide 2nd Edition>>,第一本書(shū)有中文版,最后一本則是08年才出的新書(shū)。
更新(2010.11.6) 看完上述入門書(shū)籍之后,就應(yīng)該花點(diǎn)時(shí)間好好的完整閱讀DirectX文檔以及部分sample了,加深對(duì)DX整個(gè)系統(tǒng),函數(shù)的了解。你會(huì)發(fā)現(xiàn)普通論壇里60%的問(wèn)題都是文檔里講過(guò)的。
其實(shí)入門之后,就沒(méi)有固定的學(xué)習(xí)路線了,最好根據(jù)你感興趣的方向來(lái)學(xué)習(xí)。
Shader方面:
《Cg_tutorial》和《The Complete Effect and HLSL Guide》都是不錯(cuò)的入門材料,當(dāng)然還有SDK文檔。<<Shaders for Game Programmers and Artists>>有大量入門的例子。<<Advanced Lighting And Materials With Shaders>>詳細(xì)介紹了各種光照模型和技術(shù)。<<GPU Gems>> 1~3冊(cè)肯定是必讀的,雖然有1,2有中文版,但某些翻譯并不是很理想,強(qiáng)烈建議直接看英文版。ShaderX系列也是很經(jīng)典的系列,每年出版一本,包含了最新的實(shí)時(shí)渲染技術(shù),如今已經(jīng)出了第6冊(cè)了。不過(guò)網(wǎng)絡(luò)上只能找到1~3冊(cè)。1,2冊(cè)大部分shader都是用asm寫(xiě)的,不過(guò)看懂原理,轉(zhuǎn)換為HLSL也并不難。另外Nvidia SDK和ATI SDK也是學(xué)習(xí)shader的重要資源。最后還有剛出的<< Programming Vertex, Geometry, and Pixel Shaders>>
更新(2010.4.30):ShaderX已經(jīng)出版了第7冊(cè),后續(xù)的版本由于版權(quán)原因,改名為GPU Pro: Advanced Rendering Techniques,仍然每年出版一本。
更新(2010.11.6): 天朝人民的智慧是無(wú)限的,很多圖形學(xué)的新書(shū)都能在taobao買單翻印的紙版了,包括ShaderX系統(tǒng)等等.....
更新(2010.11.6): 關(guān)于ShaderX和GPU Gems常常有人問(wèn)我較老的幾冊(cè)值不值得看,還有看不懂怎么辦。這里是我個(gè)人的看法,僅供參考:ShaderX和GPU Gems收錄的都是比較前沿的技術(shù),雖然每本之間沒(méi)有連續(xù)性,但很多技術(shù)都建立在之前的方法上。有時(shí)間的話,建議從第一本看起。兩本書(shū)都屬于論文集,章節(jié)之間并沒(méi)有太多連續(xù)性,所以不必從第一頁(yè)看到最后一頁(yè),選擇你感興趣的部分即可。比如對(duì)陰影感興趣,就只看陰影相關(guān)的章節(jié),你可以看到整個(gè)陰影技術(shù)近10年的發(fā)展,變化,很有價(jià)值。另外,書(shū)里很多前沿,實(shí)驗(yàn)性的技術(shù),由于硬件限制,通常要2,3年后才有可能普及,現(xiàn)在看以前的幾冊(cè)也不會(huì)太"過(guò)時(shí)"。 最后,這樣的書(shū)內(nèi)容涉及了圖形學(xué)的方法面面,2d,3d,圖像處理,ai,游戲構(gòu)架,gpgpu等等,范圍太過(guò)廣泛,特別是GPU Gems相比ShaderX更偏重學(xué)術(shù)研究,很多技術(shù)最終不一定能實(shí)際應(yīng)用到產(chǎn)品中,有些章節(jié)看不懂也屬于正常現(xiàn)象。
地形:
<<Real Time 3D Terrain Engines Using C++ And DX9>>非常全面的討論了關(guān)于地形渲染的各種技術(shù),至少應(yīng)該把第5~9章都瀏覽一遍。之后便可以 到virtual terrain查閱近期的地形渲染技術(shù)。
更新(2010.11.6): 經(jīng)常嘗試用PIX分析你電腦上的游戲,地形渲染通常是最容易分析的部分,而且可以讓你馬上了解目前流行的地形渲染方法。
模型導(dǎo)入和動(dòng)畫(huà):
<<Advanced Animation with DirectX>>,僅此一本足以。
更新(2010.5.5):<<Character Animation With Direct3D>>已經(jīng)可以很容易的找到了, 此書(shū)介紹了目前最新的游戲動(dòng)畫(huà)技術(shù),作者是xbox360大作Alan Wake的開(kāi)發(fā)人員,完全可以替代上面提到的那本。
物理:
<<Game Physics>>和<<Game Physics Engine Development>>都不錯(cuò)。<<Real-time Collision Detection>>是碰撞檢測(cè)方面最好的書(shū)。:<<3D Game Engine Design, 2nd>>的8,9章也值得一看。
LOD:
<<Level of Detail for 3D Graphics>>
Ray tracing:
<< Physical-Based Rendering - From Theory to Implementation>>
更新(2010.4.30): 一本免費(fèi)的入門教程Another Introduction to Ray Tracing
更新(2010.11.6): 此書(shū)已有第二版,而且某網(wǎng)站有翻印版出售。
引擎設(shè)計(jì):
說(shuō)實(shí)話,這方面還沒(méi)有特別好的書(shū),大概越是核心的內(nèi)容,越少有人愿意寫(xiě)吧。<<3D Game Engine Architecture Engineering Real-Time Applications with Wild Magic>>只有第三章值得一讀。<<3D Game Engine Programming>>可以選部分感興趣的章節(jié)看看,不過(guò)總的來(lái)說(shuō),講的比較淺。
更新:<<3D Game Engine Design, Second Edition>>出了影印版本,此書(shū)是<<3D Game Engine Architecture Engineering>>更新版,強(qiáng)烈推薦。
最近發(fā)現(xiàn)<<Pro OGRE 3D Programming>>也很不錯(cuò),200多頁(yè)短小精干,但是可以讓讀者快速了解一個(gè)既有引擎的設(shè)計(jì)和構(gòu)架。
更新(2010.7.15): 新出的《Game Engine Architecture》非常不錯(cuò),注意是Jason Gregory的版本。如果只推薦一本引擎方面的書(shū),絕對(duì)是這本。傳說(shuō)有掃描電子版了。
更新(2010.6.28): <<Game Engine Gems>>是關(guān)于引擎設(shè)計(jì)的新系列叢書(shū),與ShaderX類似,也是每年一本,目前已經(jīng)出版了第一冊(cè),已有電子版
AI & Game Programming
<<Programming Game AI by Example>>非常不錯(cuò),好像還有中文版,備選<<Artificial Intelligence for Games>>(已有第二版)。當(dāng)然<<AI Programming Wisdom>>系列也是必讀作品,不過(guò)目前網(wǎng)絡(luò)上只有1~2冊(cè)。
更新(2010.5.28):<<AI Game Engine Programming>>已比較好找了,雖然說(shuō)這是一本名不副實(shí)的書(shū),并沒(méi)有完全介紹一個(gè)"one for all"類型的引擎,也沒(méi)有具體算法討論,但針對(duì)各種不同類型游戲的AI設(shè)計(jì)做了詳細(xì)介紹,可作為一本指參考導(dǎo)性書(shū)選擇閱讀。
網(wǎng)絡(luò):mai%25##&%...(本人網(wǎng)絡(luò)白癡 +_+........)
綜合:
<<Game Programming Gems>>系列,不過(guò)由于內(nèi)容涉及的過(guò)于廣泛,文章質(zhì)量參差不齊,選擇性閱讀就可以了。歷年GDC, Gamefest,Siggraph等大型會(huì)議的paper也是應(yīng)該關(guān)注的。至于那些“All in one”或者n天較你寫(xiě)出個(gè)FPS游戲的書(shū)就不要讀了,這類書(shū)的通病是什么都說(shuō)了,結(jié)果什么也沒(méi)說(shuō)清楚。
除了書(shū)以外,再推薦一些不錯(cuò)的網(wǎng)絡(luò)資源:
http://www.gamedev.net/ 除了大量教程以外,論壇里多年累計(jì)下來(lái)的內(nèi)容保羅萬(wàn)象。好好利用論壇搜索,你會(huì)發(fā)不管你多厲害,那里總有一些比你強(qiáng)大的人在很久以前就遇到了和你同樣的問(wèn)題,并且給出了解決方案。
Nvidia和ATI的開(kāi)發(fā)者中心
creators.xna.com XNA官方網(wǎng)站
http://www.gamasutra.com/ 與GameDev類似
http://www.beyond3d.com/ 這里的除了討論軟件以外,還能看到對(duì)硬件構(gòu)架的分析
http://www.gameres.com/ 國(guó)內(nèi)唯一比較專業(yè)的游戲編程網(wǎng)站,可惜和GameDev相比就顯得太寒磣了-_-#
當(dāng)然,不要忘了收集各大論壇里牛人們的blog:)
最后,僅僅靠看書(shū)是不夠的,多寫(xiě)多練才是王道。
ps:以上書(shū)籍,除了特別注明的以外,都是可以通過(guò)網(wǎng)絡(luò)或者書(shū)店入手的。不要找我要電子書(shū),我能找到的,相信你也能找到,你找不到的,我肯定也沒(méi)有 :)
pps:如果你非要轉(zhuǎn)這篇文章,至少應(yīng)該保留原文鏈接和作者吧.................
zz:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html
偶然看到這篇文章,作者的功力還是相當(dāng)不錯(cuò)的!起碼比我好。。值得去學(xué)習(xí)啊!