摘要:網(wǎng)絡(luò)游戲產(chǎn)業(yè)是目前飛速發(fā)展的高新產(chǎn)業(yè),但高素質(zhì)的游戲開發(fā)人才匱乏已成為制約產(chǎn)業(yè)發(fā)展的瓶頸。本文分析了游戲開發(fā)教育過程中遇到的問題,提出了在游戲開發(fā)教學(xué)的主線課程中整合框架設(shè)計思想,幫助學(xué)生形成面向?qū)ο蟪绦蛟O(shè)計思想,形成游戲軟件開發(fā)能力的新方法。
關(guān)鍵詞:游戲開發(fā)教學(xué);面向?qū)ο蟪绦蛟O(shè)計;框架;課程整合
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 21-0000-02
1 引言
計算機(jī)軟硬件技術(shù)的迅速發(fā)展及人們的對娛樂的需求,極大的促進(jìn)了網(wǎng)絡(luò)游戲產(chǎn)業(yè)的發(fā)展。相對于行業(yè)飛速發(fā)展的現(xiàn)狀,從業(yè)人員卻嚴(yán)重不足,高素質(zhì)游戲開發(fā)人才匱乏已成為制約產(chǎn)業(yè)發(fā)展的瓶頸。
高素質(zhì)的游戲開發(fā)人才的匱乏與國內(nèi)高等教育的現(xiàn)狀不無關(guān)系。目前,國內(nèi)開設(shè)網(wǎng)絡(luò)游戲開發(fā)教育的本科專業(yè)方向的學(xué)校并不多,對于游戲開發(fā)的教育處于起步階段,因此,探討如何更好地培養(yǎng)游戲開發(fā)人才具有實際意義。
2 游戲開發(fā)教學(xué)中存在的問題
游戲軟件是一個比較復(fù)雜的軟件系統(tǒng),在教學(xué)過程中,需要幫助學(xué)生形成游戲軟件開發(fā)能力,存在如下的一些困難需要克服:
2.1 需要掌握面向?qū)ο蟮某绦蛟O(shè)計方法?!懊嫦?qū)ο蟪绦蛟O(shè)計(英語:Object-oriented programming,縮寫:OOP),指一種程序設(shè)計范型,同時也是一種程序開發(fā)的方法。它將對象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性”[1]。面向?qū)ο蟪绦蛟O(shè)計方法將要解決的問題域通過封裝、繼承、多態(tài)[2]等方法分解成若干類組成的類體系,這種分解特別適合多人協(xié)同完成同一個項目,適合完成大型、復(fù)雜的項目,因此。面向?qū)ο蟮某绦蛟O(shè)計方法是目前主流的軟件開發(fā)方法。然而,面向?qū)ο蟮某绦蛟O(shè)計方法是在較高層次上對程序設(shè)計方法進(jìn)行抽象,在學(xué)習(xí)理解上存在著一些困難,如在學(xué)習(xí)C++語言時,學(xué)生不太容易理解封裝、繼承、多態(tài),特別是多態(tài)這些面向?qū)ο蟪绦蛟O(shè)計的核心概念在軟件開發(fā)中的實際用處。
2.2 游戲軟件開發(fā)需要融合多方面的知識。就游戲軟件開發(fā)要融合多方面的知識。游戲軟件開發(fā)人員首先是一個程序員,必須具備一個程序員的基本素質(zhì)。程序員至少應(yīng)該掌握一門程序設(shè)計語言(C++語言),具備一定的算法設(shè)計能力;游戲程序設(shè)計同時需要掌握游戲開發(fā)相關(guān)的技術(shù),如windows編程、DirectX技術(shù)、三維編程等。這些知識具有較高的難度,學(xué)生接受理解存在較大的困難。而且由于這些課程在知識點上環(huán)環(huán)相扣,某一個環(huán)節(jié)掌握不好,會增大后面環(huán)節(jié)的學(xué)習(xí)難度。
3 解決方法
針對上述的問題,可以采用在教學(xué)過程中整合框架設(shè)計思想的方法來解決。
3.1 概念。“框架(Framework)是整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認(rèn)為,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架”[3]??蚣苁墙鉀Q一類問題的規(guī)范??蚣軕?yīng)用于特定的領(lǐng)域(例如游戲開發(fā)),抽象了這個領(lǐng)域的解決方案中的固定不變的部分,形成類體系,供開發(fā)者調(diào)用。在框架的設(shè)計時要注意“開-閉”原則,即對擴(kuò)展開放,對修改封閉。要達(dá)到這樣的設(shè)計原則,框架的設(shè)計必須使面向?qū)ο蟮某绦蛟O(shè)計方法。因此在課程教學(xué)中整合框架設(shè)計,會加深學(xué)生對面向?qū)ο蟪绦蛟O(shè)計方法的理解。同時框架將游戲開發(fā)中的常用方法整合,并且把框架的設(shè)計貫穿到語言學(xué)習(xí)、游戲開發(fā)課程中,可以讓學(xué)生在不斷重復(fù)迭代過程中,將游戲程序開發(fā)中所涉及到的知識點融會貫通。
3.2 實施方法。首先,需要根據(jù)游戲開發(fā)的一般方法,開發(fā)出一個適合學(xué)生學(xué)習(xí)的游戲框架。游戲中的各種圖像的渲染是游戲程序設(shè)計中的重點,場景、角色、攻擊效果等都是由圖像來呈現(xiàn)的。游戲中的各種圖像有一個專門的術(shù)語,稱作為“精靈”[4]。“精靈”是指游戲中所有可顯示的對象。因此該框架只涉及游戲中的精靈顯示和管理相關(guān)的功能,這樣可以降低框架的復(fù)雜程度,使學(xué)生在學(xué)習(xí)過程中容易理解。該框架通過使用面向?qū)ο蟮某绦蛟O(shè)計方法定義了類和類的組合,完成游戲中必須的鎖定幀頻、準(zhǔn)備渲染環(huán)境、建立游戲循環(huán)、傳遞鍵盤鼠標(biāo)事件、資源管理、圖像的呈現(xiàn)和管理等功能。學(xué)生使用該框架能比較容易地實現(xiàn)游戲程序,激發(fā)學(xué)生的學(xué)習(xí)興趣。
其次,該框架的實現(xiàn)根據(jù)學(xué)生的學(xué)習(xí)進(jìn)度不停地迭代演化。根據(jù)學(xué)生認(rèn)知過程,游戲程序開發(fā)教學(xué)的主線按照圖1所示:
框架的教學(xué)應(yīng)該貫穿到這條主線中,具體方法如下:
在《C++語言》這門課程里,在講述到封裝、繼承、多態(tài)等概念時,就需要把游戲開發(fā)中的一般性問題分析給學(xué)生,有意識地引導(dǎo)學(xué)生完成精靈類的定義、精靈管理類的定義。此吃,學(xué)生還沒有學(xué)習(xí)繪圖相關(guān)的知識,所有圖形的輸出可以用控制臺輸出字符串的方式來替代。在《Windows編程》這門課程里,學(xué)生學(xué)習(xí)了Windows消息循環(huán)、圖像加載、圖像顯示等技術(shù),那么需要引導(dǎo)學(xué)生完成游戲管理類實現(xiàn)游戲循環(huán)、鎖定幀頻等功能;完成資源管理類實現(xiàn)圖像資源的加載;修改精靈類實現(xiàn)利用GDI顯示精靈的功能;在《DirectX技術(shù)》這門課程里,學(xué)生繼續(xù)學(xué)習(xí)利用DirectX開發(fā)庫來完善框架。如在游戲管理類里增加利用D3D準(zhǔn)備渲染環(huán)境的功能,利用D3D繪制基本圖元的方法來繪制一個綁定紋理的矩形的方法來顯示精靈。在《三維編程》這門課程里,將精靈類的渲染改為使用D3D中渲染模型的方法來實現(xiàn)3D精靈的渲染。綜上,學(xué)生在這條游戲開發(fā)的主線的學(xué)習(xí)過程中,始終圍繞框架的實現(xiàn)和使用來展開。學(xué)生通過在不同的的課程里用不同的知識點一點一點完善游戲框架,可以幫助學(xué)生在學(xué)習(xí)知識點時就把它們綜合應(yīng)用,形成自己的游戲開發(fā)能力。同時框架的實現(xiàn)是面向?qū)ο蟮某绦蛟O(shè)計方法的具體應(yīng)用,學(xué)生在不斷的練習(xí)實現(xiàn)框架的過程中,能逐漸掌握面向?qū)ο蟮某绦蛟O(shè)計方法。
4 小結(jié)
通過幾年的教學(xué)實踐表明,學(xué)生通過這種整合了框架設(shè)計思想的游戲軟件開發(fā)主線課程的學(xué)習(xí),能較好的掌握面向?qū)ο蟮某绦蛟O(shè)計方法,形成良好的游戲開發(fā)能力,并能在課程設(shè)計或者畢業(yè)設(shè)計這樣的綜合實踐類課程中體現(xiàn)出來。
參考文獻(xiàn):
[1]維基百科.面向?qū)ο蟪绦蛟O(shè)計[EB/OL].http://zh.wikipedia.org/wiki/面向?qū)ο蟪绦蛟O(shè)計.
[2]洪洲,蔡木生,羅林.計算機(jī)高級語言程序設(shè)計(C++)[M].北京:冶金工業(yè)出版社,2007:159-160.
[3]全國科學(xué)技術(shù)名詞審定委員會.框架[EB/OL].http://baike.baidu.com/view/66971.htm.
[4]羅林.2D游戲中的精靈管理[J].科技創(chuàng)新導(dǎo)報,2009,(23):176.