遊戲程式猿養成計畫

2021-09-07 12:32:03 字數 4246 閱讀 2433

與玩遊戲相比,寫遊戲要複雜上千萬倍,除了須要掌握通用的程式設計技巧以外,還要有相當的圖形學,物理,數學基礎,特別是在國內。因為相關資料的缺乏,更是讓剛開始學習的人無從下手。以下總結了一些入門方法和比較easy入手的資料。

首先你要

精通一門高階語言,pc上遊戲的首選語言就是

c++。

其次。要有良好的英文閱讀能力。對遊戲開發人員來說英文閱讀能力是最重要也是最主要的工具之中的乙個,由於你遇到的大部分資源都將是英文的,不要總等著別人為你翻譯。

慢慢嘗試著閱讀英文資料,你會發現事實上也並沒有那麼難:)

接下來,選擇一門圖形api,比方directx或者opengl。假設考慮到跨平台,那麼opengl,opengl es(移動平台)是首選. 假設僅僅在ms的平台。則dx是首選。

但非常多樣例仍然僅僅在曾經的dx sdk中。最後的版本號事2023年6月公布的。

入門書籍很重要。推薦<>(好像去年出了中文版)也就是傳說中的龍書,這能夠說是最好的dx入門教材,frank luna從淺入深,討論了dx的方方面面。

另外再配上<>。書名儘管是definitive 。但實際屬於入門主要的書。

看完這兩本書。你基本上已經對directx比較熟悉了。

更新(2010.11.6): 

更新(2013.3.19): 《introduction to 3d game programming with directx xx》 此書的dx10和dx11版眼下也非常easy找到了

更新(2011.10.23):學習dx11的高階書

<>

。最好的dx11參考書。

不要一開始就看圖形學的書,這個時候你對圖形程式設計還沒有乙個主要的感性認識,因此八成看的雲裡霧裡。

不要以網上的教程和論壇提問作為主要學習途徑。找一本好書,系統學習,把各種樣例都親手實現一遍。效率才最高。

不要立即看sdk裡的樣例。非常多圖形學的基本原理只通過讀**是不會明確的。

某些年代太過久遠的書最好*不要*

看了,比方<

這兩本書中僅僅有軟體光柵器部分比較有價值,而對初學來說,高速用現代api實現一些樣例,更能高速建立起對圖形渲染的技術的了解。

好了,入門之後。是你鞏固和拓展視野的階段。

如今看計算機圖形學就比較合適了。**推薦<>,這本書算得上是全部圖形程式猿的必讀書籍和參考手冊了,一定要看第三版。近期剛出了第三版(更新:已經有電子版了)。

國內其它全部以圖形學命名的書都有乙個共同點:枯燥,過時。

僅僅需看看當中二維三維變換和曲線曲面表示的部分就可以。

假設這個時候發現你當年數學沒有學好,那麼下面幾本數學書是為遊戲程式猿量身定製的。基本上覆蓋了全部常見數學和幾何問題:

<<3d math primer for graphics and game development>>  

<>

<>

<>

更新(2010.11.6)  看完上述入門書籍之後,就應該花點時間好好的

完整閱讀directx文件以及部分sample了,加深對dx整個系統,函式的了解。你會發現普通論壇裡60%的問題都是文件裡講過的。

事實上入門之後,就沒有固定的學習路線了,最好依據你感興趣的方向來學習。

shader方面

《cg_tutorial》和《the complete effect and hlsl guide》都是不錯的入門材料,當然還有sdk文件。<>有大量入門的樣例。<>具體介紹了各種光照模型和技術。<> 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更偏重學術研究。非常多技術終於不一定能實際應用到產品中,有些章節看不懂也屬於正常現象。

地形:

<>很全面的討論了關於地形渲染的各種技術。至少應該把第5~9章都瀏覽一遍。

之後便能夠 到virtual terrain查閱最近的地形渲染技術。

更新(2010.11.6): 常常嘗試用pix分析你電腦上的遊戲,地形渲染一般是最easy分析的部分,並且能夠讓你立即了解眼下流行的地形渲染方法。

模型匯入和動畫:

<>,僅此一本足以。

更新(2010.5.5):<>已經能夠非常easy的找到了, 此書介紹了眼下最新的遊戲動畫技術。作者是xbox360大作alan wake的開發者,全然能夠替代上面提到的那本。

物理:

<>和<>都不錯。<>是碰撞檢測方面最好的書。

:<<3d game engine design, 2nd>>的8,9章也值得一看。除此之外,就是各種開源碰撞引擎,比方bullet

lod:

<>

ray tracing:

<< physical-based rendering - from theory to implementation>> 

更新(2010.4.30): 一本免費的新手教程another introduction to ray tracing

更新(2011.10.23): 此書已有第二版。而且有電子版。

引擎設計:

更新(2010.7.15): 新出的《game engine architecture》很不錯,注意是jason gregory的版本號。假設僅僅推薦一本引擎方面的書,絕對是這本。強烈推薦!!

更新(2010.6.28): <>是關於引擎設計的新系列叢書,與shaderx類似,也是每年一本,眼下已經出版了第一冊,已有電子版

ai & game programming

<>很不錯,好像還有中文版,備選<>(已有第二版)。當然<>系列也是必讀作品,只是眼下網路上僅僅有1~2冊。

更新(2010.5.28):<>已比較好找了,儘管說這是一本名不副實的書,並沒有全然介紹乙個"one for all"型別的引擎,也沒有具體演算法討論。但針對各種不同型別遊戲的ai設計做了具體介紹,可作為一本指參考導性書選擇閱讀。

網路:mai%25##&%...(本人網路白痴 +_+........)

綜合:

歷年gdc, gamefest,siggraph等大型會議的*****也是應該關注的。至於那些「all in one」或者n天較你寫出個fps遊戲的書就不要讀了。這類書的通病是什麼都說了,結果什麼也沒說清楚。

除了書以外。再推薦一些不錯的網路資源:

除了大量教程以外,論壇裡多年累計下來的內容保羅永珍。

好好利用論壇搜尋,你會發無論你多厲害,那裡總有一些比你強大的人在非常久曾經就遇到了和你相同的問題,而且給出了解決方式。

nvidia和ati的開發人員中心

與gamedev類似

這裡的除了討論軟體以外。還能看到對硬體構架的分析

當然,不要忘了收集各大論壇裡牛人們的blog:)

最後,只靠看書是不夠的,多寫多練才是王道。

遊戲程式設計師養成計畫

與玩遊戲相比,寫遊戲要複雜上千萬倍,除了需要掌握通用的程式設計技巧以外,還要有相當的圖形學,物理,數學基礎,特別是在國內,由於相關資料的缺乏,更是讓初學者無從下手。下面總結了一些入門方法和比較容易入手的資料。首先你要精通一門高階語言,比如c 或者c 其次,要有良好的英文閱讀能力。對遊戲開發者來說英文...

遊戲程式設計師養成計畫

看了這個帖子後發現的文章 與玩遊戲相比,寫遊戲要複雜上千萬倍,除了需要掌握通用的程式設計技巧以外,還要有相當的圖形學,物理,數學基礎,特別是在國內,由於相關資料的缺乏,更是讓初學者無從下手。下面總結了一些入門方法和比較容易入手的資料。首先你要精通一門高階語言,比如c 或者c 其次,要有良好的英文閱讀...

遊戲程式設計師養成計畫

09.3.27更新 與玩遊戲相比,寫遊戲要複雜上千萬倍,除了需要掌握通用的程式設計技巧以外,還要有相當的圖形學,物理,數學基礎,特別是在國內,由於相關資料的缺乏,更是讓初學者無從下手。下面總結了一些入門方法和比較容易入手的資料。首先你要精通一門高階語言,比如c 或者c 其次,要有良好的英文閱讀能力。...