diff --git a/game-programmer-zh-cn.dot b/game-programmer-zh-cn.dot
index 3834e90..af7323a 100644
--- a/game-programmer-zh-cn.dot
+++ b/game-programmer-zh-cn.dot
@@ -100,7 +100,7 @@ digraph {
inventgamepython3 [label=<
|
Invent Your Own Computer Games with Python 3rd Ed (2015) |
> URL="https://www.amazon.com/dp/1503212300/"]
makinggamespython [label=< |
Making Games with Python & Pygame (2012) |
> URL="https://www.amazon.com/dp/1469901730/"]
learntoprogramwithminecraft [label=< |
Learn to Program with Minecraft (2015) |
> URL="https://www.amazon.com/dp/1593276702/"]
- adventuresinminecraft [label=< |
零基础学Minecraft编程 |
> URL="https://book.douban.com/subject/26613247/"]
+ adventuresinminecraft [label=< |
零基础学Minecraft编程 (2015) |
> URL="https://book.douban.com/subject/26613247/"]
"3dgpforkids" [label=< |
3D Game Programming for Kids (2013) |
> URL="https://www.amazon.com/dp/1937785440/"]
age5 -> scratchjr -> age8
@@ -129,15 +129,15 @@ digraph {
csmath [label="计算机数学"]
}
- sicp2 [label=< |
计算机程序的构造和解释 |
> URL="https://book.douban.com/subject/1148282/"]
- csapp3 [label=< |
深入理解计算机系统 (原书第2版) |
> URL="https://book.douban.com/subject/5333562/"]
- caaqa5 [label=< |
计算机体系结构 |
> URL="https://book.douban.com/subject/20452387/"]
- mos4 [label=< |
现代操作系统(第3版) |
> URL="https://book.douban.com/subject/3852290/"]
+ sicp2 [label=< |
计算机程序的构造和解释 (2004) |
> URL="https://book.douban.com/subject/1148282/"]
+ csapp3 [label=< |
深入理解计算机系统 (原书第3版) (2016) |
> URL="https://book.douban.com/subject/26912767/"]
+ caaqa5 [label=< |
计算机体系结构 (2012) |
> URL="https://book.douban.com/subject/20452387/"]
+ mos4 [label=< |
现代操作系统(第3版) (2009) |
> URL="https://book.douban.com/subject/3852290/"]
- clrs3 [label=< |
算法导论(原书第3版) |
> URL="https://book.douban.com/subject/20432061/"]
- algorithms4 [label=< |
算法(第4版) |
> URL="https://book.douban.com/subject/19952400/"]
+ clrs3 [label=< |
算法导论(原书第3版) (2012) |
> URL="https://book.douban.com/subject/20432061/"]
+ algorithms4 [label=< |
算法(第4版) (2012) |
> URL="https://book.douban.com/subject/19952400/"]
- concretemaths2 [label=< |
具体数学 |
> URL="https://book.douban.com/subject/21323941/"]
+ concretemaths2 [label=< |
具体数学 (2013) |
> URL="https://book.douban.com/subject/21323941/"]
computationalscieng [label=< |
Computational Science and Engineering (2007) |
> URL="https://www.amazon.com/dp/0961408812/"]
foundation -> { sicp2; csapp3 } -> { caaqa5; mos4 } [arrowhead=normal, style=solid]
@@ -171,39 +171,39 @@ digraph {
cppadvance [label="C++ 进阶"]
}
- tcpl2 [label=< |
C程序设计语言 |
> URL="https://book.douban.com/subject/1139336/"]
+ tcpl2 [label=< |
C程序设计语言 (2004) |
> URL="https://book.douban.com/subject/1139336/"]
- cppprimer5 [label=< |
C++ Primer 中文版 (第 5 版) |
> URL="https://book.douban.com/subject/25708312/"]
- tcpppl4 [label=< |
C++程序设计语言 |
> URL="https://book.douban.com/subject/4604591/"]
- cppstandardlibrary2 [label=< |
C++标准库(第2版) |
> URL="https://book.douban.com/subject/26419721/"]
+ cppprimer5 [label=< |
C++ Primer 中文版 (第 5 版) (2013) |
> URL="https://book.douban.com/subject/25708312/"]
+ tcpppl4 [label=< |
C++程序设计语言 (2010) |
> URL="https://book.douban.com/subject/4604591/"]
+ cppstandardlibrary2 [label=< |
C++标准库(第2版) (2015) |
> URL="https://book.douban.com/subject/26419721/"]
boostcpplibraries2 [label=< |
The Boost C++ Libraries 2nd Ed (2014) |
> URL="https://www.amazon.com/dp/1937434362/"]
- cppconcurrencyinaction [label=< |
C++并发编程实战 |
> URL="https://book.douban.com/subject/26386925/"]
+ cppconcurrencyinaction [label=< |
C++并发编程实战 (2015) |
> URL="https://book.douban.com/subject/26386925/"]
- effectivestl [label=< |
Effective STL中文版 |
> URL="https://book.douban.com/subject/24534868/"]
+ effectivestl [label=< |
Effective STL中文版 (2013) |
> URL="https://book.douban.com/subject/24534868/"]
- exceptionalcpp [label=< |
Exceptional C++(中文版) |
> URL="https://book.douban.com/subject/10785602/"]
- moreexceptionalcpp [label=< |
More Exceptional C++ 中文版 |
> URL="https://book.douban.com/subject/1244943/"]
- exceptionalcppstyle [label=< |
Exceptional C++ Style 中文版 |
> URL="https://book.douban.com/subject/1470842/"]
- cppcodingstandard [label=< |
C++编程规范 |
> URL="https://book.douban.com/subject/5348095/"]
+ exceptionalcpp [label=< |
Exceptional C++(中文版) (2012) |
> URL="https://book.douban.com/subject/10785602/"]
+ moreexceptionalcpp [label=< |
More Exceptional C++ 中文版 (2002) |
> URL="https://book.douban.com/subject/1244943/"]
+ exceptionalcppstyle [label=< |
Exceptional C++ Style 中文版 (2006) |
> URL="https://book.douban.com/subject/1470842/"]
+ cppcodingstandard [label=< |
C++编程规范 (2010) |
> URL="https://book.douban.com/subject/5348095/"]
- effectivecpp3 [label=< |
Effective C++ |
> URL="https://book.douban.com/subject/1842426/"]
- moreeffectivecpp3 [label=< |
More Effective C++ (中文版) |
> URL="https://book.douban.com/subject/5908727/"]
+ effectivecpp3 [label=< |
Effective C++ (2006) |
> URL="https://book.douban.com/subject/1842426/"]
+ moreeffectivecpp3 [label=< |
More Effective C++ (中文版) (2011) |
> URL="https://book.douban.com/subject/5908727/"]
effectivemoderncpp [label=< |
Effective Modern C++ (2014) |
> URL="https://www.amazon.com/dp/1491903996/"]
optimizedcpp [label=< |
Optimized C++ (2016) |
> URL="https://www.amazon.com/dp/1491922060/"]
- insidecppobjectmodel [label=< |
深度探索C++对象模型 |
> URL="https://book.douban.com/subject/10427315/"]
- imperfectcpp [label=< |
Imperfect C++中文版 |
> URL="https://book.douban.com/subject/1470838/"]
- cpptemplates [label=< |
C++ Templates中文版 |
> URL="https://book.douban.com/subject/23780707/"]
- elementsofprogramming [label=< |
编程原本 |
> URL="https://book.douban.com/subject/7564093/"]
+ insidecppobjectmodel [label=< |
深度探索C++对象模型 (2012) |
> URL="https://book.douban.com/subject/10427315/"]
+ imperfectcpp [label=< |
Imperfect C++中文版 (2006) |
> URL="https://book.douban.com/subject/1470838/"]
+ cpptemplates [label=< |
C++ Templates中文版 (2013) |
> URL="https://book.douban.com/subject/23780707/"]
+ elementsofprogramming [label=< |
编程原本 (2012) |
> URL="https://book.douban.com/subject/7564093/"]
frommathtogeneric [label=< |
From Mathematics to Generic Programming (2014) |
> URL="https://www.amazon.com/dp/0321942043/"]
- moderncppdesign [label=< |
C++设计新思维 |
> URL="https://book.douban.com/subject/1103566/"]
+ moderncppdesign [label=< |
C++设计新思维 (2003) |
> URL="https://book.douban.com/subject/1103566/"]
- programminginlua4 [label=< |
LUA程序设计(第2版) |
> URL="https://book.douban.com/subject/3076942/"]
+ programminginlua4 [label=< |
LUA程序设计(第2版) (2008) |
> URL="https://book.douban.com/subject/3076942/"]
luaprogramminggems [label=< |
Lua Programming Gems (2008) |
> URL="https://www.amazon.com/dp/8590379841/"]
- mvcsharpstepbystep8 [label=< |
Visual C#从入门到精通(第8版) |
> URL="https://book.douban.com/"]
- csharpindepth3 [label=< |
深入理解C#(第3版) |
> URL="https://book.douban.com/subject/25843328/"]
- clrviacsharp4 [label=< |
CLR via C#(第4版) |
> URL="https://book.douban.com/subject/26285940/"]
+ mvcsharpstepbystep8 [label=< |
Visual C#从入门到精通(第8版) () |
> URL="https://book.douban.com/"]
+ csharpindepth3 [label=< |
深入理解C#(第3版) (2014) |
> URL="https://book.douban.com/subject/25843328/"]
+ clrviacsharp4 [label=< |
CLR via C#(第4版) (2015) |
> URL="https://book.douban.com/subject/26285940/"]
cbegin -> tcpl2 -> cppbegin [arrowhead=normal, style=solid]
@@ -248,22 +248,22 @@ digraph {
uml [label="UML"]
}
- mythicalmanmonth2 [label=< |
人月神话 |
> URL="https://book.douban.com/subject/2230248/"]
+ mythicalmanmonth2 [label=< |
人月神话 (2007) |
> URL="https://book.douban.com/subject/2230248/"]
- codecomplete2 [label=< |
代码大全 |
> URL="https://book.douban.com/subject/2208626/"]
- apidesignforcpp [label=< |
C++ API设计 |
> URL="https://book.douban.com/subject/24869855/"]
+ codecomplete2 [label=< |
代码大全 (2007) |
> URL="https://book.douban.com/subject/2208626/"]
+ apidesignforcpp [label=< |
C++ API设计 (2013) |
> URL="https://book.douban.com/subject/24869855/"]
- agilesoftwaredev [label=< |
敏捷软件开发 |
> URL="https://book.douban.com/subject/2347790/"]
- designpatterns [label=< |
设计模式 |
> URL="https://book.douban.com/subject/2111801/"]
- headfirstdesignpatterns [label=< |
Head First 设计模式(中文版) |
> URL="https://book.douban.com/subject/2243615/"]
- practiceofprogramming [label=< |
程序设计实践 |
> URL="https://book.douban.com/subject/6524000/"]
- cleancode [label=< |
编码整洁之道 |
> URL="https://book.douban.com/subject/11602008/"]
- refactoring [label=< |
重构 |
> URL="https://book.douban.com/subject/4262627/"]
- workingeffectivelylegacycode [label=< |
修改代码的艺术 |
> URL="https://book.douban.com/subject/25904007/"]
+ agilesoftwaredev [label=< |
敏捷软件开发 (2008) |
> URL="https://book.douban.com/subject/2347790/"]
+ designpatterns [label=< |
设计模式 (2007) |
> URL="https://book.douban.com/subject/2111801/"]
+ headfirstdesignpatterns [label=< |
Head First 设计模式(中文版) (2007) |
> URL="https://book.douban.com/subject/2243615/"]
+ practiceofprogramming [label=< |
程序设计实践 (2011) |
> URL="https://book.douban.com/subject/6524000/"]
+ cleancode [label=< |
编码整洁之道 (2012) |
> URL="https://book.douban.com/subject/11602008/"]
+ refactoring [label=< |
重构 (2010) |
> URL="https://book.douban.com/subject/4262627/"]
+ workingeffectivelylegacycode [label=< |
修改代码的艺术 (2014) |
> URL="https://book.douban.com/subject/25904007/"]
- umldistilled3 [label=< |
UML精粹 |
> URL="https://book.douban.com/subject/10798193/"]
- umluserguide2 [label=< |
UML用户指南 |
> URL="https://book.douban.com/subject/1837454/"]
- ooadwa3 [label=< |
面向对象分析与设计 |
> URL="https://book.douban.com/subject/11509672/"]
+ umldistilled3 [label=< |
UML精粹 (2012) |
> URL="https://book.douban.com/subject/10798193/"]
+ umluserguide2 [label=< |
UML用户指南 (2006) |
> URL="https://book.douban.com/subject/1837454/"]
+ ooadwa3 [label=< |
面向对象分析与设计 (2012) |
> URL="https://book.douban.com/subject/11509672/"]
sebegin -> mythicalmanmonth2 -> { sepractice; dp } [arrowhead=normal, style=solid]
mythicalmanmonth2 -> uml
@@ -295,15 +295,15 @@ digraph {
}
foundationsgedmath [label=< |
Foundations of Game Engine Development, Vol 1: Mathematics (2016) |
> URL="https://www.amazon.com/dp/0985811749/"]
- math3dcpcg3 [label=< |
3D数学基础 |
> URL="https://book.douban.com/subject/1400419/"]
+ math3dcpcg3 [label=< |
3D游戏与计算机图形学 中的数学方法(第3版) (2016) |
> URL="https://book.douban.com/subject/26864861/"]
"3dmathprimer2" [label=< |
3D Math Primer for Graphics and Game Development 2nd Ed (2011) |
> URL="https://www.amazon.com/dp/1568817231/"]
essentialmaths3 [label=< |
Essential Mathematics for Games and Interactive Applications 3rd Ed (2011) |
> URL="https://www.amazon.com/dp/1482250926/"]
geometricalgebra [label=< |
Geometric Algebra for Computer Science (2007) |
> URL="https://www.amazon.com/dp/0123749425/"]
- geometrictools [label=< |
计算机图形学 几何工具算法详解 |
> URL="https://book.douban.com/subject/1224798/"]
- computationalgeometry [label=< |
计算几何 |
> URL="https://book.douban.com/subject/3893574/"]
+ geometrictools [label=< |
计算机图形学 几何工具算法详解 (2005) |
> URL="https://book.douban.com/subject/1224798/"]
+ computationalgeometry [label=< |
计算几何 (2009) |
> URL="https://book.douban.com/subject/3893574/"]
visualizingquaternions [label=< |
Visualizing Quaternions (2006) |
> URL="https://www.amazon.com/dp/0120884003/"]
- divgradcurl4 [label=< |
散度、旋度、梯度释义 |
> URL="https://book.douban.com/subject/26688502/"]
+ divgradcurl4 [label=< |
散度、旋度、梯度释义 (2015) |
> URL="https://book.douban.com/subject/26688502/"]
mathbegin -> foundationsgedmath
mathbegin -> math3dcpcg3 -> mathadvanced [arrowhead=normal, style=solid]
@@ -338,11 +338,11 @@ digraph {
gpmisc [label="游戏编程文选"]
}
- windowsgp2 [label=< |
Windows游戏编程大师技巧 |
> URL="https://book.douban.com/subject/20282993/"]
- gamecodingcomplete4 [label=< |
游戏编程全接触 |
> URL="https://book.douban.com/subject/1454723/"]
+ windowsgp2 [label=< |
Windows游戏编程大师技巧 (2012) |
> URL="https://book.douban.com/subject/20282993/"]
+ gamecodingcomplete4 [label=< |
游戏编程权威指南 (2016) |
> URL="https://book.douban.com/subject/26787109/"]
introtogdprodev [label=< |
Introduction to Game Design, Prototyping, and Development (2014) |
> URL="https://www.amazon.com/dp/0321933168/"]
- unityinaction [label=< |
Unity in Action (2015) |
> URL="https://www.amazon.com/dp/161729232X/"]
+ unityinaction [label=< |
Unity5实战 (2016) |
> URL="https://book.douban.com/subject/26877872/"]
learninguegd [label=< |
Learning Unreal Engine Game Development (2015) |
> URL="https://www.amazon.com/dp/1784398152/"]
blueprintsvisualscripting [label=< |
Blueprints Visual Scripting for Unreal Engine (2015) |
> URL="https://www.amazon.com/dp/1785286013/"]
@@ -350,7 +350,7 @@ digraph {
cocos2dxbyexample2 [label=< |
Cocos2d-X by Example (2015) |
> URL="https://www.amazon.com/dp/1785288857/"]
gpalgorithmstechniques [label=< |
Game Programming Algorithms and Techniques (2013) |
> URL="https://www.amazon.com/dp/0321940156/"]
- gameprogrammingpatterns [label=< |
游戏编程模式 |
> URL="https://book.douban.com/subject/26880704/"]
+ gameprogrammingpatterns [label=< |
游戏编程模式 (2016) |
> URL="https://book.douban.com/subject/26880704/"]
gpgoldenrules [label=< |
Game Programming Golden Rules (2004) |
> URL="https://www.amazon.com/dp/1584503068/"]
crossplatformgp [label=< |
Cross-Platform Game Programming (2005) |
> URL="https://www.amazon.com/dp/1584503793/"]
androidndkgdcookbook [label=< |
Android NDK Game Development Cookbook (2013) |
> URL="https://www.amazon.com/dp/1782167781/"]
@@ -368,16 +368,16 @@ digraph {
{
rank=same
- gpgems [label=< |
游戏编程精粹 1 |
> URL="https://book.douban.com/subject/1231195/"]
- gpgems2 [label=< |
游戏编程精粹2 |
> URL="https://book.douban.com/subject/1146281/"]
- gpgems3 [label=< |
游戏编程精粹3 |
> URL="https://book.douban.com/subject/1125738/"]
- gpgems4 [label=< |
游戏编程精粹4 |
> URL="https://book.douban.com/subject/1435923/"]
+ gpgems [label=< |
游戏编程精粹 1 (2004) |
> URL="https://book.douban.com/subject/1231195/"]
+ gpgems2 [label=< |
游戏编程精粹2 (2003) |
> URL="https://book.douban.com/subject/1146281/"]
+ gpgems3 [label=< |
游戏编程精粹3 (2003) |
> URL="https://book.douban.com/subject/1125738/"]
+ gpgems4 [label=< |
游戏编程精粹4 (2005) |
> URL="https://book.douban.com/subject/1435923/"]
}
{
rank=same
- gpgems5 [label=< |
游戏编程精粹5 |
> URL="https://book.douban.com/subject/2248414/"]
- gpgems6 [label=< |
游戏编程精粹6 |
> URL="https://book.douban.com/subject/2305250/"]
- gpgems7 [label=< |
游戏编程精粹7 |
> URL="https://book.douban.com/subject/4903976/"]
+ gpgems5 [label=< |
游戏编程精粹5 (2007) |
> URL="https://book.douban.com/subject/2248414/"]
+ gpgems6 [label=< |
游戏编程精粹6 (2007) |
> URL="https://book.douban.com/subject/2305250/"]
+ gpgems7 [label=< |
游戏编程精粹7 (2010) |
> URL="https://book.douban.com/subject/4903976/"]
gpgems8 [label=< |
Game Programming Gems (2010) |
> URL="https://www.amazon.com/dp/1584507020/"]
}
@@ -431,7 +431,7 @@ digraph {
{
rank=same
- gameenginearchitecture2 [label=< |
游戏引擎架构 |
> URL="https://book.douban.com/subject/25815142/"]
+ gameenginearchitecture2 [label=< |
游戏引擎架构 (2014) |
> URL="https://book.douban.com/subject/25815142/"]
"3dgameenginearchitecture" [label=< |
3D Game Engine Architecture (2004) |
> URL="https://www.amazon.com/dp/012229064X/"]
gameenginedesign2 [label=< |
3D Game Engine Design 2nd Ed (2006) |
> URL="https://www.amazon.com/dp/0122290631/"]
}
@@ -440,13 +440,13 @@ digraph {
gameenginegems2 [label=< |
Game Engine Gems 2 (2011) |
> URL="https://www.amazon.com/dp/1568814372/"]
gameenginegems3 [label=< |
Game Engine Gems 3 (2016) |
> URL="https://www.amazon.com/dp/1498755658/"]
- gamescriptingmastery [label=< |
游戏脚本高级编程 |
> URL="https://book.douban.com/subject/1927405/"]
- languageimplpatterns [label=< |
编程语言实现模式 |
> URL="https://book.douban.com/subject/10482195/"]
- garbagecollectionhandbook [label=< |
垃圾回收算法手册: 自动内存管理的艺术 |
> URL="https://book.douban.com/subject/26740958/"]
+ gamescriptingmastery [label=< |
游戏脚本高级编程 (2006) |
> URL="https://book.douban.com/subject/1927405/"]
+ languageimplpatterns [label=< |
编程语言实现模式 (2012) |
> URL="https://book.douban.com/subject/10482195/"]
+ garbagecollectionhandbook [label=< |
垃圾回收算法手册: 自动内存管理的艺术 (2016) |
> URL="https://book.douban.com/subject/26740958/"]
unity5gameoptimization [label=< |
Unity 5 Game Optimization (2015) |
> URL="https://www.amazon.com/dp/1785884581/"]
videogameoptimization [label=< |
Video Game Optimization (2010) |
> URL="https://www.amazon.com/dp/1598634356/"]
- hackersdelight2 [label=< |
算法心得:高效算法的奥秘(原书第2版) |
> URL="https://book.douban.com/subject/25837031/"]
+ hackersdelight2 [label=< |
算法心得:高效算法的奥秘(原书第2版) (2014) |
> URL="https://book.douban.com/subject/25837031/"]
modernx86assembly [label=< |
Modern X86 Assembly Language Programming (2014) |
> URL="https://www.amazon.com/dp/1484200659/"]
gpgpu [label=< |
GPGPU Programming for Games and Science (2014) |
> URL="https://www.amazon.com/dp/1466595353/"]
vectorgamemathprocessors [label=< |
Vector Games Math Processors (2002) |
> URL="https://www.amazon.com/dp/1556229216/"]
@@ -487,31 +487,31 @@ digraph {
}
rt3drendering [label=< |
Real-Time 3D Rendering with DirectX and HLSL (2014) |
> URL="https://www.amazon.com/dp/0321962729/"]
- "3dgpdx12" [label=< |
DirectX 9.0 3D游戏开发编程基础 |
> URL="https://book.douban.com/subject/2111771/"]
- oglguide9 [label=< |
OpenGL编程指南(原书第8版) |
> URL="https://book.douban.com/subject/26220248/"]
+ "3dgpdx12" [label=< |
DirectX 9.0 3D游戏开发编程基础 (2007) |
> URL="https://book.douban.com/subject/2111771/"]
+ oglguide9 [label=< |
OpenGL编程指南(原书第8版) (2014) |
> URL="https://book.douban.com/subject/26220248/"]
- fundamentalscg4 [label=< |
计算机图形学 |
> URL="https://book.douban.com/subject/2116178/"]
- cgpp3 [label=< |
计算机图形学原理及实践: C语言描述(原书第2版) |
> URL="https://book.douban.com/subject/1230412/"]
+ fundamentalscg4 [label=< |
计算机图形学 (2007) |
> URL="https://book.douban.com/subject/2116178/"]
+ cgpp3 [label=< |
计算机图形学原理及实践: C语言描述(原书第2版) (2004) |
> URL="https://book.douban.com/subject/1230412/"]
pdis [label=< |
Principles of Digital Image Synthesis (PODIS) (1995) |
> URL="https://www.amazon.com/dp/1558602763/"]
- digitalimageprocessing3 [label=< |
数字图像处理 |
> URL="https://book.douban.com/subject/4285832/"]
+ digitalimageprocessing3 [label=< |
数字图像处理 (2010) |
> URL="https://book.douban.com/subject/4285832/"]
- graphicsshaders2 [label=< |
图形着色器 |
> URL="https://book.douban.com/subject/23858154/"]
- glsl3 [label=< |
OpenGL着色语言 |
> URL="https://book.douban.com/subject/1911849/"]
+ graphicsshaders2 [label=< |
图形着色器 (2013) |
> URL="https://book.douban.com/subject/23858154/"]
+ glsl3 [label=< |
OpenGL着色语言 (2006) |
> URL="https://book.douban.com/subject/1911849/"]
oglsuper7 [label=< |
OpenGL Super Bible 7th Ed (2015) |
> URL="https://www.amazon.com/dp/0672337479/"]
- ogles3guide2 [label=< |
OpenGL ES 3.0编程指南 |
> URL="https://book.douban.com/subject/26414014/"]
+ ogles3guide2 [label=< |
OpenGL ES 3.0编程指南 (2015) |
> URL="https://book.douban.com/subject/26414014/"]
oglinsights [label=< |
OpenGL Insights (2012) |
> URL="https://www.amazon.com/dp/1439893764/"]
vulkanguide [label=< |
Vulkan Programming Guide (2016) |
> URL="https://www.amazon.com/dp/0134464540/"]
practiald3d11 [label=< |
Practical Rendering and Computation with Direct3D 11 (2011) |
> URL="https://www.amazon.com/dp/1568817207/"]
- rtr3 [label=< |
实时计算机图形学 |
> URL="https://book.douban.com/subject/1231141/"]
- tricks3dgpgurus [label=< |
3D游戏编程大师技巧 |
> URL="https://book.douban.com/subject/1321769/"]
- realtimeshadows [label=< |
实时阴影技术 |
> URL="https://book.douban.com/subject/25908680/"]
+ rtr3 [label=< |
实时计算机图形学 (2004) |
> URL="https://book.douban.com/subject/1231141/"]
+ tricks3dgpgurus [label=< |
3D游戏编程大师技巧 (2005) |
> URL="https://book.douban.com/subject/1321769/"]
+ realtimeshadows [label=< |
实时阴影技术 (2013) |
> URL="https://book.douban.com/subject/25908680/"]
rtvolumegraphics [label=< |
Real-Time Volume Graphics (2006) |
> URL="https://www.amazon.com/dp/1568812663/"]
graphicsprogrammingmethods [label=< |
Graphics Programming Methods (2003) |
> URL="https://www.amazon.com/dp/1584502991/"]
- gpugems [label=< |
GPU精粹 |
> URL="https://book.douban.com/subject/1480239/"]
- gpugems2 [label=< |
GPU精粹2 |
> URL="https://book.douban.com/subject/2144796/"]
- gpugems3 [label=< |
GPU精粹3 |
> URL="https://book.douban.com/subject/4851196/"]
+ gpugems [label=< |
GPU精粹 (2006) |
> URL="https://book.douban.com/subject/1480239/"]
+ gpugems2 [label=< |
GPU精粹2 (2007) |
> URL="https://book.douban.com/subject/2144796/"]
+ gpugems3 [label=< |
GPU精粹3 (2010) |
> URL="https://book.douban.com/subject/4851196/"]
gpupro [label=< |
GPU Pro (2010) |
> URL="https://www.amazon.com/dp/1568814720/"]
gpupro2 [label=< |
GPU Pro 2 (2011) |
> URL="https://www.amazon.com/dp/1568817185/"]
gpupro3 [label=< |
GPU Pro 3 (2012) |
> URL="https://www.amazon.com/dp/1439887829/"]
@@ -521,7 +521,7 @@ digraph {
gpupro7 [label=< |
GPU Pro 7 (2016) |
> URL="https://www.amazon.com/dp/149874253X/"]
pbrt3 [label=< |
Physically Based Rendering (PBRT) 3rd Ed (2016) |
> URL="https://www.amazon.com/dp/0128006455/"]
- raytracingfromgroundup [label=< |
光线跟踪算法技术 |
> URL="https://book.douban.com/subject/6028258/"]
+ raytracingfromgroundup [label=< |
光线跟踪算法技术 (2011) |
> URL="https://book.douban.com/subject/6028258/"]
advancedgi2 [label=< |
Advanced Global Illumination 2nd Ed (2006) |
> URL="https://www.amazon.com/dp/1568813074/"]
productionvolumerendering [label=< |
Production Volume Rendering (2012) |
> URL="https://www.amazon.com/dp/156881724X/"]
@@ -632,7 +632,7 @@ digraph {
fluid [label="流体动画/模拟"]
}
- natureofcode [label=< |
代码本色:用编程模拟自然系统 |
> URL="https://book.douban.com/subject/26264736/"]
+ natureofcode [label=< |
代码本色:用编程模拟自然系统 (2014) |
> URL="https://book.douban.com/subject/26264736/"]
characteranimation [label=< |
Character Animation with Direct3D (2011) |
> URL="https://www.amazon.com/dp/1584505702/"]
rt3dcharacteranimation [label=< |
Real-time 3D Character Animation with Visual C++ (2001) |
> URL="https://www.amazon.com/dp/0240516648/"]
computeranimation3 [label=< |
Computer Animation 3rd Ed (2012) |
> URL="https://www.amazon.com/dp/0124158420/"]
@@ -641,13 +641,13 @@ digraph {
rtcameras [label=< |
Real-Time Cameras (2009) |
> URL="https://www.amazon.com/dp/0123116341/"]
physicsforgameprogrammers [label=< |
Physics for Game Programmers (2003) |
> URL="https://www.amazon.com/dp/159059472X/"]
- physicsforgamedevelopers2 [label=< |
Physics for Game Developers 2nd Ed (2013) |
> URL="https://www.amazon.com/dp/1449392512/"]
+ physicsforgamedevelopers2 [label=< |
游戏开发物理学 第2版 (2015) |
> URL="https://book.douban.com/subject/26394564/"]
physicsmodeling [label=< |
Physics Modeling for Game Programmers (2004) |
> URL="https://www.amazon.com/dp/1592000932/"]
- gamephysicsenginedev2 [label=< |
游戏物理引擎开发 |
> URL="https://book.douban.com/subject/25821830/"]
+ gamephysicsenginedev2 [label=< |
游戏物理引擎开发 (2013) |
> URL="https://book.douban.com/subject/25821830/"]
gamephysics2 [label=< |
Game Physics 2nd Ed (2010) |
> URL="https://www.amazon.com/dp/0123749034/"]
collisiondetection3denv [label=< |
Collision Detection in Interactive 3D Environments (2003) |
> URL="https://www.amazon.com/dp/155860801X/"]
- rtcollisiondetection [label=< |
实时碰撞检测算法技术 |
> URL="https://book.douban.com/subject/4861957/"]
+ rtcollisiondetection [label=< |
实时碰撞检测算法技术 (2010) |
> URL="https://book.douban.com/subject/4861957/"]
gamephysicspearls [label=< |
Game Physics Pearls (2010) |
> URL="https://www.amazon.com/dp/1568814747/"]
taofluidanimation [label=< |
The Art of Fluid Animation (2015) |
> URL="https://www.amazon.com/dp/1498700209/"]
@@ -688,11 +688,11 @@ digraph {
}
aiforgames2 [label=< |
Artificial Intelligence for Games 2nd Ed (2009) |
> URL="https://www.amazon.com/dp/0123747317/"]
- aiforgd [label=< |
游戏开发中的人工智能 |
> URL="https://book.douban.com/subject/1899340/"]
- proggameaibyexample [label=< |
游戏人工智能编程 案例精粹 |
> URL="https://book.douban.com/subject/19930152/"]
- unityaigp2 [label=< |
Unity人工智能游戏开发(第2版) |
> URL="https://book.douban.com/subject/26911454/"]
+ aiforgd [label=< |
游戏开发中的人工智能 (2006) |
> URL="https://book.douban.com/subject/1899340/"]
+ proggameaibyexample [label=< |
游戏人工智能编程 案例精粹 (2012) |
> URL="https://book.douban.com/subject/19930152/"]
+ unityaigp2 [label=< |
Unity人工智能游戏开发(第2版) (2016) |
> URL="https://book.douban.com/subject/26911454/"]
- aima3 [label=< |
人工智能 |
> URL="https://book.douban.com/subject/1230487/"]
+ aima3 [label=< |
人工智能 (2004) |
> URL="https://book.douban.com/subject/1230487/"]
behavioralmathforgameai [label=< |
Behavioral Mathematics for Game AI (2009) |
> URL="https://www.amazon.com/dp/1584506849/"]
{
@@ -736,20 +736,20 @@ digraph {
}
multiplayergp [label=< |
Multiplayer Game Programming (2015) |
> URL="https://www.amazon.com/dp/0134034309/"]
- massivelymultiplayergd [label=< |
大型多人在线游戏开发 |
> URL="https://book.douban.com/subject/1940567/"]
+ massivelymultiplayergd [label=< |
大型多人在线游戏开发 (2006) |
> URL="https://book.douban.com/subject/1940567/"]
massivelymultiplayergd2 [label=< |
Massively Multiplayer Game Development 2 (2005) |
> URL="https://www.amazon.com/dp/1584503904/"]
- progposixthreads [label=< |
POSIX多线程程序设计 |
> URL="https://book.douban.com/subject/1236825/"]
- advancedprogunixenv3 [label=< |
UNIX环境高级编程(第3版) |
> URL="https://book.douban.com/subject/25900403/"]
- linuxsystemprog2 [label=< |
Linux 系统编程(第二版) |
> URL="https://book.douban.com/subject/25828773/"]
+ progposixthreads [label=< |
POSIX多线程程序设计 (2003) |
> URL="https://book.douban.com/subject/1236825/"]
+ advancedprogunixenv3 [label=< |
UNIX环境高级编程(第3版) (2014) |
> URL="https://book.douban.com/subject/25900403/"]
+ linuxsystemprog2 [label=< |
Linux 系统编程(第二版) (2014) |
> URL="https://book.douban.com/subject/25828773/"]
- tcpipillustratedv1_2 [label=< |
TCP/IP详解 卷1:协议 |
> URL="https://book.douban.com/subject/26825411/"]
- tcpipillustratedv2 [label=< |
TCP/IP详解 卷2:实现 |
> URL="https://book.douban.com/subject/1087767/"]
- tcpipillustratedv3 [label=< |
TCP/IP详解 卷3:TCP事务协议、 HTTP、NNTP 和UNIX域协议 |
> URL="https://book.douban.com/subject/1058634/"]
+ tcpipillustratedv1_2 [label=< |
TCP/IP详解 卷1:协议 (2016) |
> URL="https://book.douban.com/subject/26825411/"]
+ tcpipillustratedv2 [label=< |
TCP/IP详解 卷2:实现 (2004) |
> URL="https://book.douban.com/subject/1087767/"]
+ tcpipillustratedv3 [label=< |
TCP/IP详解 卷3:TCP事务协议、 HTTP、NNTP 和UNIX域协议 (2000) |
> URL="https://book.douban.com/subject/1058634/"]
- unixnetworkprogv1_3 [label=< |
UNIX网络编程 卷1:套接字联网API(第3版) |
> URL="https://book.douban.com/subject/26434583/"]
- unixnetworkprogv2_2 [label=< |
UNIX网络编程 卷2:进程间通信(第2版) |
> URL="https://book.douban.com/subject/26434599/"]
- linuxnetworkinternals [label=< |
深入理解 LINUX网络技术内幕 |
> URL="https://book.douban.com/subject/4015134/"]
+ unixnetworkprogv1_3 [label=< |
UNIX网络编程 卷1:套接字联网API(第3版) (2014) |
> URL="https://book.douban.com/subject/26434583/"]
+ unixnetworkprogv2_2 [label=< |
UNIX网络编程 卷2:进程间通信(第2版) (2015) |
> URL="https://book.douban.com/subject/26434599/"]
+ linuxnetworkinternals [label=< |
深入理解 LINUX网络技术内幕 (2009) |
> URL="https://book.douban.com/subject/4015134/"]
multiplayerbegin -> multiplayergp [arrowhead=normal, style=solid]
multiplayergp -> serverprog
diff --git a/images-zh-cn/csapp3.jpg b/images-zh-cn/csapp3.jpg
index 331b991..29e5100 100644
Binary files a/images-zh-cn/csapp3.jpg and b/images-zh-cn/csapp3.jpg differ
diff --git a/images-zh-cn/gamecodingcomplete4.jpg b/images-zh-cn/gamecodingcomplete4.jpg
index 2ca6adc..49db6be 100644
Binary files a/images-zh-cn/gamecodingcomplete4.jpg and b/images-zh-cn/gamecodingcomplete4.jpg differ
diff --git a/images-zh-cn/math3dcpcg3.jpg b/images-zh-cn/math3dcpcg3.jpg
index 836211f..2270864 100644
Binary files a/images-zh-cn/math3dcpcg3.jpg and b/images-zh-cn/math3dcpcg3.jpg differ
diff --git a/images-zh-cn/physicsforgamedevelopers2.jpg b/images-zh-cn/physicsforgamedevelopers2.jpg
index 4372bf3..125ddaa 100644
Binary files a/images-zh-cn/physicsforgamedevelopers2.jpg and b/images-zh-cn/physicsforgamedevelopers2.jpg differ
diff --git a/images-zh-cn/unityinaction.jpg b/images-zh-cn/unityinaction.jpg
index d734224..ef4b200 100644
Binary files a/images-zh-cn/unityinaction.jpg and b/images-zh-cn/unityinaction.jpg differ
diff --git a/isbn.csv b/isbn.csv
index 1101a6e..b551d14 100644
--- a/isbn.csv
+++ b/isbn.csv
@@ -9,7 +9,7 @@ learntoprogramwithminecraft,9781593276706, 未找到中文, None
adventuresinminecraft,9781118946916, 零基础学Minecraft编程,9787115398970
3dgpforkids,9781937785444, 未找到中文, None
sicp2,9780262011532, 计算机程序的构造和解释,9787111135104
-csapp3,9780134092669, 深入理解计算机系统
(原书第2版),9787111321330
+csapp3,9780134092669,深入理解计算机系统
(原书第3版),9787111544937
caaqa5,9780123838728, 计算机体系结构,9787115297655
mos4,9780133591620, 现代操作系统(第3版),9787111255444
clrs3,9780262033848, 算法导论(原书第3版),9787111407010
@@ -56,7 +56,7 @@ umldistilled3,9780321193681, UML精粹,9787121170492
umluserguide2,9780321267979, UML用户指南,9787115148339
ooadwa3,9780201895513, 面向对象分析与设计,9787121173899
foundationsgedmath,9780985811747, 未找到中文, None
-math3dcpcg3,9781568817231, 3D数学基础,9787302109464
+math3dcpcg3,9781568817231,3D游戏与计算机图形学
中的数学方法(第3版),9787302406228
3dmathprimer2,9781435458864, 未找到中文, None
essentialmaths3,9781482250923, 未找到中文, None
geometricalgebra,9780123694652, 未找到中文, None
@@ -65,9 +65,9 @@ computationalgeometry,9783540779735, 计算几何,9787302199380
visualizingquaternions,9780120884001, 未找到中文, None
divgradcurl4,9780393925166, 散度、旋度、梯度释义,9787111501718
windowsgp2,9780672323690, Windows游戏编程大师技巧,9787115292483
-gamecodingcomplete4,9781133776574, 游戏编程全接触,9787115132192
+gamecodingcomplete4,9781133776574,游戏编程权威指南,9787115410344
introtogdprodev,9780321933164, 未找到中文, None
-unityinaction,9781617292323, 未找到中文, None
+unityinaction,9781617292323,Unity5实战,9787302436744
learninguegd,1784398152, 未找到中文, None
blueprintsvisualscripting,1785286013, 未找到中文, None
cocos2dxbyexample2,9781785288852, 未找到中文, None
@@ -169,7 +169,7 @@ gameik,1484922328, 未找到中文, None
physicsbasedanimation,9781584503804, 未找到中文, None
rtcameras,9780123116345, 未找到中文, None
physicsforgameprogrammers,9781590594728, 未找到中文, None
-physicsforgamedevelopers2,9781449392512, 未找到中文, None
+physicsforgamedevelopers2,9781449392512,游戏开发物理学 第2版,9787115384706
physicsmodeling,9781592000937, 未找到中文, None
gamephysicsenginedev2,9780123819765, 游戏物理引擎开发,9787302344568
gamephysics2,9780123749031, 未找到中文, None
diff --git a/zh-cn.py b/zh-cn.py
index 9428c03..6d4d16d 100644
--- a/zh-cn.py
+++ b/zh-cn.py
@@ -24,13 +24,13 @@ def get_image(isbn, image_filename):
image = response.read()
ft.write(image)
-def get_book_url(isbn):
+def get_book_url_year(isbn):
url = "https://api.douban.com/v2/book/isbn/" + isbn
- result = "https://book.douban.com/"
+ result = "https://book.douban.com/", ""
try:
response = urllib2.urlopen(url)
detail = response.read()
- return json.loads(detail)["alt"]
+ return json.loads(detail)["alt"], json.loads(detail)["pubdate"][:4]
except Exception as e:
print isbn
print e
@@ -46,13 +46,15 @@ def get_book_info(book_index):
title = line[2].strip()
zh_isbn = line[3]
if title == "未找到中文":
- return None, None
+ return None, None, None
else:
image_path = IMAGE_PATH.format(book_index=book_index.strip('"'))
if not os.path.exists(image_path):
get_image(zh_isbn, image_path)
- return title, get_book_url(zh_isbn)
+ book_url, book_year = get_book_url_year(zh_isbn)
+ return title, book_url, book_year
+
LABEL_DICT = {
"":"",
"Recommended Path": "推荐路线",
@@ -129,13 +131,14 @@ def get_book_info(book_index):
}
RE_BOOK_LINE = re.compile(r'^\"?\w*\"?\w* \[label=< |
{book_title} |
> URL="{url}"]\n'
+BOOK_LINE = '{book_index} [label=< |
{book_title} ({book_year}) |
> URL="{url}"]\n'
RE_SECTION_LINE = re.compile(r'^label=<>$')
SECTION_LINE = 'label=<>\n'
RE_LABEL_LINE = re.compile(r'^\w+ \[label="[\w -=\./\\]*"\]$')
LABEL_LINE = '{label_index} [label="{label}"]\n'
RE_CONTENT_LINE = re.compile(r'[\w ]+\[color="#[\w]{6}", label=[<"]\d+\. [\w ()]+[">]\]')
+
if __name__ == '__main__':
with open("game-programmer.dot") as en_f, open("game-programmer-zh-cn.dot",'w') as zh_f:
for line in en_f:
@@ -157,12 +160,12 @@ def get_book_info(book_index):
if book_line_match != None:
book_index = line_without_space.split(" ")[0]
- book_title, book_url = get_book_info(book_index.strip('"'))
- if book_title == None or book_url == None:
+ book_title, book_url, book_year = get_book_info(book_index.strip('"'))
+ if book_title == None:
zh_f.write(line)
else:
image_path = IMAGE_PATH.format(book_index=book_index.strip('"'))
- writeline = space_front+ BOOK_LINE.format(book_index=book_index, image_path=image_path, book_title=book_title, url=book_url)
+ writeline = space_front+ BOOK_LINE.format(book_index=book_index, image_path=image_path, book_title=book_title, book_year=book_year, url=book_url)
zh_f.write(writeline)
elif section_line_match != None:
sectionID = re.search(r'\d+\.', line_without_space).group()