????? 軟件復用程度的級別可以按以下準則來衡量(級別從低到高):
(1)函數(shù):將那些重復或者類似的程序集中起來放在函數(shù)里,對外提供參數(shù)以利復用,是功能型的重用;
(2)實在類:將若干經(jīng)常使用的函數(shù)集中起來,將函數(shù)的參數(shù)轉(zhuǎn)化為類的成員變量,自定義構(gòu)造和銷毀函數(shù),是資源型的重用;
(3)抽象類:使用純虛函數(shù)對外提供接口,這些接口僅僅聲明了基類的功能,而將實現(xiàn)拖延到子類中去,是強調(diào)可變性的資源型重用;
(4)包:將若干耦合度較大的類集中起來,統(tǒng)一地對外提供接口,是一種有機的資源型重用;
(5)模板:將變量的類型通用化,它是一種強調(diào)通用性的資源型重用,可以應用在上面四個層次上;
(6)組件:封裝了數(shù)據(jù)和方法的可執(zhí)行代碼,上面五種都屬于代碼級的復用,而組件屬于軟件級的重用。
??????? 游戲一般規(guī)模都很大,保持結(jié)構(gòu)清晰是首要的問題。我們知道大型系統(tǒng)一般都可以分為MVC三部分,實踐證明這種結(jié)構(gòu)行之有效。本人將之應用在游戲設計中總結(jié)出若干經(jīng)驗:
(1)將建模和交互兩部分分開,建模階段采用工廠模式,利用資源管理器統(tǒng)一創(chuàng)建、銷毀和調(diào)度資源;
(2)交互包括顯示和操縱兩部分,其實可以統(tǒng)一由圖形界面實現(xiàn);
(3)邏輯使用腳本加解釋器的方式實現(xiàn),這樣可以在游戲之外修改游戲;
(4)將場景作為游戲的基本單位,將物理系統(tǒng)和效果系統(tǒng)獨立出來,場景可以透明使用和替換它們;
(5)針對應用自定義消息,開辟若干線程,使用線程消息機制來進行消息響應;
(6)注意類的粒度的問題,類之間的交互只好保持在同一級,這樣有利于擴展和移植。
???????? 游戲設計最理想的情況就是美工做資源,設計師寫腳本,然后運行一下可復用的引擎就把游戲搞出來了。雖然難度不小,但是可以沖著這個目標努力,最最關(guān)鍵的還是要有合理的體系結(jié)構(gòu)。
????????
??? 從電子游戲的開發(fā)難度來看,它不亞于開發(fā)一個小型的操作系統(tǒng),為什么這么說呢?首先在計算量方面,由于電子游戲是三維的,CPU計算量非常大;其次在資源管理方面,顯卡和內(nèi)存的使用要精打細算;第三,游戲中的對象之間的通信十分頻繁,大部分消息的檢測和響應都要自定義。實際上,開發(fā)電? 子游戲的時候是要借鑒很多操作系統(tǒng)的思想的,比如基于多線程的消息系統(tǒng),基于組件的窗口系統(tǒng)等。
??? 從電子游戲的內(nèi)容來看,它比操作系統(tǒng)更高級。傳統(tǒng)的操作系統(tǒng)都是桌面式的,而電子游戲擁有自己的一個虛擬空間,甚至連它的GUI也是三維的。我們知道從無圖形的DOS到有圖形的Windows是一個很大的進步,而從平面到立體則是一個更大的進步。我個人認為在計算機方面,天才來自以下幾個領(lǐng)域:網(wǎng)絡黑客,操作系統(tǒng)開發(fā)者,再有就是游戲設計師。
??? 其實電子游戲更應該叫虛擬環(huán)境,它的很多技術(shù)和思想都可以移植到專業(yè)的圖形系統(tǒng)中去,實際上很多的虛擬戰(zhàn)場系統(tǒng)就是基于類似的游戲開發(fā)的,所以我認為電子游戲絕對不是只有娛樂價值。可以這么說,如今的電子游戲既是應用系統(tǒng),又是操作系統(tǒng),它是一種技術(shù)含量很高的軟件,應該得到程序員足夠的尊重。
??????? 此次會議發(fā)生了如下一些趣事:參加了唐澤圣教授的頒獎儀式,跟石教英教授一起排隊打飯,跟彭群生教授同桌吃飯,跟Ahmad Nasri樓外樓同桌聚餐,參觀CAD&CG國家重點實驗室,欣賞了西湖夜景。對幾個老師印象比較深刻:齊東旭,鮑虎軍,胡事民。收獲了兩本論文集:唐澤圣論文集和石教英論文集。總的感覺是長了見識,見到了許多圖形系統(tǒng)的演示,并且認識了不少圖形學方面的朋友。可以肯定的是:在圖形學方面,浙江大學是國內(nèi)最好的。總而言之一句話:雖然圖形學是騙眼睛的,但是我熱愛它。
?????? 完成Transformer 2.0之后,我已經(jīng)靜心思考了一段時間。我剛拜讀了“四人幫”所著的《設計模式》一書,發(fā)現(xiàn)2.0中已經(jīng)使用了其中的六種了,分別是Factory、Singleton、Chain、Command、Interpreter、Observer。其它的模式也基本上看得懂。接下來打算將State、Strategy應用到3.0中。三種類型的設計模式:創(chuàng)建型、結(jié)構(gòu)型和行為型,我認為行為型最有用,因為游戲中一則對象多,二則通信頻繁。為更好地解決該問題我將在3.0中借鑒經(jīng)典的設計模式。State是狀態(tài)機,可以用在游戲狀態(tài)的切換上;Strategy是算法,可以用在物理系統(tǒng)的實現(xiàn)上。我的經(jīng)驗是:設計模式能夠讓你既優(yōu)雅又高效地解決問題。