`
udj38udj
  • 浏览: 14376 次
社区版块
存档分类
最新评论

来自同行朋友的book list

阅读更多

来自同行朋友的book list
2011年04月24日
  ************************************************** ************************
  * 体系篇
  ************************
  +------------+------------------------+----------- -----+
  |  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/  http://www.svbug.com/documentation/comp.unix.progr ammer-FAQ/faq_toc.html
  ================================================== =======
  ======                          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?ti d=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.ht ml
  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/161 1593.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/
  提高篇
  最近开始对 Java 又产生了点兴趣(2011.03),也列一些 Java 的书吧。
  《Java Power Tools》
  编译、构建、bug追踪、自动测试、持续集成。介绍你每天都必须使用的工具,All in One book。
  ************************************************** ************************
  * 算法/数据结构篇
  ************************
  算法涉及的范畴也很广泛,这里偏重介绍数据结构的基础书籍。
  《算法导论》
  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/395619200 81289380384/
  最后一句话:方法是死的,灵活运用,找到属于自己团队最佳的实践。
  《代码大全》
  http://www.douban.com/subject/1477390/
  http://blog.codingnow.com/cloud/CodeComplete
  《人月神话》
  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/
  上面的都是国外和尚念的经,这里强烈推荐一本国人的作品,写得很实在。可惜网上已经买不到了,公司图书馆里还有得借。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics