1. 程式人生 > >一個遊戲程式設計師的學習資料

一個遊戲程式設計師的學習資料

想起寫這篇文章是在看侯傑先生的《深入淺出MFC》時, 突然覺得自己在大學這幾年關於遊戲程式設計方面還算是有些心得,因此寫出這篇小文,介紹我眼中的遊戲程式 員的書單與原始碼參考。一則是作為自己今後兩年學習目標的備忘錄,二來沒準對別人也有點參考價值。我的原則是隻寫自己研究過或準備研究的資料,所以內容無 疑會帶上強烈的個人喜好色彩, 比如對網路,資料庫等重要方面完全沒有涉及。因為自己主要對三維圖形引擎, 人工智慧演算法, 腳本系統, 反外掛 (反反外掛? ^-^)等方面感興趣。這學期電腦都沒聯網了,在嶽麓山閉關修煉中(^-^),連這篇文章都得在學校圖書館電子閱覽室(電影放映室?)上傳,內容很多憑記憶寫出, 如有誤差敬請訂正。程式設計師應該在理論學習與實踐程式設計中反覆迭代,所以學習資料是一回事,須知盡信書不如無書。

一、書籍:

演算法與資料結構:

《資料結構(C語言版)》——嚴蔚敏、吳偉民 清華出版社

我覺得其配套習題集甚至比原書更有價值,每個較難的題都值得做一下。

《Introduction to Algorithms》第二版 中文名《演算法導論》

關 於演算法的標準學習教材與工程參考手冊,在去年CSDN網站上其翻譯版竟然評為年度二十大技術暢銷書,同時《程式設計師》雜誌上開設了“演算法擂臺”欄目,這些溯 源固本的舉動,不由得使人對中國現今浮躁不堪的所謂“IT”業又產生了一線希望。這本厚厚的書,幸虧打折我才買得起。雖然厚達千頁,但其英文通俗曉暢,內 容深入淺出,可見經典之作往往比一般水準的書還耐讀。還能找到MIT的視訊教程,第一節課那個老教授嘻皮笑臉的,後面就是一長髮助教上課了。

《C語言名題精選百則 技巧篇》——冼鏡光 機械工業出版社

作 者花費一年時間蒐集了各種常見C程式段的極具技巧性的程式設計法,其內容都是大有來頭的,而且給出了詳細的參考資料。如一個普通的Fibonacci數就給出 了非遞迴解、快速演算法、擴充演算法等,步步深入,直至幾無油水可榨。對於視速度如生命,連一個普通的浮點數轉化為整數都另闢蹊徑以減少CPU cycle的遊戲程式設計師,怎可不看?

《計算機演算法基礎(第二版)》—— 佘祥宣等 華中科大出版社

我看到幾個學校的研究生拿它作教材(研究生才開演算法,太開玩笑了吧)。這本書薄是薄了點,用作者的話來說,倒也“精闢”。其實此書是《Fundamentals of Computer Algorithms》的縮寫版,不過原書出版太久了,反正我是沒找到。

《The Art of Computer Programming》Volume 1-3

作 者Donald E. Knuth是我心目中與馮.諾依曼、Dijkstra、Shannon並列的四位大師。這本書作者從讀大學本科時開始寫,一直寫到博士時,十年磨一劍,足 見其下足了功夫。可作為計算機技術的核心——演算法與資料結構的終極參考手冊。創新處也頗多,譬如常見的Shell排序他在書中提出可用(3i-1)/2的 間隔,這使其稍快於O(n1. 5)。當然這套書描述高度數學化,為此恐怕一般的人(我?)最好還得先看一本數學預備書《Concrete Mathematics》(直譯為混凝土數學?^-^)再說。可惜的是這套書才出到第三卷,並沒有覆蓋全部常見的演算法內容。不過好在對於遊戲程式設計師來說, 越常見的演算法用得越多,這也不算是什麼要命的損失。

《STL原始碼剖析》—— 侯捷 華中科大出版社

侯 捷不用介紹了,華人技術作家中的旗艦,說其有世界級水準也不為過。這本書我以為是C++與資料結構的葵花寶典(欲練此功,必先自宮)。也就是說,不下幾層 地獄很難看懂,因為它要求的預備知識太多了,如STL、資料結構、泛型程式設計、記憶體管理都要很紮實(為此是不是還要看看有記憶體管理設計模式之稱的 《Small Memory Software》這本書呢?),但是一旦看懂,真會是所向披靡。

《Data Structures for Game Programmers》

每個資料結構的例程都是一個小遊戲,還用SDL庫實現了一個演算法演示系統。雖然內容失之於淺,但起碼讓人瞭解了資料結構在遊戲中的作用。

其 實遊戲程式並不比其它程式特殊,甚至要求基本功更加紮實,所以花時間做一些看似與實際應用不甚相干的習題,對今後的工作是大有裨益的。而且有些應用很廣的 演算法,如常被人津津樂道的A*演算法及其變種,牽涉到圖的檢索周遊與分枝-限界法,恐怕還得讀一些艱深的論文才能充分明白運用,如Donald E. Knuth的《An analysis of alpha-beta cutoffs》。其實還有不少此類的好書,如《Data Structures and Algorithms in C++》、《Programming Pearls》、《More Programming Pearls》(演算法珠璣)等,我卻以為要先看嚴謹一點的著作,再看內容隨筆一點的書。

彙編:

《IBM-PC 組合語言程式設計》第二版

國內經典教材。

《The Art of Assembly Language》

這本書足有1600頁,噢!

C語言:

《The C Programming Language》第二版

雖然篇幅短小,但每個例程都很經典。(我們老師開始拿它作教材,後面換為譚小強的C語言書,理由為:例子盡是些文字處理。我就納了悶了,難道現代的計算機程式不是將大量時間消耗在字串與文字的處理上嗎?)

C++:

學過C語言,再學C++,先看這本《C++ Primer》的縮寫版:

《Essential C++》

對C++有個入門瞭解,再看

《C++ Common Knowledge: Essential Intermediate Programming》

就不會有什麼重要的知識點完全不知所措了,接下來是

《The C++ Standard Library : A Tutorial and Reference》

標準庫,當然主要是標準模板庫的標準學習參考手冊,然後最好平時邊寫程式邊參悟。

《Effective C++》等

我是說書名以形容詞 + C++的那些書,計有七八本,慢慢看吧,羅馬不是一日建成的。

(《Essential C++》、《Effective C++》、《More Effective C++》、《Accelerated C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》、《Imperfect C++》,雖然書名格式相似,但每一本都絕非馬虎之作。)

誰說C++程式比C程式要慢?那就請看下面:

《The Design and Evolution of C++》

知其過去才能知其未來,才能應用。

《Inside the C++ Object Model》

揭露C++的編譯器模型。

《Efficient C++ Performance Programming Techniques》

當演算法優化已到極致,在運用匯編之前,最後還可看看此書,有時高階和低階都能做成相同的事情。

還有兩本特別的書:

《Modern C++ Design : Generic Programming and Design Patterns Applied》

作者想把設計模式和泛型程式設計結合起來,並寫了個嘗試提供一切的Loki庫來實作,不過其觀點並未得到C++社群的普遍響應。儘管如此,本書仍稱得上思想前沿性與技術實用性結合的典範。

《C++ Template Metaprogramming》

把 編譯器當作計算器?本書介紹了Boost庫的MPL模板超程式設計庫。當然提到Boost庫,對於遊戲程式設計師不能不提到其中的Graph庫,有《The Boost Graph Library》一書可看。還有其中Python庫,號稱國內首款商業三維圖形引擎的起點引擎就用了Boost-Python庫。說實話我覺得起點引擎還 是蠻不錯的,那個自制的三維編輯器雖然介面簡陋,但功能還算蠻完善,給遊戲學院用作教學內容也不錯。另有一個號稱中國首款自主研發的全套網遊解決方案。我 看到它那個三維編輯器,心想這不就是國外一個叫freeworld3D的編輯器嗎?雖然有點偏門,但我以前還較勁嘗試破解過呢。還把英文介面漢化了,大概 用exescope這樣的資源修改軟體就能搞定吧。我又心想為什麼要找freeworld3D這個功能並不太強大的編輯器呢?僅僅是因為它便宜到幾十美 金?它唯一特別一點的地方就是支援匯出OGRE圖形引擎的場景格式,這樣一想不由得使人對它圖形引擎的“自主”性也產生懷疑了。這樣的“自主”研發真讓人 汗顏,只要中國還沒封sourceforge這個網站(據說以前和freeBSD網站一起被封過?),國人就能“自主”研發。

有人還會推薦《C++ Primer》《Thinking in C++》《The C++ Programming Language》等書吧,誠然這些書也很好,但我總覺得它們太大部頭了。還不如多花點時間看看國外好的原始碼。

Windows程式設計

《Operating System Concepts》第五版

國內有些作業系統的教程其實就是它的縮寫版。

《Windows 95 System Programming Secrets》

深入剖析了Windows作業系統的種種種種,有人愛看《Linux核心完全註釋》,有人愛看《自己動手寫作業系統》這樣煽情的書,但我想作為商業的作業系統,把Windows核心剖析到這地步也高山仰止了。

《Programming Applications for Microsoft Windows》第四版

先程序執行緒,再虛存管理,再動態連結庫,最多講到訊息機制。作者在序言中說:“我不講什麼ActiveX, COM等等,因為當你瞭解了這些基礎後,那些東西很快就會明白!”可以作為《Programming Windows》的先修課。

計算機體系:

《Computer Systems : A Programmer’s Perspective》

和《The Art of Computer Programming》在我心中是計算機史上兩本稱得上偉大的書,計算機組成原理,作業系統,彙編,編譯原理,計算機網路等等課程匯成這本千頁的大書,因為計算機在作者眼中就是一個整體。

開源閱讀:

《Code Reading : The Open Source Perspective》

張大千臨摹了幾百張明代石濤的山水,畫出的畫以假亂真,後來他去敦煌潛心臨摹幾年,回來畫風大變,終成大家。程式設計師其實有4 0%的時間是在讀別人的原始碼,侯捷先生說:“原始碼面前,了無祕密”,又說“天下大事,必作於細”,可以與他的《上窮碧落下黃泉,原始碼追蹤經驗談》參看。

MFC:

《深入淺出MFC》

我 實在以為沒有看過侯捷先生的《深入淺出MFC》的人多半不會懂得MFC程式設計。其實我是打算用一年多的時間寫一個給遊戲美工用的三維編輯器,順便作為畢業設 計。圖形庫就用MFC吧,反正也沒得選擇。如果要用wxWidgets無非是獵奇而已,還不是MFC的翻版,當然它跨平臺了。就象阻擊手對自己槍械的零件 瞭如指掌一樣,要想用MFC寫出非玩具程式的人一定要了解其內部構造。還有一本書叫《MFC深入淺出》,並不是同一本。

IDE:

《Microsoft Visual Studio 2005 Unleashed》

工欲善其事,必先利其器。當然我認為與其用形如Source Insight、Slick Edit、Code Visualizer之類的程式碼閱讀器、圖形化工具,還不如用自己的大腦。但如果你嫌打原始碼慢的話,可以用Visual AssistX。如果嫌老是寫重複相似的程式碼的話,可以用Code Smith。單元測試可以用CppUnit,Boost庫中的測試框架也不錯。有心情可以吧Visual Studio外接Intel的Compiler,內嵌STLport,但不是大工程,效能分析沒必要動不動就用下VTune吧。

程式設計師之路:

《遊戲之旅——我的程式設計感悟》(#add不怎麼樣)

雲 風大哥。在我心目中游戲程式設計師國外首推卡馬克,國內首推雲風。也許過兩年我會到網易當雲風大哥的助理程式設計師吧。It’s my dream.(^-^)他寫這本書的時候本著只有透徹理解的東西才寫出來,因此內容不會很酷新,但是相信我,每讀一遍都有新的收穫,主要還不是知識上的, 因為知識是學無止境的,授人以魚不如授人以漁,精神上的啟迪才是長久的。誠如經典遊戲《 仙劍 奇俠傳》的主力程式設計師兼美術指導姚壯憲(人稱姚仙)在序言中所說的“雲風得到的只是一些稿費,而整個中國民族遊戲產業得到的將是一次知識的推動”,此言不虛矣。

《程式設計高手箴言》(#add差)

樑 肇新是豪傑超級解霸的作者,本來每個合格的程式設計師(Programmer , 而非Coder)都應該掌握的東西,現在變成了程式設計高手的獨家箴言。不知是作者的幸運還是中國IT業的悲哀。知識點還是講得蠻多的,不過對MFC的地位頗 有微詞。我實在認為MFC的名聲就是那些不懂得用它的人搞臭的。不過作者的牢騷也情有可原,每個具有創造力的程式設計師都應該不太喜歡framework。

《Masters of DOOM: How Two Guys Created an Empire and Transformed Pop Culture》中文名《DOOM啟世錄》

卡 馬克,羅洛斯,這些遊戲史上如雷貫耳的名字。(現在卡馬克已專注於火箭製造上,羅洛斯則攜妻回鄉隱居)要不是沒上過大學的卡馬克和圖形學大師亞伯拉罕的功 勳,可能到現在遊戲中還不知三維為何物。勿庸置疑,在計算機界歷史是英雄們所推動的。這本書真實的記錄了這些塵世英雄的所為所思。

作為程式設計師的我對這幾本策劃與美工的書也產生了濃厚興趣,以前搞過一兩年的3DS MAX外掛程式設計,覺得用maxscript還是好過MaxSDK,畢竟遊戲開發中所多的是模型場景資料的匯入匯出,大可不必大動干戈。

策劃:

《Creating Emotion in Games : The Craft and Art of Emotioneering》

在壯麗煊目的巨集偉三維世界背後,在殘酷的殺戮,動人心魄的情節背後,我們還需要什麼來抓住玩家的心?答對了,就是emotion.真正打動人心的,才是深入骨髓的。

《Ultimate Game Design : Building Game Worlds》

從名字可以看出,寫給關卡設計師的,特別是講室外自然場景的構建頗有可取之處。

《Developing Online Games : An Insider’s Guide》

就象名為反模式的書講軟體團隊運營一樣,這本書講商業運作多過技術。一個歷經艱難,現在盛大的遊戲程式設計師,翻譯了這本書。
美工:

《Digital Cinematography & Directing》

數字攝影導演術,每當你在3DS MAX或者Maya等三維創作軟體中擺放攝影機,設計其運動軌跡時,你可曾想過你也站在導演的位置上了?

《The Animator’s Survival Kit》

看 著這本講卡通角色運動規律的書,一邊產生溫習《貓和老鼠》的念頭,一邊繼續對前不久新聞聯播中關於中國產生了某計算機自動卡通動畫生成軟體報道的蔑視,這 條報道稱此舉可大大加快中國卡通動畫的產量。我且不從技術上探討其是否是在放衛星(其實我知道得很清楚,前文已表,本人搞過一兩年的卡通動畫輔助軟體編 程),但計算機機械生成的動畫怎可代替人類充滿靈性的創作?

《The Dark Side of Game Texturing》

用Photoshop製作材質貼圖,還真有些學問。

三維圖形學:

搞三維圖形學首先還是要紮紮實實的先看解析幾何、線性代數、計算幾何的教材,後面的習題一個都不能少。國內數學書還是蠻好的。蘇步青大師的《計算幾何》稱得上具有世界級水準,可惜中國CAD的巨集圖被盜版給擊垮了。現在是我們接過接力棒的時候了。It’s time!

《Computer Graphics Geometrical Tools》

《計算機圖形學幾何工具演算法詳解》演算法很多,紕漏處也不少。

《3D Math Primer for Graphics and Game Development》

淺易,可作為三維數學的“速食“。

《Mathematics for 3D Game Programming & Computer Graphics》第二版

比上面那本深入一些,證明推理的數學氣也濃一些,可作為專業的數學書與程式設計實踐一個過渡的橋樑吧。內容涉獵也廣,射線追蹤,光照計算,可視裁剪,碰撞檢測,多邊形技術,陰影演算法,剛體物理,流體水波,數值方法,曲線曲面,還真夠豐富。

《Vector Game Math Processors》

想學MMX,SSE嗎,那就看它吧,不過從基礎講起的,要耐心哦。

DirectX:

《Introduction to 3D Game Programming with DirectX 9.0》

DirectX入門的龍書,作者自己寫的簡單示例框架,後面我乾脆用State模式,把所有例子綁到一塊兒去了。

《Beginning Direct3D Game Programming》

作 者取得律師學位後變成了遊戲程式設計師,真是怪也哉。本書雖定位為入門級書,內容頗有獨特可取之處。它用到的示例框架是DXSDK Sample Framework,而不是現在通行的DXUT。要想編譯有兩種辦法吧,一是自己改寫成用DXUT的。二是找舊的Sample Framework。我又懶得為了一個示例框架下載整個早期版本的DirectX,後面在Nvidia SDK 9.5中發現了。

《Advanced Animation with DirectX》

DirectX 高階動畫技術。骨骼系統,漸變關鍵幀動畫,偶人技術,表情變形,粒子系統,布料柔體,動態材質,不一而足。我常常在想,從三維創作軟體匯出的種種效果,變 成一堆text或binary,先加密壓縮打包再解包解壓解密,再用遊戲程式重建一個Lite動畫系統,遊戲程式設計師也真是辛苦。

OpenGL:

《NeHe OpenGL Tutorials》

雖是網路教程,不比正式的書遜,本來學OpenGL就不過是看百來條C函式文件的工夫吧,如果圖形學基礎知識紮實的話。

《OpenGL Shading Language》

OpenGL支援最新顯示卡技術要靠修修補補的外掛擴充套件,所以還要配合

《Nvidia OpenGL Extension Specifications》

來看為上。

《Focus on 3D Models》

《Focus on 3D Terrain Programming》

《Focus on Curves and Surfaces》

顧名思義,三本專論,雖然都很不深,但要對未知三維模型格式作反向工程前,研讀Geomipmapping地形演算法論文前,CAD前,還是要看看它們為上,如果沒從別處得過到基礎的話。

指令碼:

先看

《Game Scripting Mastery》

等自己瞭解了虛擬機器的構造,可以設計出簡單的指令碼解釋執行系統了。

再去查Python , Lua ,Ruby的手冊吧,會事半半功倍倍的。

《Programming Role Playing Games with DirectX 8.0》

一邊教學一邊用DirectX寫出了一個GameCore庫,初具引擎稚形。

《Isometric Game Programming with DirectX 7.0》

三維也是建立在二維的基礎上,這就是這本書現在還值得看的原因。

《Visual C++網路遊戲建模與實現》

聯眾的程式設計師寫的,功力很紮實,講棋牌類遊戲程式設計,特別講了UML建模和Rotional Rose。

《Object-Oriented Game Development》

套用某人的話:“I like this book.”

Shader:

要入門可先看

《Shaders for Game Programmers and Artists》

講在RenderMonkey中用HLSL高階著色語言寫Shader.

再看

《Direct3D ShaderX : Vertex and Pixel Shander Tips and Tricks》

用匯編著色語言,純銀赤金。

三大寶庫:

《Game Programming Gems》

我只見到1-6本,據說第7、8本也出來了?附帶的原始碼常有bug,不過瑕不掩瑜,這套世界頂級遊戲程式設計師每年一度的技術文集,涉及遊戲開發的各個方面,我覺得富有開發經驗的人更能在其中找到共鳴。

《Graphics Gems》全五本

圖形學程式設計Bible,看了這套書你會明白計算機領域的科學家和工程師區別之所在。科學家總是說,這個東西在理論上可行。工程師會說,要使問題在logN的時限內解決我只能忍痛割愛,舍繁趨簡。

《GPU Gems》出了二本

Nvidia公司召集圖形學Gurus寫的,等到看懂的那一天,我也有心情跑去Siggraph國際圖形學大會上投文章碰運氣。

遊戲引擎程式設計:

《3D Game Engine Programming》

是ZFXEngine引擎的設計思路闡釋,很平實,冇太多驚喜。

《3D Game Engine Design》

數學物理的理論知識講解較多,本來這樣就夠了,還能期待更多嗎?

人工智慧:

《AI Techniques for Game Programming》

講遺傳演算法,人工神經網路,主要用到位陣列,圖演算法。書的原型是根據作者發表到GameDev.net論壇上的內容整理出來的,還比較切中實際。

《AI Game Programming Wisdom》

相當於AI程式設計的Gems。

《PC遊戲程式設計(人機博弈)》

以 象棋程式為藍本,介紹了很多種搜尋演算法,除了常見的極大極小值演算法及其改進--負極大值演算法,還有深度優先搜尋以外。更提供了多種改進演算法, 如:Alpha-Beta,Fail-soft alpha-beta,Aspiration Search, Minimal Window Search,Zobrist Hash,Iterative Deepening,History Heuristic,Killer Heuristic,SSS*,DUAL*,MFD and more.琳琅滿目,實屬難得。

反外掛:

《加密與解密(第二版)》 看雪論壇站長 段鋼

破解序列號與反外掛有關係麼?不過,世上哪兩件事情之間又沒有關係呢?

《UML Distilled》 Martin Fowler

很多人直到看了這本書才真正學懂UML。

Martin Fowler是真正的大師,從早期的分析模式,到這本UML精粹,革命性的重構都是他提出的,後來又寫了企業模式一書。現在領導一個軟體開發諮詢公司,去年JavaOne中國大會他作為專家來華了吧。個人網站:MartinFowler.com

設計模式三劍客:

《Design Patterns Elements of Reusable Object-Oriented Software》

《Design Patterns Explained》

《Head First Design Patterns》

重構三板斧:

《Refactoring : Improving the Design of Existing Code》

《Refactoring to Patterns》

《Refactoring Workbook》

軟體工程:

《Extreme Programming Explained : Embrace Change》第二版

其中Simplicity的Value真是振聾發聵,這就是我什麼都喜歡輕量級的原因。

《Agile Software Development Principles,Patterns,and Practices》

敏捷真是炒得夠火的,連企業都有敏捷一說,不過大師是不會這麼advertising的。

《Code Complete》第二版

名著。

數學:

《數學,確定性的喪失》M.克萊因

原來數學也只不過是人類的發明與臆造,用不著供入神殿,想起歷史上那麼多不食人間煙火的科學家(多半是數學家),自以為發現了宇宙運作的奧祕,是時候走下神壇了。

物理:

《普通物理學》第一冊 += 《Physics for Game Developers》

物理我想就到此為此吧,再複雜我可要用Newton Engine,ODE了,等待物理卡PPU普及的那天,就可充分發揮PhysX的功效了,看過最新的《細胞分裂》遊戲Demo演示,成千上萬個Box瘋狂Collide,骨灰級玩家該一邊摸錢包一邊流口水了。

二、開原始碼:

Irrlicht

著 名的鬼火引擎,從兩年前第一眼看到它,這個輕量級的三維圖形引擎,就喜歡上了它。原始碼優雅,高效,且不故弄玄虛。值得每個C++程式設計師一讀,並不限於圖 形程式設計者。它的周邊中也有不少輕量級的東西。如Lightfeather擴充套件引擎,ICE、IrrlichtRPG、IrrWizard.還有 IrrEdit、IrrKlang、IrrXML可用。(可能是為了效率原因,很多開源作者往往喜歡自己寫XML解析庫,如以上的IrrXML庫,即使有現成的tinyXML庫可用。這真會讓tomcat裡面塞Axis,Axis裡面塞JUDDI,弄得像俄羅斯套娃玩具的Java Web Service Coder們汗顏。)

OGRE

排 名第一的開源圖形引擎,當然規模是很大的,周邊也很多。除了以C#寫就的OgreStudio ,ofusion嵌入3DS MAX作為WYSWYG式的三維編輯器也是棒棒的,特別是其幾個場景、地形外掛值得研究。以至於《Pro OGRE 3D Programming》一書專論其用法。搜狐的《天龍八部》遊戲就是以其作為圖形引擎,當然還另外開發了引擎插塊啦。我早知道OGRE開發組中有一箇中 國人謝程式設計師,他以前做了很多年的傳統軟體程式設計。有一次天龍八部遊戲的圖形模組的出錯資訊中包含了一串某程式設計師的工作目錄,有一個資料夾名即是謝程式設計師的 英文名,我據此推斷謝程式設計師即是搜狐北京的主程。看來中國對開源事業還是有所貢獻的嘛,王開源哥哥的努力看來不會白費!(^-^)不過我偵測的手法也有些 像網站資料庫爆庫了,非君子之所為作。

RakNet

基於UDI的網路庫,竟還支援聲音傳輸,以後和OpenVision結合起來做個視聊程式試試。

Blender

聲譽最盛的開源三維動畫軟體,竟還帶一個遊戲引擎。雖然操作以快捷鍵驅動,也就是說要背上百來個快捷鍵才能熟練使用。但是作為從商業程式碼變為開源之作,威脅三維商業巨頭的輕騎兵,歷經十年錘鍊,程式碼達百萬行,此程式碼只應天上有,人間哪得幾回看,怎可不作為長期的原始碼參考?

風魂

二維圖形庫。雲風大哥的成名之作。雖然不代表其最高水平(最高水平作為商業程式碼儲存在廣州網易互動的SVN裡呢),但是也可以一仰風采了。

聖劍英雄傳

二 維RPG。幾個作者已成為成都錦天的主力程式設計師。錦天的老總從一百萬發家,三年時間身價過億,也是一代梟雄了。這份程式碼作為幾年前的學生作品也算可以了, 因為一個工程講究的是四平八穩,並不一定要哪個模組多麼出彩。反正我是沒有時間寫這麼一個東東,連個美工都找不到,只能整天想著破解別人的資源(^- ^)。

Boost

C++準標準庫,我想更多的時候可以參考學習其原始碼。

Yake

我 遇到的最好的輕量級遊戲框架了。在以前把一個工程中的圖形引擎從Irrlicht換成OGRE的嘗試中,遇到了它。OGRE的周邊工程在我看來都很庸腫, 沒有完善文件的情況下看起來和Linux核心差不多。不過這個Yake引擎倒是很喜歡。它以一個FSM有限狀態機作為實時程式的排程核心,然後每個模組: 物理、圖形、網路、指令碼、GUI、輸入等等都提供一個介面,介面之下再提供到每種具體開源引擎的介面,然後再接具體引擎。通過這樣層層抽象,此時你是接 Newton Engine,ODE還是PysX都可以;是接OGRE,Crystal Space還是Irrlicht都可以;是接RakNet還是LibCurl都可以;是接Python,Lua還是Ruby都可以,是接CEGUI還是 others,是接OIS還是others(呵呵,記不起來others)都可以。所以Yake本質上不是OGRE的周邊。雖然用Neoengine的人 都倒向了它,但是現在版本還很早。特別是我認為,學習研究時一定要有這種抽象之抽象,介面之介面的東西把思維從具體的繫結開啟,而開發時抽象要有限度的, 就像蔡學鏞在《Java夜未眠》中講的,面向物件用得過濫也會得OOOO症(面向物件過敏強迫症)。

Quake Doom系列

據說很經典,卡馬克這種開源的黑客精神就值得讚許。把商業原始碼放出來,走自己的創新之路,讓別人追去吧。不過Quake與Unreal引擎的三維編輯器是現在所有編輯器的鼻祖,看來要好好看看了。

Nvidia SDK 9.X

三 維圖形程式設計的大寶庫,這些Diret3D與OpenGL的示例程式都是用來展示其最新的顯示卡技術的。硬體廠商往往對軟體產品不甚在意,原始碼給你看,東西 給你用去吧,學完了還得買我的硬體。Intel的編譯器,PhysX物理引擎大概也都是這樣。Havok會把它的Havok物理引擎免費給別人用嗎?別說 試用版,連個Demo都看不到。所以這套SDK的內容可比MS DirectX SDK裡面那些入門級的示例酷多了,反正我是如獲至寶,三月不知愁滋味。不過顯示卡要so-so哦。我的GeForce 6600有兩三個跑不過去,差強人意。

三、網站:

www.CSDN.net

程式設計師大本營吧,軟文與“新技術秀”討厭了點,blog和社群是精華之所在。

www.GameRes.com

遊戲程式設計師基地,文件庫中還有點東西。投稿的接收者Seabug與聖劍英雄傳的主程Seabug會是同一個人嗎?一個在成都錦天擔當技術重擔的高手還有時間維護網站嗎?我不得而知。

“何苦做遊戲”網站

名字很個性,站長也是歷盡幾年前產業發展初期的艱難才出此名字。

www.66rpg.com

二維遊戲圖片資源很多,站長柳柳主推的RPGMaker 軟體也可以玩一玩吧,但對於專業開發者來說不可當真。

www.GameDev.net

論壇中有不少熱心的國外高手在活動。

www.SourceForge.net

不用說了,世界最大的開原始碼庫,入金山怎可空手而返?看到國外那些學生專案動不動就像模像樣的。(DirectX的稚形就是英國的學生專案,在學校還被判為不合格。)

www.koders.com

源 程式碼搜尋引擎,支援正則表示式,google Lab中也有。當你某種功能寫不出來時,可以看一下開原始碼怎麼寫的,當然不過是僅供參考,開原始碼未必都有產品級的強度。說到google,可看 《Google Power Tools Bible》一書,你會發現,google的眾多產品原來也有這麼多使用門道。

這篇小文足足寫了一天半的時間,不由得使我對侯捷一樣的技術作家長期伏案辛勤勞作深深敬佩了。看來對於書籍或者軟體,都應該尊重作者或者programmer的才智勞動。