給遊戲程式設計者的推薦文章

本篇是推薦文。很短,但藥效很靈而且不傷身體噢。

我要誠心誠意地推薦一個網站「程式者的胡言亂語」,以及其中的一些文章,給各位現在身處業界或者未來即將成為程式設計者的讀者。

「緊緊相依的心如何 Say Goodbye,你比我清楚還要我說明白……」身為遊戲程式設計者,在撰寫遊戲系統的時候,你是否曾經考慮過類別之間的相依性問題?如果你對於相依性的定義與影響不甚瞭解,閱讀這幾篇文章之後,應該能夠得到很大的收穫。

當你的下一個專案、下一款遊戲或下一間公司,有機會重新撰寫遊戲中的子系統時,請用心想想如何利用 Manager 類別來扮演子系統與子系統之間的 Facade 介面層,以及如何降低表頭檔間的編譯依存關係,別再把繪圖、網路、使用者介面與其他雜七雜八的家族類別們,全都混在一起開雜交派對了。

程式員與開發文件之間的恩怨情仇

如一般人所知,程式設計者與文件之間,經常處於某種微妙的對立關係。真正能夠發揮功能作用的好文件,應該是隨著開發而不斷演進的有機生命體,而不是為了交差了事,完成以後就束之高閣或者拿來墊便當用的東西。如果你是程式部門的主管,不論擅長的是專案管理這把倚天劍,或者是軟體工程那把屠龍刀,請許你的程式設計者們,一個認真撰寫文件的動機與誘因吧!

程式碼共有下的團隊開發

即使遊戲業界距離極限編程 (eXtreme Programming) 的流程方法仍然有很遙遠的距離,我們還是能夠應用其中的某些準則規範,做為遊戲程式開發中的指引。為了達到集體程式碼共有 (Collective Code Ownership) 與共同認識 (Shared Understanding) 的目標,可以運用在之前文章中提過的 Code Review 程序,逐漸凝聚起團隊中的思維共識與程式寫作風格。從此以後,不分你我,再也沒有誰不能更改的 Code,達到「你 Code 中有我,我 Code 中有你」的理想境界。

「演算法 V.S. 架構設計,Round 1,Fight!」不論你是對於幾毫秒執行效能斤斤計較的演算魔人,或者是注重系統之間設計與連繫的架構魔人,請好好地閱讀這兩篇文章,或許你也會和我一樣,擁有另一番不同的體悟。

實際上,在我所撰寫過的程式碼中,並沒有使用到什麼非常複雜的演算法,或者是效能極為關鍵的單一函式。但對於程式設計者來說,即使你想要窮盡畢生心力追求程式架構中的美麗境界,也不該輕易忽略各種函式庫背後隱藏的效能成本,才能夠撰寫出執行效能良好的程式碼。

工作以外的程式設計

身為程式設計者,你還記得自己最初的動機與熱情嗎?程式設計,應該是一件很快樂的事情;如果你和我一樣,曾經失去熱情,每天上班不知為何而戰,逛網站比看程式碼的時間還多,那麼你必定要認真地讀一讀這篇文章。

做為大學科系的選擇、目前工作的選擇或者未來志業的選擇,興趣是個很重要的參考要素。然而當我們將自己的興趣與專長,轉化成為謀生工具以及經濟來源時,或多或少也必須屈服於現實環境之下,而無法像從前一樣隨心所欲的發揮。於是,當初的熱情與不顧一切的狂熱投入,也難免會隨著時間的遞移,一點一點的被現實面的種種挫敗所打散。

要找回那股最初的感動與熱情,我想說的是:「孩子,勿忘初心。」請不計成本、不論勝敗,然後一往無前地去做你真心喜愛的事物吧!我相信,即使是沒落已久的熱情,也能夠一點一點的找回來。

即使上述幾篇文章與遊戲程式設計並沒有直接的關連性,我仍然覺得,對於遊戲程式設計者來說,這些都是非常值得仔細閱讀的優秀文章。網站作者 Qing 的文筆相當精鍊而且說理清晰,把一些我曾經思考過與困擾過的議題,全部都鋪陳敘述的十分詳細,完全無須額外的贅言補述,請各位讀者慢慢閱讀、細細品嚐,必能達到心有同感、點頭稱是、拍案叫絕,接著豁然開朗以至於醍醐灌頂的境界。網站中其他的精彩文章,就留給各位去探索發現吧!

9 Replies to “給遊戲程式設計者的推薦文章”

  1. 效能設計或是結構化設計也是困擾過我,但後來卻沒有很嚴重的困擾。當我在PC上做的時候是難以決擇,後來轉到嵌入式系統後問題反而很清楚。因為硬體的效能有限,一開始是採用結構化設計,為了除錯及修改(亂槍打鳥實驗法),確認可行後就放著,接下來發現效能不足就重寫,此時改以效能設計。
    所以問題的重點是,環境的狀況才是考量採用架構的依據。

  2. 我保有程式設計的熱忱也是來自工作外的設計,但內心仍想說有些人可以討論及肯定會更有成就。社團就是很好的方法,其實有時候是因為要在社團上發表才做的如此起勁(不想丟臉)。
    雖說工作外的程式設計沒有壓力,但少許的壓力才會讓人不至於太懶。

  3. @Wallace:
    嵌入式系統我不熟悉,不過我想,在 Console 平台上開發遊戲時應該會遭遇到類似的效能問題。此時要能夠兼顧演算法效能以及架構設計層面,就是一個相當傷腦筋但又不得不努力的困難課題了。 Orz

    社團的方式滿不錯的耶!能和志同道合的朋友一起玩有意思的題材,一定很過癮呀。這時候的壓力,就是一種正面積極的好壓力,也自然能夠將壓力轉化為向前衝衝衝的動力了!

    謝謝你的心得感想。 ^^

  4. “不要讓效能考量阻止應行的正確事項。你一定找得出讓程式跑快一點的聰明方式,但是,設計不良,就很難復原了” — 美麗程式

    僅供參考.

  5. @Hua:
    在大多數的情境中,我是很贊同這句話的~
    《美麗程式》這本書,我還沒有機會看過呢。

    感謝你的分享。 ^^

  6. To 半路:

    手機, 掌上型電玩, 電視遊樂器應該都可歸類成嵌入式系統. 你的”初探Nintendo DS程式開發與設計”系列, 也可以說是在嵌入式系統上開發軟體, 所以你可以算是”有經驗”(都寫成教學做出sample了)了.

  7. @Hua:
    嗯,你說得也沒錯~
    不過我只有學習實做軟體層面的經驗,至於硬體層面就真的是一竅不通了。 XD

  8. @HHH:
    如果你想要學習遊戲程式設計的知識,不需要急於一時,現在先好好的用功讀書,努力考上好一點的大學吧!進入大學以後,你會有很多學習機會和很多自由時間可以運用的~

    好好加油吧! ^^

Leave a Reply