摘 要基于Cocos2d-x這一應(yīng)用廣泛的開源游戲引擎來講述游戲引擎的理論、機(jī)制、技術(shù),權(quán)衡了學(xué)生基礎(chǔ)及課程特點(diǎn),考慮了學(xué)生的后續(xù)課程及職業(yè)發(fā)展。在課程講授內(nèi)容的深度、廣度、難點(diǎn)、重點(diǎn)等方面進(jìn)行了探索,取得了一定的成效。
【關(guān)鍵詞】Cocos2d-x 游戲引擎
本文探討把Cocos2d-x這一開源游戲引擎作為課程主線的原因、做法及效果。
1 游戲引擎及其相關(guān)基礎(chǔ)課程
游戲引擎是開發(fā)游戲的通用底層框架,其對(duì)游戲開發(fā)通用技術(shù)進(jìn)行高層次抽象并封裝,方便開發(fā)者重用,并最終提高開發(fā)效率。游戲引擎通常包括圖像渲染引擎、場(chǎng)景管理、游戲界面、物理引擎、游戲腳本、聲音、網(wǎng)絡(luò)、內(nèi)存管理等組件,涉及到《三維圖形程序設(shè)計(jì)》、《操作系統(tǒng)》、《數(shù)據(jù)結(jié)構(gòu)》、《計(jì)算機(jī)網(wǎng)絡(luò)》、《線性代數(shù)》等課程的相關(guān)基礎(chǔ)知識(shí),綜合性較強(qiáng)。
傳統(tǒng)的桌面游戲引擎如Unreal Engine、OGRE、CryEngine、Unity等相對(duì)重量、復(fù)雜,學(xué)習(xí)門檻較高,學(xué)習(xí)曲線較長(zhǎng)。伴隨著手機(jī)的普及及HTML5技術(shù)的發(fā)展,涌現(xiàn)出了針對(duì)手機(jī)和瀏覽器的游戲引擎,比如Cocos2d-x、LibGDX、Three.js、Egret Engine等,這些游戲引擎相對(duì)輕量,容易上手,適合初學(xué)者。而且,隨著開源技術(shù)的發(fā)展,開源游戲引擎也逐漸增多,也給深入了解游戲引擎的內(nèi)部實(shí)現(xiàn)提供了諸多機(jī)會(huì)。
當(dāng)前,國(guó)內(nèi)開發(fā)手機(jī)游戲使用較多的是Cocos2d-x、Unity等,開發(fā)HTML5游戲使用較多的是Egret Engine、Cocos2d-js、Layabox等,總體來講,這些引擎的書籍、文檔資料豐富,中文支持較好。經(jīng)過權(quán)衡,我們選擇Cocos2d-x作為《游戲引擎基礎(chǔ)》課程的講解對(duì)象,意圖由淺入深、由點(diǎn)及面講解游戲引擎的組成及實(shí)現(xiàn)機(jī)制,促使學(xué)生加深對(duì)游戲引擎的理解,具備一定的游戲分析能力,掌握基本的開發(fā)技能。
2 Cocos2d-x的特點(diǎn)及實(shí)現(xiàn)
Cocos2d-x是2010年國(guó)內(nèi)的王哲團(tuán)隊(duì)基于Cocos2d-iPhone(Objective-C編寫)派生而來,用C++移植。Cocos2d-x作為一款開源、跨平臺(tái)、輕量、主要面向移動(dòng)平臺(tái)的游戲引擎,其易于使用、高效、便于擴(kuò)展,吸引了眾多游戲愛好者、游戲開發(fā)商、硬件廠商,市場(chǎng)也涌現(xiàn)出不少用Cocos2d-x開發(fā)的流行游戲。
最近幾年Cocos2d-x一致保持著快速迭代進(jìn)化,其提供了JavaScript、Lua語(yǔ)言綁定,3D功能也不斷得到增強(qiáng)。Cocos2d-x的開發(fā)團(tuán)隊(duì)還提供了Cocos Creator等開發(fā)工具,試圖覆蓋手機(jī)游戲制作的完整流程。如圖1所示。
Cocos2d-x的框架結(jié)構(gòu)、源碼結(jié)構(gòu)清晰,易于理解和分析。Cocos2d-x的基礎(chǔ)概念有導(dǎo)演、場(chǎng)景、層、精靈、調(diào)度器,圖像渲染功能有動(dòng)作、序列幀動(dòng)畫、骨骼動(dòng)畫、場(chǎng)景轉(zhuǎn)換效果、粒子系統(tǒng)、瓦片地圖等,還集成了聲音、網(wǎng)絡(luò)、物理引擎等擴(kuò)展庫(kù)。
當(dāng)前,市面上有不少關(guān)于Cocos2d-x的書籍,涵蓋了基本用法、原理分析、案例制作等主題。同時(shí),一些學(xué)校也將其列入選修課程,一些職業(yè)技能培訓(xùn)機(jī)構(gòu)也開設(shè)這方面的培訓(xùn)。有鑒于此,將Cocos2d-x引入到《游戲引擎基礎(chǔ)》課程中值得嘗試。
3 基于Cocos2d-x的《游戲引擎基礎(chǔ)》課程實(shí)踐
圍繞Cocos2d-x講解《游戲引擎基礎(chǔ)》,關(guān)鍵在于要將游戲引擎一般理論與Cocos2d-x個(gè)案分析,Cocos2d-x框架機(jī)制與內(nèi)部代碼實(shí)現(xiàn),典型游戲案例分析與獨(dú)立開發(fā)游戲技能提升相結(jié)合。如圖2所示。
在實(shí)踐中,主要做法有:
(1)基于Cocos2d-x的附帶案例,講解導(dǎo)演、場(chǎng)景、層、精靈、動(dòng)作等基本概念;
(2)分析Cocos2d-x源碼,講解精靈、動(dòng)作、動(dòng)畫、調(diào)度器等的內(nèi)部實(shí)現(xiàn),結(jié)合OpenGL ES講解精靈的渲染機(jī)制;
(3)基于Cocos2d-x集成的Box2d物理引擎,講解2D物理引擎的使用辦法和實(shí)現(xiàn)思路;
(4)在把握Cocos2d-x的基礎(chǔ)上,結(jié)合Cocos2d-html5、Cocos2d-x的Javascript綁定講解游戲腳本編程;
(5)在使用Tiled Map Editor瓦片地圖制作工具、Cocos Creator場(chǎng)景制作工具、Particle Universe粒子制作工具的過程中,學(xué)習(xí)瓦片地圖渲染、粒子渲染、場(chǎng)景元素屬性相關(guān)的理論知識(shí);
(6)結(jié)合捕魚達(dá)人、保衛(wèi)羅卜、太空戰(zhàn)機(jī)等游戲案例,結(jié)合理論分析游戲?qū)崿F(xiàn),并改動(dòng)、擴(kuò)展這些案例;
(7)課程實(shí)施過程中,引入了選擇、判斷題型的在線測(cè)試,檢驗(yàn)基本知識(shí)點(diǎn)、Cocos2d-x API等的掌握情況,提高識(shí)記、理解效果。結(jié)課作業(yè)要求學(xué)生獨(dú)立完成簡(jiǎn)單游戲的設(shè)計(jì)與開發(fā)。
總體而言,傳統(tǒng)的游戲引擎課程側(cè)重于講解數(shù)學(xué)運(yùn)算、圖形渲染、場(chǎng)景管理等的封裝及實(shí)現(xiàn),對(duì)學(xué)生的專業(yè)基礎(chǔ)要求較高,學(xué)生接受程度較低。本課程面向游戲開發(fā)等方向的初學(xué)者,嘗試把Cocos2d-x這一有較高市場(chǎng)競(jìng)爭(zhēng)力的開源游戲引擎引入到課程,系統(tǒng)化地全面了解游戲引擎的設(shè)計(jì)、實(shí)現(xiàn)和應(yīng)用,為后續(xù)課程的學(xué)習(xí)和職業(yè)發(fā)展打下良好基礎(chǔ)。
參考文獻(xiàn)
[1]于復(fù)興,吳亞峰,索依娜.Cocos2d-x游戲開發(fā)標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社,2016:1-2.
[2]秦春林.我所理解的Cocos2d-x[M].北京:電子工業(yè)出版社,2014:18-19.
作者簡(jiǎn)介
王玉峰(1982-),男。碩士學(xué)位。助教。主要研究方向?yàn)橛螒蛞?、全棧開發(fā)。
作者單位
華北水利水電大學(xué)軟件學(xué)院 河南省鄭州市 450045