徐東紅 中國礦業大學計算機科學與技術學院,江蘇 徐州221116
3D計算機游戲程序設計語言教學的探索與實踐
徐東紅 中國礦業大學計算機科學與技術學院,江蘇 徐州221116
3D計算機游戲是融合了技術、藝術、商業的文化產品,更是軟件產品。在課程講授過程中,如何讓技術開發與藝術創造在沖突的理念中相互包容,讓學生理解3D游戲開發的理念,掌握游戲開發的關鍵知識點與技術細節,并在實踐中融會貫通,最終形成游戲開發的專長,就此類問題具體闡述了筆者的教學內容、教學模式、考核形式以及教學效果。
3D游戲編程;OpenGL;教學模式
近幾年來計算機游戲發展的速度與規模日新月異,其相關技術已應用到科研、工程、商業、藝術等社會和工業生產的幾乎一切領域[1]。以3D游戲設計為基礎的科研與教學成為越來越多的院校,相關專業必修或者選修的專業課程,同時學生對于以3D游戲設計為基礎的相關專業知識也越來越感興趣。3D計算機游戲是融合了3D圖形、圖像及聲音技術和藝術的文化產品,同時也是一個軟件產品。對于工科院校的學生,不僅僅是學習一些簡單的語言設計,而是想以此學習為基礎,進行更深入的研究與應用。因為其相關知識和技術的更新、發展非常快,只有及時學習和掌握新的研究成果并提高實際應用能力,才能為以后的工作與研究奠定基礎。同時計算機3D游戲軟件的開發學習和一般軟件開發學習有著明顯的不同[2,3]。計算機3D游戲程序設計人員不僅需要掌握程序設計技巧,還需要有堅實的專業領域知識,才能有效地生成和實現游戲的畫面內容、音效處理以及與玩家的交互等。作為教授此課程的專業教師如何選擇相關3D程序設計語言、如何讓學生學習過相關語言后能更進一步的深入研究與應用、如何把一些研究應用至3D游戲學習中并在實踐中融會貫通,最終形成游戲開發的專長,是計算機游戲程序設計課程專業教師必須要著重的要求。
做3D游戲的設計開發,選擇合適的設計語言極為重要,選擇的設計語言不僅需要易學、易用,而且還要要求具有跨平臺、高性能、且有相關的規范標準。OpenGL是用于開發簡捷的交互式二維和三維圖形應用程序的最佳選擇,任何高性能的圖形應用程序,從3D動畫、CAD輔助設計到可視化仿真,都可以利用OpenGL高質量、高性能的特點。OpenGL強有力的圖形函數不要求開發人員把三維物體模型的數據寫成固定的數據格式,也不要求開發人員編寫矩陣變換、外部設備訪問等函數,大大地簡化了編寫三維圖形的程序。更重要的是微軟在Windows中包含了OpenGL,OpenGL能夠模擬比較復雜的三維物體或自然景觀。OpenGL在游戲設計中的優勢主要體現在3D圖像的設計與實現中,游戲中另一重要方面是3D音效,完成這一重要功能的是OpenAL。 OpenAL(Open Audio Library)是自由軟件界的跨平臺音效API。它設計給多通道三維位置音效的特效表現。其 API 風格模仿自OpenGL。是為了將Windows商業游戲移植到Linux上。OpenAL主要的功能是在來源物體、音效緩沖和收聽者中編碼。
在課堂教學中,專門對游戲開發的基本理念和流程進行剖析,在學習過知識點后,針對具體學習的知識點采用流行及典型的三維的游戲的案例,在游戲創意及具體編程代碼層面上進行層層分解剖析,以“解剖麻雀”的方式來講解游戲產品的組成以及游戲產品的開發流程,幫助學生理解和掌握3D游戲程序設計的方法和思想。在學生掌握知識點后,讓學生發揮自己的想象力去設計和實現具體的例子,并在開放式討論中進行詳細的講解。下面通過一個案例來說明如何將將典型案例進行全面分解剖析,讓學生掌握3D游戲開發的理論,達到良好的教學效果。案例:在課堂上中學習過運用OpenGL繪制多邊形、設置不同色彩、平移、縮放、旋轉等技術后,把各種技術組合使用,設計了在各種3D虛擬及游戲中常用的一種機器人,該機器人由頭部、手臂、軀干、腿等不同形狀和色彩的幾何圖像組成,且各組成部分相互協調進行行走,轉動。由于篇幅有限,源程序代碼過長,用OpenGL和C++設計的機器人部分代碼如下。計算法的枯燥、沉悶的傳統教學法,嘗試開放式教學內容;提問式講課;無標準答案的課程設計;查找文獻,分組動手實現程序設計等參與式教學方法,培養和發揚學生的參與意識,通過參與式教學提高學生學習的主動性、積極性和效率,培養學生的動手能力和創新能力。
在具體案例教學中,采用問題教學法、引導式教學法和參與式教學法。在問題教學法中,圍繞3D游戲程序設計的知識模塊,在引導學生發現各種各樣問題的前提下,傳授知識。教學活動中,嘗試3D程序設計知識圍繞實際問題而展現,使問題不僅成為激發學生求知欲的前提,也成為學生期盼、理解和吸收知識的前提,以此激發學生的創造動機和創造性思維。在引導式教學法中,給出相似模塊的編程思想有具體的編程代碼,讓學生去模仿和創造,比如在給出的案例中在講解過用OpenGL設置機器人頂部方法后,讓同學們模仿此代碼設計繪制立方體的前面、后面、底面、左面和右面的代碼,并強調方法與頂部設計相同,僅是參數里面的數值不同。在講解設置機器人手臂方法后,讓同學們模仿給出的實際代碼設計繪制機器人其他的部位如頭部、軀干、腿等部位的代碼,并強調方法與手臂設計相同,僅是與設計手臂的立方體大小不同,同時為了區別不同部位,可以設置不同的色彩,達到綜合美觀3D的效果。在參與式教學中,打破3D設
“工欲善其事 必先利其器”,為了開發應用,在掌握了語言設計知識點后,把語言與具體的引擎結合,更能用于控制所有游戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等。在學習OpenGL設計時,給同學們講解3D建模的引擎如Ogre、Maya、Softimage等的使用方法,在學習OpenAL 3D聲音設計時,給同學們介紹常見的聲音引擎如BASS、MikMod、FMOD、ModPlug、Miles Sound System、EAX、Dolby Encoding等在設計3D聲音時要注意的事項,要求同學們在3D建模引擎和聲音引擎中掌握一至二種,并把同學們分成項目組,給每個項目組布置和科研相關的題目,或者前沿的設計,如“基于OpenGL的礦井機器人操作可視化等。另一個方面是在學期結束前一周,每個小組將所開發的游戲進行演示交流,任課老師和其它小組的學生提出進一步完善的建議,并督促每個小組進行整改。經過多年的教學實踐證明,通過逐步引導學生在“做”游戲產品的過程中,把所游戲開發所涉及的多學科知識進行融會貫通,由點及面地逐步掌握游戲開發的高級技能,是讓學生在游戲開發方面一步一個腳印地邁向更高層次的有效途徑之一。總之,把游戲開發實踐、科研訓練相結合,極大地提升了學生的創新能力和科研基本素質。

圖1
針對3D游戲設計的課程特點,積極開展游戲開發實踐教學、研究型教學、科研訓練型學習,提高大學生的學習能力、實踐能力和創新能力的研究與實踐。我們的教學研究與實踐主要內容包括三個方面:結合典型案例全面分解剖析,讓學生掌握3D游戲開發的理念與實際應用技術和成體系的實驗訓練;游戲引擎介紹與應用以及多學科交叉的知識點和技能相對接的科研訓練。這三個主要方面,層層遞進、環環相扣,是體系完整的創新型3D游戲設計語言教學實踐,并在教學中取得了令人滿意效果。
[1]于延,王建華.游戲軟件設計專業培養模式的實踐與探索[J].計算機教育.2010(7):104-107
[2]田興彥,王嘉.基于3D 游戲引擎的物理探究學習平臺設計[J].微計算機信息.2010(26):3-6
[3]劉青,劉銳.基因工程虛擬實驗室的設計與實現[J].現代教育技術.2006(5):60-64
10.3969/j.issn.1001-8972.2011.06.073
國家重大專項“核高基”(No. 2009ZX01043-001-07)項目,中國礦業大學青年基金項目(No.2009A050),中國礦業大學“啟航計劃”項目
徐東紅(1977-),男,博士,講師,研究方向為3D虛擬程序語言設計,服務計算,形式化方法。