[請益] 找Billzzard程式設計師的一篇文章

看板GameDesign (遊戲設計)作者 (笨嘎嘎)時間12年前 (2013/07/24 18:12), 編輯推噓16(16048)
留言64則, 10人參與, 最新討論串1/1
想找一篇文章, 如果有違反板規請版主刪掉。 我記得是Blizzard的設計師所寫的, 主要是說當初在寫某個遊戲(魔獸或暗黑我忘了)的經驗, 記得依些片段, 1. 寫到一半被抓去支援其他遊戲 2. 程式有一推BUG 3. 「繼承」的概念沒有很好用 4. 存檔的功能好像有些問題 記得好像是在PTT看到的吧!? 有中文與英文一段一段翻。 現在這裡謝謝各位前輩了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.16.135

07/24 18:13, , 1F
從星海板 轉過來的星海1->Diable
07/24 18:13, 1F

07/24 18:17, , 2F
StarCraft 的開發歷史 http://ppt.cc/yakR
07/24 18:17, 2F

07/24 19:16, , 3F
就是這篇,謝謝大大
07/24 19:16, 3F

07/25 12:54, , 4F
07/25 12:54, 4F

07/25 14:08, , 5F
在請問各位大大,請問有第二部分跟第三部分嗎?
07/25 14:08, 5F

07/25 14:48, , 6F
原文有第二部分連結,第三部分好像還沒出
07/25 14:48, 6F

07/25 15:34, , 7F
沒耐心的可以先看程式碼
07/25 15:34, 7F

07/25 16:34, , 8F
07/25 16:34, 8F

07/25 19:05, , 9F
這code頗怪 混合了C跟C++的概念(抓頭)
07/25 19:05, 9F

07/25 19:06, , 10F
這篇 程式設計師犯的最大錯誤, 批評自己不熟悉的語言
07/25 19:06, 10F

07/25 19:06, , 11F
老實講拿掉operator=跟template 我會以為這是C code
07/25 19:06, 11F

07/25 19:10, , 12F
而且老實講我不了解 這實作看起來並沒有任何比std::list
07/25 19:10, 12F

07/25 19:10, , 13F
優越的地方,是我忽略了什麼重點嗎.... o_oa?
07/25 19:10, 13F

07/25 19:10, , 14F
應該說 std::linkedlist
07/25 19:10, 14F

07/25 19:10, , 15F
std::linkedlist配上boost::shared_ptr應該會好一點
07/25 19:10, 15F

07/25 19:12, , 16F
er...是std::link...java寫多了C++ STL class都搞混了
07/25 19:12, 16F

07/25 19:17, , 17F
還有一個可能是STL的記憶體配置方法採取的演算法頗暴力
07/25 19:17, 17F

07/25 19:18, , 18F
一次都是要一塊以後 超過就要兩倍... 不過我還是不明白
07/25 19:18, 18F

07/25 19:18, , 19F
的是 自己做一個std::list<T, allocator>會簡單的多
07/25 19:18, 19F

07/25 19:19, , 20F
有板友能看出為什麼他捨去這方法而用自製的理由嗎?
07/25 19:19, 20F

07/25 19:24, , 21F
因為作者 是寫c code的, 他對c++還有oo 完全不熟
07/25 19:24, 21F

07/25 20:38, , 22F
而且他的時代oo才剛起步一團糟所以他的印象也很差
07/25 20:38, 22F

07/25 20:39, , 23F
而且那個時代的硬體會讓人很計較4個byte或indirection
07/25 20:39, 23F

07/25 21:23, , 24F
那我可以完全理解為什麼這東西怎麼看都是披著C++皮的C..
07/25 21:23, 24F

07/25 21:23, , 25F
Cool!感謝各位大大幫忙,我一直都想了解頂尖程式人員
07/25 21:23, 25F

07/25 21:24, , 26F
的想法與經驗,沒想到得到的比我想像中的多^^
07/25 21:24, 26F

07/25 21:24, , 27F
還有那恐怖的Macro(我還特地gcc -E看了一下)
07/25 21:24, 27F

07/26 00:08, , 28F
那個macro我倒覺得沒什麼耶...適度的用是ok的
07/26 00:08, 28F

07/26 00:09, , 29F
inlist在遊戲開發算是頗熱門的結構,Box2D也用它
07/26 00:09, 29F

07/26 00:57, , 30F
Patrick的inlist用到的bitwis運算子的確有點太超過
07/26 00:57, 30F

07/26 00:58, , 31F
我看過的inlist中已經沒人在這樣搞了XD
07/26 00:58, 31F

07/26 08:28, , 32F
不用阿 -_-a 直接繼承std::list其實就是in-list了
07/26 08:28, 32F

07/26 08:29, , 33F
等等...不是繼承list... 早上起來腦袋不清醒 XD
07/26 08:29, 33F

07/26 08:57, , 34F
頂尖程式員會讓一般人覺得很跳針 XDDDD
07/26 08:57, 34F

07/26 10:15, , 35F
請問有前輩可以第一個圖跟第二個圖嗎?
07/26 10:15, 35F

07/26 10:16, , 36F
忘了說,是第二部分文章的圖
07/26 10:16, 36F

07/26 10:17, , 37F
我看得懂程式碼跟圖
07/26 10:17, 37F

07/26 10:18, , 38F
但是我看不懂為什麼這個程式碼會形成這個圖~"~
07/26 10:18, 38F

07/26 10:18, , 39F
希望有前輩可以指導討論一下
07/26 10:18, 39F

07/26 10:38, , 40F
喔,他的std::list圖畫錯了,下面comment有講
07/26 10:38, 40F

07/26 10:38, , 41F
別擔心,如果你看得懂程式碼,那你想像中的圖應該是對的
07/26 10:38, 41F

07/26 10:39, , 42F
他畫的是std::list<T *>,不是std::list<T>
07/26 10:39, 42F

07/26 11:20, , 43F
這篇文的插圖有比較清楚展示inlist多重link的結構
07/26 11:20, 43F

07/26 11:20, , 44F
07/26 11:20, 44F

07/26 14:57, , 45F
其實std::list是可以改造成in-list的 不過我剛剛試作了
07/26 14:57, 45F

07/26 14:58, , 46F
一下,並不是很簡單就是,所以早上我說的「繼承std::lis
07/26 14:58, 46F

07/26 14:58, , 47F
t」是句還滿糗的話
07/26 14:58, 47F

07/26 14:58, , 48F
另外 改造成in-list的話 std::list的allocator整個廢掉
07/26 14:58, 48F

07/26 14:59, , 49F
不過還是很有改造價值....
07/26 14:59, 49F

07/26 14:59, , 50F
我是用SGI版本的std::list實作版本魔改的 要是改的出來
07/26 14:59, 50F

07/26 14:59, , 51F
的話,晚點跟大家分享一下
07/26 14:59, 51F

07/26 15:36, , 52F
我有看過一本書還是哪邊寫 不要繼承std的東西 XD
07/26 15:36, 52F

07/26 15:36, , 53F
真的要用的話 就把std的東西宣告成自己class的member
07/26 15:36, 53F

07/26 15:57, , 54F
或是用private繼承,然後自己定義新的介面也ok
07/26 15:57, 54F

07/26 16:17, , 55F
Effective C++ 的 item 7 Declare destructors virtual
07/26 16:17, 55F

07/26 16:33, , 56F
因為 std 的東西 destructor 不是 virtual
07/26 16:33, 56F

07/26 17:16, , 57F
其實effective c++(還是more?)有一個很經典的例子
07/26 17:16, 57F

07/26 17:16, , 58F
他告訴你要實作一個大小寫不分的string
07/26 17:16, 58F

07/26 17:17, , 59F
要怎麼繼承basic_string, 怎麼繼承怎麼修改template
07/26 17:17, 59F

07/26 17:17, , 60F
整個流程其實把修改stl該注意的東西都含括了70%了
07/26 17:17, 60F

07/26 17:18, , 61F
不過std::list要改成in-list可能得用別的小手段來做...
07/26 17:18, 61F

07/27 15:47, , 62F
那個時代別說沒有標準程式庫,連C++都沒有可相容的標準,所
07/27 15:47, 62F

07/27 15:48, , 63F
以多半都要自己手工打造所有的部分。現在語言有標準,程式
07/27 15:48, 63F

07/27 15:50, , 64F
庫也很精良,正確的使用下效能沒問題,安心地用吧!
07/27 15:50, 64F
文章代碼(AID): #1HxwYS8Q (GameDesign)
文章代碼(AID): #1HxwYS8Q (GameDesign)