一個游戲程序員的學習資料 (zz)

一個游戲程序員的學習資料

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

//z 2012-4-19 14:39:56 PM IS2120@CSDN
一、書籍:

算法與數據結構:

《數據結構(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
語言書,理由為:例子盡是些文本處理。我就納了悶了,難道現代的計算機程序不是將
大量時間消耗在字符串與文本的處理上嗎?)

//z 2012-4-19 14:41:00 PM IS2120@CSDN
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等等,因為當你了解了這些基礎后,那些東西很快就會明白!”可以作為《Programm
ing 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無非是獵奇而已,還不是M
FC的翻版,當然它跨平臺了。就象阻擊手對自己槍械的零件
了如指掌一樣,要想用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,畢竟游戲開發中所多的是模型場景數
據的導入導出,大可不必大動干戈。

//z 2012-4-19 14:40:50 PM IS2120@CSDN
策劃:

《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》

//z 2012-4-19 14:40:37 PM IS2120@CSDN
顧名思義,三本專論,雖然都很不深,但要對未知三維模型格式作反向工程前,研讀Geom
ipmapping地形算法論文前,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++網絡游戲建模與實現》//z 2012-4-19 14:40:33 PM IS2120@CSDN

聯眾的程序員寫的,功力很扎實,講棋牌類游戲編程,特別講了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》

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

三大寶庫://z 2012-4-19 14:40:29 PM IS2120@CSDN

《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》

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

《AI Game Programming Wisdom》

相當于AI編程的Gems。

《PC游戲編程(人機博弈)》//z 2012-4-19 14:40:25 PM IS2120@CSDN


象棋程序為藍本,介紹了很多種搜索算法,除了常見的極大極小值算法及其改進--負極
大值算法,還有深度優先搜索以外。更提供了多種改進算法,
如: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、Irrlic
htRPG、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本質上不是OGR
E的周邊。雖然用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有兩三個跑不過去,差強人意。

//z 2012-4-19 14:40:10 PM IS2120@CSDN

三、網站:

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的才智勞動。
//z 2012-4-19 14:40:00 PM IS2120@CSDN

轉載于:https://www.cnblogs.com/IS2120/archive/2012/04/19/6745907.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379782.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

項目管理中工作分解結構模型(WBSM)的應用

摘要 本文根據工作分解結構(WBS)的工作特點,運用系統工程的思想理論方法,構建了工作分解結構模型,并提出了模型算法;該模型方法的建立使得WBS工作更加簡單可靠、思路清晰、基于更加可靠的科學基礎之上。 1、工作分解結構模型(WBSM)方法工作程…

實訓09.11:java重點內容介紹

package test;/** * OP:面向對象的簡稱* 類:同一特征的屬性* * 類的定義:具有相同特征和行為的事物的抽象。(不具體化)* 對象(實例對象):具體真實存在的實例。* 類是對象的實例:* *…

SPI通信原理---STM32F4--HAL

SPI接口原理 SPI是一種高速全雙工同步通信,在芯片管腳上占用四根線,主要應用在EEPROM、FLASH、實時時鐘、AD轉換器,還有數字信號處理器和數字信號解碼器之間。 SPI接口使用4根線通信。 MISO:主設備數據輸入,從設備數…

Linux 引導管理器 grub2 使用簡介

轉自:杜昌彬的空間 首先向其致敬!有改動。 grub是Linux系統即其他類unix系統的主流bootloder,由于grub原來版本的設計存在很大缺陷,與以前的grub很不相同,其使用和配置也發生很大變化。現在很多Linux發行版本都使用了…

pata1015_ATA / PATA的完整形式是什么?

pata1015ATA / PATA:高級技術附件/并行高級技術附件 (ATA/PATA: Advanced Technology Attachment/Parallel Advanced Technology Attachment) ATA is an abbreviation of Advanced Technology Attachment. ATA has existed for a long time with the name PATA. Whe…

產品

總結一下:  1、核心功能要做透,做的人家追不上,自己的優勢要盡量的發揮;  2、產品口碑要建立,要關注高端用戶,要調整自己心態;  3、敏捷、快,產品迭代要快,快速實現…

FreeRTOS在STM32F429上移植

準備工作 FreeRTOS系統源碼基礎工程,這里我們用跑馬燈實驗 1.在工程里面添加FreeRTOS源碼 在工程里面新建一個名為FreeROTS的文件夾 將FreeRTOS源碼添加到這個文件夾里面 protable里面只需留下Keil、MemMang、RVDS文件夾 2、向工程分組中添加文件 FreeRTOS_C…

C++中的指針與引用(轉)

原文地址:http://www.cnblogs.com/skynet/archive/2010/09/22/1832911.html寫在前面 指針和引用形式上很好區別,但是他們似乎有相同的功能,都能夠直接引用對象,對其進行直接的操作。但是什么時候使用指針?什么時候使用引用呢&…

實訓09.11:數據庫一些簡單操作

new Database 新建數據庫 new Table 新建表 utf-8 編碼格式 primary key 主鍵:特點:在表中是唯一的不可重復的,一般都是學號,編號 auto increment 自增,一般都把主鍵設置為自增 allow nul…

c語言中將整數轉換成字符串_在C語言中將ASCII字符串(char [])轉換為八進制字符串(char [])...

c語言中將整數轉換成字符串Given an ASCII string (char[]) and we have to convert it into octal string (char[]) in C. 給定一個ASCII字符串(char []),我們必須在C中將其轉換為八進制字符串(char [])。 Logic: 邏輯: To convert an ASCII string t…

Javascript的IE和Firefox兼容性匯編收藏.txt

document.form.item 問題 現有問題:現有代碼中存在許多 document.formName.item("itemName") 這樣的語句,不能在 MF 下運行 解決方法:改用 document.formName.elements["elementName"] 集合類對象問題 現有問題&#xff…

FreeRTOS系統配置文件FreeRTOSConfig.h

實際使用FreeRTOS的時候,我們時常需要根據自己需求來配置FreeRTOS,而且不同架構的MCU在使用的時候配置也不同,FreeRTOS的系統配置文件FreeRTOSConfig.h可以完成FreeRTOS的裁剪和配置。FreeRTOSConfig.h分成兩個部分,一個是INCLUDE…

SQL更新多條數據

問題:有兩個不同的表,其中都有一個編號的字段,而且存儲的內容是相同的,需要將一張表中的另外一些字段依據編號去與另一個表中編號對應來更新到另一個表中。 方法:由于在sql中是不支持同時更新多條包含編號的數據的&…

簡單的登錄系統(java+JFrame+Mysql)

連接數據庫 package 注冊信息; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class conn_db{ Connection con; String url null; Statement stmt; public void connection() throws ClassNotFoundException{ //…

冬季止咳化痰的飲食偏方集錦

1、蘿卜蔥白風寒咳嗽 蘿卜1個,蔥白6根,生姜15克.用水三碗先將蘿卜煮熟,再放蔥白,姜,煮剩一碗湯.連渣一次服.宣肺解表,化痰止咳.治風寒咳嗽,痰多泡沫,伴畏寒,身倦酸痛等. 2、紅糖姜棗湯治傷風咳嗽 紅糖30克,鮮姜15克,紅棗30克. 以水三碗煎至過半.頓服,服后出微汗即愈. 驅風散寒.…

c語言中數組越界怎么辦_如果我們使用C語言數組中的越界索引怎么辦?

c語言中數組越界怎么辦Let’s understand first, what is index out of bounds? 首先讓我們了解一下 , 什么是索引超出范圍? Let suppose you have an array with 5 elements then the array indexing will be from 0 to 4 i.e. we can access element…

FreeRTOS任務基礎知識

任務特性 在RTOS中,一個實時應用可以作為一個獨立的任務,支持搶占,支持優先級,每個任務都有自己的堆棧,當任務切換時將上下文環境保存在堆棧中,再次調用任務時,取出上下文信息,繼續…

測試Rockey 4 Smart加密鎖的C語言代碼

測試Rockey 4 Smart加密鎖的C語言代碼 // win32Console_dog_test.cpp : Defines the entry point for the console application. /// // //測試Rockey 4 Smart加密鎖的C語言代碼 // /// #include "stdafx.h" #include <conio.h> #include "time.h" #…

C——任意一個偶數分解兩個素數

題目&#xff1a;一個偶數總能表示為兩個素數之和 以上實例運行輸出結果為&#xff1a; 請輸入一個偶數: 4 偶數4可以分解成1和3兩個素數的和 #include <stdio.h> #include <stdlib.h> int Isprimer(int n); int main() {int n,i;do{printf("請輸入一個偶數&…

c#委托調用另一窗口函數_在C#中使用委托調用成員函數

c#委托調用另一窗口函數Prerequisite: Delegates in C# 先決條件&#xff1a; C&#xff03;中的代表 We can also call a member function of a class using delegates. It is similar to static function calls, here we have to pass member function using an object on t…