遊戲程式的設計模式  

Posted by 藍斯洛 in

前幾天,老闆找我討論一個問題:要給程式新人怎麼樣的訓練,才能讓他們在專案開發上發揮該有的戰力?

我把這個問題繞了兩個彎,換成:有什麼東西是新人不懂,卻深植在老手腦子裡的?

於是我找到了幾個重點,其中一個就是遊戲程式的設計模式。

四人幫的書裡面所寫的設計模式,我稱它做一般化的設計模式。當然,在遊戲程式裡,也是多多少少會用到個幾種模式的,像是Singleton、Factory、State之類。

而我們要再進一步做整理的,是在遊戲程式裡常用的設計。

例如,在遊戲資源或是繪圖資源的管理上,運用Reference Count很常見,但是對剛跨入這一行的程式新人來說,Reference Count可是連聽都沒聽說過。而另外一個極端的資源管理方式,Garbage Collection,又是怎麼回事?

程式老手會說,拜託! 這是基本觀念好不好?

不過,要讓新手程式自己搞懂這是什麼,可是一個不算低的門檻。

以往,我們用的是,師父領進門,然後自己修行,從數十萬行的程式碼裡頭,自己把這些所謂的「基本觀念」搞懂的方式來訓練新人,訓練期不但太長,也未必人人都有辦法自己「頓悟」出來。而且,如果急就章似的就這樣把新人丟上線去打仗,那是很容易出問題的。例如,Reference Count一旦用錯了,小則memory leak,大則crash。

反正都不是好結果。

然後我們為了減少出錯的機率,將Reference Count的機制,套上了Share Pointer的Template來使用....

這又是新手程式要跨過的另一個門檻。

老手知道Reference Count的使用時機、使用方式,以及設計上所要考慮的點,也知道Share Pointer究竟要防範什麼樣的錯誤,以及會帶來什麼麻煩。但對新手程式來說,這是:千頭萬緒,治絲益棼。

所以我們要拉出一條可以當作起點的線頭,將這些遊戲程式中的設計模式,從複雜的程式碼裡頭整理簡化出來,降低新手程式的進入門檻。

也許哪一天我可以把某些個整理出來的模式Po出來也說不定......

This entry was posted on 2009年7月10日 星期五 at 星期五, 7月 10, 2009 and is filed under . You can follow any responses to this entry through the comments feed .

2 意見

很有道理,我從沒聽過台灣的遊戲公司,對程式設計者有什麼比較有系統的教育訓練機制,通常都是文件和程式碼丟過去給他們自己啃,然後在無盡的臭蟲和錯誤中,慢慢學會重要的觀念與知識。

如果能將這些重要的關鍵概念整理出來,應該會對新手很有幫助~(期待期待 XD)

2009年7月10日 下午3:46

美國也是差不多啊。說更廣一點,我覺得寫程式的工作都差不多。程式設計的學習真的很大一部份都是要靠自己去挖去練功的哩~ 實作學習到的遠比用說明的有效果,而老手能給的,多半是你自己練到一個程度後幫你點開最後的難關吧!

越有歷練,越不敢說自己是老手了。每天每天都有那麼多的專家發明新的演算法、新的模式範式、新的...

2009年7月14日 上午1:47

張貼留言