Wednesday, January 28, 2009

Retained 和 Immediate Mode 程式編寫

這幾天農曆新年假期,都沒有特別編寫程式,只是將 Ogng3D 由 Ogre 1.4.9 正式轉到 1.6.1。今天反而想說說一個程式編寫的念頭,就是 Retained 及 Immediate Mode 程式編寫的題目。

就電腦程式編寫方面,很多時都會看到 Retained Mode 的程式,例如 Windows 的程式就是最好的例子,每個程式都是以 Messages 及 Callback 形式執行,這樣的做的原因,在我的理解上,是要 De-couple 程式之間的關係,令程式與程式之間互相不需要倚賴,也能夠完成工作。但是 Immediate Mode 的程式就剛剛相反,程式在需要的時候直接地呼叫另一個程式來完成一個小工作,之間的倚賴性是很強的,如果分開了它們,程式便不能夠完成工作,甚至連 Compile 也不可以呢。

但是兩者之間,除了上面所說的編程風格外,還有甚麼其他分別呢?就我自己而言,是「難度」的分別:Retained Mode 比 Immediate Mode 困難。

在製作遊戲方面呢,會不會有特別的分別?有的,遊戲的設計及前期工作上,就是最主要的分別。以歐美及日本市場為例,歐美喜歡一邊製作同時一邊更新及改善遊戲設計 ( 更甚者會改變設計 ),而日本就很不一樣,很多時候一開始便已經有了遊戲的定案,製作上只要依設計定案完成便可。歐美的情況用 Retained Mode 就會比較好,因為程式設計都是分開的,遊戲設計需要改動的話,換個程式便可以 ( 但卻很花時間 )。後者就多以 Immediate Mode 製作了,因為遊戲設計是不會大改的,所以程式都不太需要重寫。

以上所說的,是以 Game Play 編程為背景,在 Game Engine 方面,其實是沒有特別設定了,為什麼呢?原因是製作 Game Play 的編程員,多是不需要理會 Game Engine 的架構,只要 Game Engine 方便使用,速度高便可以的了。

No comments: