遊戲程式設計師的學習

2021-07-13 12:44:37 字數 5201 閱讀 3042

遊戲開發:乙個遊戲程式設計師的學習資料

一、書籍:

演算法與資料結構:

《資料結構(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》

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

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吧。

程式設計師合同

廣西嘉程科技 勞動合同 甲方 招 聘 用乙方 為職工,雙方根據 中華人民共和國勞動法 和 廣西勞動合同管理規定 等法律 法規,在平等自願 協商一致的基礎上,訂立本合同,建立勞動關係,並共同遵守履行。一 合同期限 甲 乙雙方同意按以下方式來確定本合同期限 有固定期限 從年月日起到年月日止 合同期限為壹...

程式設計師面試

作為面試官,在面試程式設計師時,都會關注哪些問題?與其他崗位相比,程式設計師相對來說會內向一些,思維也會更嚴謹 更有個性。企業招聘程式設計師就是要求他能和團隊一起完成既定的開發任務,所以重點從技能水平 學習能力 團隊合作及工作心態等幾個方面考察程式設計師。技術水平是對程式設計師最基本的要求,很多企業...

程式設計師簡歷

個人基本資料 出生日期 1982 06 12性別 女婚姻狀況 未婚身高 厘公尺體重 公斤 求職意向描述 應聘崗位 計算機專業人員 系統分析員 軟體 軟體測試工程師 internet開發工程師 通訊類專業人員 崗位描述 軟體程式設計師,c程式設計師,c 程式設計師,j a程式設計師,it客戶銷售人員和...