轉,學習書目

 

**************************************************************************
* 體系篇
************************

+-----------+-----------------+------------+
|  GUI(L4)  |   Network/DB(L5) |  2D/3D (L6)  |
+-----------+-----------------+------------+
|   系統API(L2)       |   compiler/tool(L3)        |
+------------------------------------------+
|                 硬件/操作系統(L1)                    |
+------------------------------------------+


=========================================================
======                        L1 - Layer 1 (硬件/操作系統)                     ======
=========================================================

此 Layer 主要是介紹操作系統的實現。

《Intel 64 and IA-32 Architectures Software Developer's Manuals》
http://www.intel.com/products/processor/manuals/
x64/x86 體系結構權威手冊,可以下載到 pdf 版本。

《深入理解計算機系統》
http://www.douban.com/subject/1230413/
計算機軟硬件體系結構深入淺出的介紹。

《LINUX內核源代碼情景分析》
http://www.douban.com/subject/1240321/

《Windows內核情景分析》
http://www.douban.com/subject/3715700/
兩本情景分析,是以代碼爲實例,解說了兩大操作系統的具體實現。實踐性比較強。

《深入解析Windows操作系統》
http://www.douban.com/subject/2031396/
Windows官方著作,理論多,實踐少。

《自己動手寫操作系統》
http://www.douban.com/subject/1422377/
《Orange S:一個操作系統的實現》
http://www.douban.com/subject/3735649/
一個作者同一系列的兩本書,看一本即可。操作系統的入門材料。

 

=========================================================
======                         L2 - Layer 2 (系統API)                           ======
=========================================================

系統級對象、API的使用,比如 Process, Thread, Mutex, Socket 等等。

《Windows核心編程》
http://www.douban.com/subject/3235659/

《UNIX環境高級編程》
http://www.douban.com/subject/1692629/

 

=========================================================
======                         L3 - Layer 3 (libc/compiler)                    ======
=========================================================

使用高級語言,用好編譯器、調試工具是必不可少的基礎。至於是否需要研究編譯器原理,則只是個人愛好了。

《Compilers: Principles, Techniques, and Tools》
http://www.douban.com/subject/1866231/
《Advanced Compiler Design and Implementation》
http://www.douban.com/subject/1821532/
《Modern Compiler Implementation in C》
http://www.douban.com/subject/1886911/
三本講解編譯器實現的大部頭,喜愛編譯器原理的同學可以參考下。

《Linkers and Loaders》,
http://www.douban.com/subject/1436811/
鏈接和裝載方面的權威理論著作。
中文版下載,http://www.oldlinux.org/oldlinux/viewthread.php?tid=10713

《鏈接、裝載與庫》
http://www.douban.com/subject/3652388/
可以看作是《Linkers and Loaders》的升級中文版。

《軟件調試》
http://www.douban.com/subject/3088353/
《Windows高級調試》
http://www.douban.com/subject/3781532/
Windows 下的兩本 debugging 寶典。

《Makefile/GCC/GDB 學習》
網上很多資料,可以任意 google。當然,gcc/gdb manual 是最詳細的,雖然有點枯燥。

http://sourceware.org/binutils/docs/gprof/index.html
http://valgrind.org/
http://dmalloc.com/
linux 下幾個性能、內存檢查的常用工具。

 

=========================================================
======                              L4 - Layer 4 (GUI)                           ======
=========================================================

GUI app 算是 desktop app,雖然是做遊戲,但也免不了寫點小工具,比如:地圖編輯器、資源打包工具等等。
所以 GUI 知識也是需要的。這裏介紹的都是 C/C++ 的 GUI 庫,一般我們的做法是把 C/C++ 庫封裝到腳本(lua/python),
直接通過腳本寫具體的邏輯。MFC 是 windows 官方的古老東西,廉頗老矣,可以不用學習了。
當然,其實用 C# 做界面也是很方便的。Java 也行,就是有點慢。

《Programming Windows Fifth Edition》
http://www.douban.com/subject/1456779/
理解 C/C++ 版的 win app 是如何運作的,第五版是最經典的一個版本。

《深入淺出MFC》
http://www.douban.com/subject/1482240/
這本書其實並不會告訴你MFC怎麼用,而讓你瞭解到一個 C++ GUI framework 應該具備哪些最基本的元素。如:消息傳遞、RTTI等等。

《MFC Windows程序設計》
http://www.douban.com/subject/1128016/
MFC 每個控件的詳細介紹,不過不熟悉 MFC 的同學可以不用學了。

wxWidgets
http://www.wxwidgets.org/
Qt
http://www.qtsoftware.com/
GTK+
http://www.gtk.org/
三者是跨平臺的UI庫,wx與MFC比較像。學一即可滿足日常需求,實際工作中,我們用 wx 比較多。

 

=========================================================
======                         L5 - Layer 5 (Network/DB)                     ======
=========================================================

Network,如果只從 socket api 來說,只屬於“系統API”,但網絡遊戲中,服務端程序還是非常重要的,所以我把其
單獨分爲一個 Layer,且同時涵蓋了網絡、數據存儲兩者。

《TCP/IP 詳解》 Vol 1/2/3
http://www.douban.com/subject/1099252/
http://www.douban.com/subject/1231729/
http://www.douban.com/subject/1095214/
IPv4 原理的權威書籍

《UNIX Network Programming》 Vol 1/2
http://www.douban.com/subject/1174626/
http://www.douban.com/subject/1231788/
UNIX 網絡編程的權威著作

libevent
http://www.monkey.org/~provos/libevent/
RakNet
http://www.jenkinssoftware.com/
ACE
http://www.cse.wustl.edu/~schmidt/ACE.html
Ice
http://www.zeroc.com/
四個跨平臺的網絡封裝庫,其中 libevent 是最輕量級的,而 RakNet 是專爲遊戲設計。
ACE/Ice 都是比較重量級的,可以閱讀其代碼,學習一些網絡框架的設計思想。

MaNGOS
http://getmangos.com/
WOW 的模擬服務端,C++ 代碼還是很清晰的。

Mud OS
http://www.mudos.org/
LDMud
http://www.bearnip.com/lars/proj/ldmud.html
古老的 mud 遊戲的服務端,雖然代碼老了點,結構亂了點,但也是很多網絡遊戲的服務端雛形。


《深入淺出MySQL》
http://www.douban.com/subject/3012338/
公司同事的作品,MySQL非常好的入門書籍。:-)

《High Performance MySQL》
http://www.douban.com/subject/3101726/

SQLite
http://www.sqlite.org/
MySQL
http://www.mysql.com/
SQLite 是基於文件的DB,配合 GUI 程序用來做存儲,還是很不錯的。

 

=========================================================
======                       L6 - Layer 6 (2D/3D)                              ======
=========================================================

《遊戲編程大師技巧》 Vol 1/2
http://www.douban.com/subject/1230286/
http://www.douban.com/subject/1321769/
兩本書本別介紹了 2D/3D 的基礎。非常非常好的入門資料,特別是 3D 那本,介紹了寫3D程序所需要的數學/3D知識。

《3D Engine Design》
http://www.china-pub.com/192098&ref=ps
介紹了主流的3D遊戲引擎應如何設計。作者同時實現了 WildMagic,一款開源的3D引擎。

WindSoul
http://blog.codingnow.com
http://www.codingnow.com/2000/index.html
雲風GG的力作,2D遊戲引擎。

HGE
http://hge.relishgames.com/
2D 引擎的另一個發展方向,用 3D 渲染 2D。(利用硬件加速)

Box2D
http://www.box2d.org/
2D 物理引擎

IrrLicht
http://irrlicht.sourceforge.net/
代碼清晰,結構簡單,適合入門閱讀。

ogre
http://www.ogre3d.org/
結構清晰,但重量級的開源3D引擎

Bullet
http://www.bulletphysics.com/wordpress/
ODE
http://www.ode.org/
兩款開源的3D物理引擎

 

 


**************************************************************************
* 語言篇
************************

語言是工具,語言沒有好壞,只有是否適用,以及你對其有多少的熟練度。
越熟悉,才能寫出結構更好、效率更高的代碼。
我只列出遊戲部常用的開發語言,C#/Java/Lisp 不在此列。:-)

 

=========================================================
======                                       C/C++                                 ======
=========================================================

C++ 是門不算古老但足夠複雜的語言。實踐中,高級的 template 特性的濫用,回導致代碼不好維護。
所以在考慮深入 C++ 的高級特性前,可以先讀讀此 blog。Just thinking, 項目中需要這麼多高級特性麼?
http://blog.csdn.net/pongba/archive/2007/05/16/1611593.aspx
下面我就不列出我認爲有點“偏”的 C++ 圖書了。雖然只想列幾本重點的,也發現列了不少。- -#

《The C Programming Language》《C++ Primer》《The C++ Programming Language》
http://www.douban.com/subject/1236999/
http://www.douban.com/subject/2696025/
http://www.douban.com/subject/1767741/
三本基礎書,C++ 的讀其中一本即可。

《C陷阱與缺陷》
http://www.douban.com/subject/1102097/
《C專家編程》
http://www.douban.com/subject/2377310/
《C/C++ 深層探索》
http://www.douban.com/subject/1232030/
C/C++ 的提高篇

《Effective C++》《More Effective C++》《Effective STL》
http://www.douban.com/subject/1453373/
http://www.douban.com/subject/1457891/
http://www.douban.com/subject/1792179/
Effective 三套件

《C++ 編程規範》
http://www.douban.com/subject/1480481/
編碼規範的書很多,看一本就好,其他的東西,實踐中慢慢體會。

《C++標準程序庫自修教程與參考手冊》
http://www.douban.com/subject/1110941/
《STL 源碼剖析》
http://www.douban.com/subject/1110934/
STL 最好的兩本參考手冊。

《Imperfect C++》
http://www.douban.com/subject/1470838/
《深度探索C++對象模型》
http://www.douban.com/subject/1091086/
提升 C++ 內力的兩本書。

《道法自然:面向對象實踐指南》
http://www.douban.com/subject/1231194/
《C++實踐之路》
http://www.douban.com/subject/1102104/
上面的書,如果都還偏理論的話,這兩本書就是用實踐說話了。

 

=========================================================
======                                   Lua                                         ======
=========================================================

《Programming Lua, 2nd》
http://www.douban.com/subject/3076942/
《Lua Reference》
http://www.lua.org/manual/5.1/
我最喜歡這種簡單的語言 :-) 書籍少,好學,但又很實用。

 

=========================================================
======                                       Python                                 ======
=========================================================

Python 的書也很多,看完下面兩本,剩下的再參考官方 manual 也就差不多了。

《Learning Python》
http://www.douban.com/subject/3243372/
基礎篇

《Python Cookbook》
http://www.douban.com/subject/1418172/
提高篇

 

 


**************************************************************************
* 算法/數據結構篇
************************

算法涉及的範疇也很廣泛,這裏偏重介紹數據結構的基礎書籍。

《算法導論》
http://www.douban.com/subject/1152912/
理論基礎篇

《Art of Computer Programming》
http://www.douban.com/subject/1418402/
沒啥可介紹的,算法著作中的《葵花寶典》。

 

 

**************************************************************************
* 軟件設計篇
************************

設計模式就是些名詞,方便大家交流時,更準確地瞭解對方用了怎樣的程序結構。

《設計模式》
http://www.douban.com/subject/1099305/
《Head First Design Pattern》
http://www.douban.com/subject/1400656/
《大話設計模式》
http://www.douban.com/subject/2334288/
第一本是經典著作,但有點理論化,稍顯晦澀。後兩本則是通俗易懂型的,老外的例子和我們生活上有點差異,
好像第三本更適合我們,呵呵。

《重構》
http://www.douban.com/subject/1229923/

《UNIX編程藝術》
http://www.douban.com/subject/1467587/
軟件設計的 KISS 原則 (Keep It Simple, Stupid)

《Pattern-Oriented Software Architecture》 Vol 1/2/3/4/5
http://www.douban.com/subject/1232017/
http://www.douban.com/subject/1137259/
http://www.douban.com/subject/1444890/
一共五卷,不過中文版似乎還只有三卷。其中卷二對網絡框架的設計有比較大的參考意義。

 

 


**************************************************************************
* 開發方法篇
************************

不同的開發方法論,適用於不同規模的開發團隊。傳統的軟件工程,比較適合需求固定的龐大的系統。而遊戲
開發與之相反,團隊規模小而需求變化快,所以 Agile Development (敏捷方法) 比較適合我們。
各種敏捷方法中,我個人比較喜歡 scrum,公司好幾個工作室也在實施。下面是個人的一點總結,僅供參考:
http://kasicass.blog.163.com/blog/static/39561920081289380384/
最後一句話:方法是死的,靈活運用,找到屬於自己團隊最佳的實踐。

《代碼大全》
http://www.douban.com/subject/1477390/
http://blog.codingnow.com/cloud/CodeComplete
EKP上有鏈接電子版:http://nie.netease.com/main/department/tech/ziyuanzhongxin/dianzishuji/jishushuji/代碼大全2中文版(完整清晰版).pdf/view


《人月神話》
http://www.douban.com/subject/2230248/
說起項目管理,這本書總還是要去讀讀的。

《I. M. Wright's Hard Code》
http://www.douban.com/subject/3259433/
來自 M$ 的項目管理經驗書

《敏捷迭代開發管理者指南》
http://www.douban.com/subject/1801394/

《Agile Software Development with Scrum》
http://www.douban.com/subject/1153186/
Scrum 發起者的著作,用於理解 scrum 的各種概念

《超越傳統的軟件開發》
http://www.douban.com/subject/1220623/
上面的都是國外和尚唸的經,這裏強烈推薦一本國人的作品,寫得很實在。可惜網上已經買不到了,公司圖書館裏還有得借。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章