作者StupidGaGa (笨嘎嘎)
看板GameDesign
标题[请益] 找Billzzard程式设计师的一篇文章
时间Wed Jul 24 18:12:42 2013
想找一篇文章,
如果有违反板规请版主删掉。
我记得是Blizzard的设计师所写的,
主要是说当初在写某个游戏(魔兽或暗黑我忘了)的经验,
记得依些片段,
1. 写到一半被抓去支援其他游戏
2. 程式有一推BUG
3. 「继承」的概念没有很好用
4. 存档的功能好像有些问题
记得好像是在PTT看到的吧!?
有中文与英文一段一段翻。
现在这里谢谢各位前辈了。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.16.135
1F:→ VVll:从星海板 转过来的星海1->Diable 07/24 18:13
3F:→ StupidGaGa:就是这篇,谢谢大大 07/24 19:16
5F:→ StupidGaGa:在请问各位大大,请问有第二部分跟第三部分吗? 07/25 14:08
6F:推 cjcat2266:原文有第二部分连结,第三部分好像还没出 07/25 14:48
7F:推 cowbaying:没耐心的可以先看程式码 07/25 15:34
9F:推 Killercat:这code颇怪 混合了C跟C++的概念(抓头) 07/25 19:05
10F:→ VVll:这篇 程式设计师犯的最大错误, 批评自己不熟悉的语言 07/25 19:06
11F:→ Killercat:老实讲拿掉operator=跟template 我会以为这是C code 07/25 19:06
12F:→ Killercat:而且老实讲我不了解 这实作看起来并没有任何比std::list 07/25 19:10
13F:→ Killercat:优越的地方,是我忽略了什麽重点吗.... o_oa? 07/25 19:10
14F:→ Killercat:应该说 std::linkedlist 07/25 19:10
15F:→ Killercat:std::linkedlist配上boost::shared_ptr应该会好一点 07/25 19:10
16F:→ Killercat:er...是std::link...java写多了C++ STL class都搞混了 07/25 19:12
17F:→ Killercat:还有一个可能是STL的记忆体配置方法采取的演算法颇暴力 07/25 19:17
18F:→ Killercat:一次都是要一块以後 超过就要两倍... 不过我还是不明白 07/25 19:18
19F:→ Killercat:的是 自己做一个std::list<T, allocator>会简单的多 07/25 19:18
20F:→ Killercat:有板友能看出为什麽他舍去这方法而用自制的理由吗? 07/25 19:19
21F:→ VVll:因为作者 是写c code的, 他对c++还有oo 完全不熟 07/25 19:24
22F:→ azureblaze:而且他的时代oo才刚起步一团糟所以他的印象也很差 07/25 20:38
23F:→ azureblaze:而且那个时代的硬体会让人很计较4个byte或indirection 07/25 20:39
24F:推 Killercat:那我可以完全理解为什麽这东西怎麽看都是披着C++皮的C.. 07/25 21:23
25F:→ StupidGaGa:Cool!感谢各位大大帮忙,我一直都想了解顶尖程式人员 07/25 21:23
26F:→ StupidGaGa:的想法与经验,没想到得到的比我想像中的多^^ 07/25 21:24
27F:→ Killercat:还有那恐怖的Macro(我还特地gcc -E看了一下) 07/25 21:24
28F:推 cjcat2266:那个macro我倒觉得没什麽耶...适度的用是ok的 07/26 00:08
29F:→ cjcat2266:inlist在游戏开发算是颇热门的结构,Box2D也用它 07/26 00:09
30F:推 cjcat2266:Patrick的inlist用到的bitwis运算子的确有点太超过 07/26 00:57
31F:→ cjcat2266:我看过的inlist中已经没人在这样搞了XD 07/26 00:58
32F:→ Killercat:不用阿 -_-a 直接继承std::list其实就是in-list了 07/26 08:28
33F:→ Killercat:等等...不是继承list... 早上起来脑袋不清醒 XD 07/26 08:29
34F:推 cowbaying:顶尖程式员会让一般人觉得很跳针 XDDDD 07/26 08:57
35F:→ StupidGaGa:请问有前辈可以第一个图跟第二个图吗? 07/26 10:15
36F:→ StupidGaGa:忘了说,是第二部分文章的图 07/26 10:16
37F:→ StupidGaGa:我看得懂程式码跟图 07/26 10:17
38F:→ StupidGaGa:但是我看不懂为什麽这个程式码会形成这个图~"~ 07/26 10:18
39F:→ StupidGaGa:希望有前辈可以指导讨论一下 07/26 10:18
40F:推 cjcat2266:喔,他的std::list图画错了,下面comment有讲 07/26 10:38
41F:→ cjcat2266:别担心,如果你看得懂程式码,那你想像中的图应该是对的 07/26 10:38
42F:→ cjcat2266:他画的是std::list<T *>,不是std::list<T> 07/26 10:39
43F:推 cjcat2266:这篇文的插图有比较清楚展示inlist多重link的结构 07/26 11:20
45F:→ Killercat:其实std::list是可以改造成in-list的 不过我刚刚试作了 07/26 14:57
46F:→ Killercat:一下,并不是很简单就是,所以早上我说的「继承std::lis 07/26 14:58
47F:→ Killercat:t」是句还满糗的话 07/26 14:58
48F:→ Killercat:另外 改造成in-list的话 std::list的allocator整个废掉 07/26 14:58
49F:→ Killercat:不过还是很有改造价值.... 07/26 14:59
50F:→ Killercat:我是用SGI版本的std::list实作版本魔改的 要是改的出来 07/26 14:59
51F:→ Killercat:的话,晚点跟大家分享一下 07/26 14:59
52F:推 FukadaKyoko:我有看过一本书还是哪边写 不要继承std的东西 XD 07/26 15:36
53F:→ FukadaKyoko:真的要用的话 就把std的东西宣告成自己class的member 07/26 15:36
54F:推 cjcat2266:或是用private继承,然後自己定义新的介面也ok 07/26 15:57
55F:推 franknine:Effective C++ 的 item 7 Declare destructors virtual 07/26 16:17
56F:推 franknine:因为 std 的东西 destructor 不是 virtual 07/26 16:33
57F:推 Killercat:其实effective c++(还是more?)有一个很经典的例子 07/26 17:16
58F:→ Killercat:他告诉你要实作一个大小写不分的string 07/26 17:16
59F:→ Killercat:要怎麽继承basic_string, 怎麽继承怎麽修改template 07/26 17:17
60F:→ Killercat:整个流程其实把修改stl该注意的东西都含括了70%了 07/26 17:17
61F:→ Killercat:不过std::list要改成in-list可能得用别的小手段来做... 07/26 17:18
62F:推 Casval:那个时代别说没有标准程式库,连C++都没有可相容的标准,所 07/27 15:47
63F:→ Casval:以多半都要自己手工打造所有的部分。现在语言有标准,程式 07/27 15:48
64F:→ Casval:库也很精良,正确的使用下效能没问题,安心地用吧! 07/27 15:50