介绍
游戏程序员的学习之路
《游戏程序员的学习之路》由已在游戏业界工作超过二十年的Milo Yip完成,介绍了游戏程序员的学习路线,并推荐了相应的书籍。
楚天阔目前的工作情况
miloyip/game-programmer: 游戏程序员的学习之路 非常系统完整地介绍了游戏程序员应当阅读的书籍。
由于其中引用了大量中英文书籍,随着时间推移,有很多书会有新版本、中文版等等,因此需要对书籍信息进行更新维护。
更新的信息一定要保证正确无误,必须通过构建来验证正确性。
目的
《网络多人游戏架构与编程》 与 《游戏人工智能》 都出版了中文版,因此需要更新中文版学习之路。
方法
macOS Mojave
最先尝试在 macOS 10.14 上构建,结果在构建时,dot 一直报异常:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
dot "game-programmer.dot" -Tjpg -o "game-programmer.jpg"
2018-10-20 21:30:42.034 dot[28987:64453] +[__NSCFConstantString length]: unrecognized selector sent to class 0x7fff9cf6d8c0
2018-10-20 21:30:42.041 dot[28987:64453] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[__NSCFConstantString length]: unrecognized selector sent to class 0x7fff9cf6d8c0'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff4533a43d __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff71247720 objc_exception_throw + 48
2 CoreFoundation 0x00007fff453b71a5 __CFExceptionProem + 0
3 CoreFoundation 0x00007fff452d9ad0 ___forwarding___ + 1486
4 CoreFoundation 0x00007fff452d9478 _CF_forwarding_prep_0 + 120
5 CoreFoundation 0x00007fff4526af54 CFStringCompareWithOptionsAndLocale + 72
6 ImageIO 0x00007fff47dd8367 _ZN17IIO_ReaderHandler15readerForUTTypeEPK10__CFString + 53
7 ImageIO 0x00007fff47db0527 _ZN14IIOImageSource14extractOptionsEP13IIODictionary + 183
8 ImageIO 0x00007fff47ddd2e6 _ZN14IIOImageSourceC2EP14CGDataProviderP13IIODictionary + 72
9 ImageIO 0x00007fff47ddd1bb CGImageSourceCreateWithDataProvider + 172
10 libgvplugin_quartz.6.dylib 0x00000001058c2b8f quartz_loadimage_quartz + 224
11 libgvc.6.dylib 0x000000010523d39f gvloadimage + 265
12 libgvc.6.dylib 0x000000010523c40b gvrender_usershape + 998
13 libgvc.6.dylib 0x0000000105252dc4 emit_html_tbl + 1298
14 libgvc.6.dylib 0x00000001052527fc emit_html_label + 436
15 libgvc.6.dylib 0x000000010525ff6d emit_label + 57
16 libgvc.6.dylib 0x0000000105269b20 poly_gencode + 2174
17 libgvc.6.dylib 0x0000000105275d31 emit_node + 1023
18 libgvc.6.dylib 0x0000000105274a31 emit_graph + 4714
19 libgvc.6.dylib 0x0000000105279caa gvRenderJobs + 4804
20 dot 0x000000010522ed62 main + 697
21 libdyld.dylib 0x00007fff72315085 start + 1
22 ??? 0x0000000000000005 0x0 + 5
)
libc++abi.dylib: terminating with uncaught exception of type NSException
make: *** [game-programmer.jpg] Abort trap: 6
make: *** Deleting file `game-programmer.jpg'
|
根据搜索到的答案 macos - Graphviz crashes on Mac during render using Quartz - Stack Overflow 中描述,这是因为安装 graphviz 时未安装依赖库 pango,即使按照答案中的解决方案 brew reinstall graphviz --with-pango
由 brew 处理所有事项,最后依然会报异常。
经过检查 graphviz 发现虽然配置文件中存在 pango,但是库目录中并无 pango 辅助库文件。此问题应当是 brew 打包的软件不正确导致。
截止 2018/10/21 时此问题仍未修复。
Ubuntu 18.04
使用虚拟机安装 Ubuntu,然后执行以下命令即可:
1
2
3
4
5
6
7
8
9
10
11
|
sudo apt install graphviz
wget https://github.com/coherentgraphics/cpdf-binaries/raw/master/Linux-Intel-64bit/cpdf
chmod +x cpdf
sudo mv cpdf /usr/local/bin
sudo apt install git
git clone https://github.com/miloyip/game-programmer/
cd game-programmer
make clean
make
|
全程没有任何报错,直接生成最终文件。但是构建生成的 pdf 有 50MB+ 大小,远比仓库中的 8M+ 大。
结果
因为生成的 pdf 过大,因此并没有提交到仓库中。
中文版图书更新 by networm · Pull Request #42 · miloyip/game-programmer