徐明鶴 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
基于Cocos2d-x移動平臺跑酷類游戲的設(shè)計(jì)與實(shí)現(xiàn)
徐明鶴 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
隨著社會的飛速進(jìn)步,信息技術(shù)的飛速發(fā)展,中國的手游市場也逐漸以突飛猛進(jìn)的速度在發(fā)展。跑酷游戲是基于跑酷這項(xiàng)極限運(yùn)動的定義上發(fā)展起來的,喵星忍者作為跑酷類手機(jī)游戲中的一個(gè)典型的代表,發(fā)展的背景就是這個(gè)時(shí)期。本文主要是通過軟件工程的思想詳細(xì)介紹了游戲的設(shè)計(jì)場景,同時(shí)針對游戲的主場景著重地進(jìn)行了闡述。在游戲的開發(fā)中,應(yīng)用了Cocos2d-X引擎技術(shù),此外可擴(kuò)展性提高方面,運(yùn)用了單例模式,實(shí)現(xiàn)游戲主場景中,引入了碰撞檢測以及物理模擬,這些技術(shù)的增加都使得游戲的畫面效果更逼真。
手游 引擎技術(shù) Cocos2d-X
作為跑酷類手機(jī)游戲中的一種《喵星忍者》吸引無數(shù)的玩家。跑酷的另一個(gè)稱呼是Parkour。Parkour在80年代的法國出現(xiàn)的,“Parkour”這一個(gè)術(shù)語是來源于“parcourir”這是個(gè)法國單詞,意思是指到處跑,基于跑酷運(yùn)動,于是開發(fā)者就有了跑酷游戲的設(shè)計(jì)靈感,雖然跑酷游戲并沒有受到很多的平臺的重視,然而在引入了移動端技術(shù)后得到了很多人的喜愛。和其他的跑酷類游戲比較,《喵星忍者》用到了Cocos2d-X技術(shù),另外該游戲的模式一共有三種組成,為教學(xué)模式、無盡模式、闖關(guān)模式等,而所謂的無盡模式中的游戲場景是不斷發(fā)生變化的,同時(shí)還可以讓玩家體驗(yàn)到游戲所帶來的刺激感以及神秘感。游戲的另一個(gè)吸引玩家的方式是通過購買道具以及升級武器實(shí)現(xiàn)的。
1.1 框架結(jié)構(gòu)
Cocos2d-X引擎技術(shù)細(xì)分了游戲中的場景,該項(xiàng)游戲的畫面主要包括了多個(gè)場景。在導(dǎo)演的控制下,從而實(shí)現(xiàn)了切換多個(gè)場景。不同的場景對應(yīng)著不同層次構(gòu)成,而且每一個(gè)層次里面也可以新增其他的精靈對象。從而通過該引擎形成了游戲的整體畫面效果。在引擎技術(shù)中需要用到幾個(gè)概念,就是層次、場景、精靈、以及導(dǎo)演等。場景主要是當(dāng)游戲啟動的時(shí)候,所呈現(xiàn)出來的畫面。每一個(gè)應(yīng)用中都有著很多個(gè)場景,然而激活狀態(tài)只可以是一個(gè),可以從另外一個(gè)方面來講,就是每一次就顯示一個(gè)界面。而且每個(gè)場景的組成都包括了一個(gè)或多個(gè)的CCNode,在場景中新增CCNode,作為全部節(jié)點(diǎn)中的基類,可以給場景其他的行為以及外觀。CCNode的子類,比如CCLayer和CCSprite,導(dǎo)演可以把這個(gè)子類看成是游戲里面的控制器,切換不同場景。作為一個(gè)單例,場景的改變可以通當(dāng)前場景的替換完成,也可以將新的場景替換到場景棧里面。在場景棧中放置一個(gè)新的場景時(shí)候,當(dāng)前的場景就會被CCDirector終止,同時(shí)被存儲在內(nèi)存中,接著將新場景顯示出來。棧頂場景完成了出棧的操作后,前面的那個(gè)場景就可以變成最后的狀態(tài)最后顯示出來。
1.2 控件介紹
UI控件的原稱是User Interface,該控件用于用戶進(jìn)行界面交互,所包含的組件有標(biāo)簽、滾動欄、按鈕以及進(jìn)度條等?!哆餍侨陶摺返挠螒蛑?,因?yàn)槌霈F(xiàn)了許多的選項(xiàng)類場景以及展示類場景,所以在游戲中控件充當(dāng)著很大的作用,游戲控制中包括了很多按鈕之類的控件。
全部的按鈕基類是CCMenultem類。該類的功能為:給出基本按鈕的3種狀態(tài),分別是選中、正常以及無效等。提供回調(diào)函數(shù)機(jī)制給按鈕對象。當(dāng)用戶點(diǎn)擊按鈕對象的時(shí)候,就會觸發(fā)一個(gè)動作,這個(gè)時(shí)候游戲中的邏輯調(diào)用同時(shí)一個(gè)函數(shù)來實(shí)現(xiàn),該函數(shù)稱為是回調(diào)函數(shù)。
2.1 游戲介紹
作為跑酷類手機(jī)游戲中的一種《喵星忍者》的教學(xué)模式所面對的對象是新玩家,在具體的指導(dǎo)下,玩家可以在比較短的時(shí)間掌握游戲的操作。而其中的闖關(guān)模式具體由3個(gè)章節(jié)組成,每個(gè)章節(jié)分為8個(gè)關(guān)卡,而且每個(gè)章節(jié)所對應(yīng)的最后一個(gè)關(guān)卡是Boss關(guān)卡,喵星忍者在最后可以和終極Boss來一場終極pk。當(dāng)喵星忍者順利闖關(guān)成功后,就會有權(quán)限進(jìn)入到下一個(gè)關(guān)卡,玩家能夠進(jìn)行下一個(gè)關(guān)卡的選擇。無盡模式的意思是指游戲只有在喵星忍者滅亡后,游戲才終止,然后后期再將喵星忍者跑動的終極距離統(tǒng)計(jì)出來。在游戲過程中,喵星忍者的狀態(tài)始終是跑動的,喵星忍者能夠完成跳躍,另外也能夠通過一些道具、相關(guān)技能和武器等從而完成游戲。剛開始的時(shí)候,喵星忍者具有一些血量,當(dāng)被敵人或者其他的障礙物攻擊的時(shí)候,喵星忍者的血量就會出現(xiàn)一定的損失,當(dāng)最后血量為0的時(shí)候,關(guān)卡就重新啟動。當(dāng)喵星忍者每戰(zhàn)勝一個(gè)敵人,喵星忍者就會得到獎(jiǎng)勵(lì),包括鉆石或金幣。在喵星忍者獲得了很多的鉆石或金幣后,可以完成武器的升級,還有權(quán)限購買大量的道具以及相關(guān)的解鎖工具等。
2.2 世界地圖場景
世界地圖場景中的具體功能涉及到了游戲的模式選擇以及喵星忍者的信息查看,其次還可以完成道具的購買以及武器的,任務(wù)的查看等等。
其中選擇游戲模式可以分為以下幾個(gè)步驟:
①當(dāng)選擇訓(xùn)練的模式,系統(tǒng)就跳轉(zhuǎn)到游戲加載場景,接著跳入到教學(xué)模式場景。②玩家從普通關(guān)卡中任意選擇,便會進(jìn)入到對應(yīng)的關(guān)卡場景選擇中,當(dāng)關(guān)卡被解鎖后,就可以進(jìn)入到關(guān)卡的游戲場景中。③如果選擇的是無盡模式,那就回出現(xiàn)功能框的彈出,玩家從提示中選擇3個(gè)難度,具體為普通、煉獄以及英雄。玩家進(jìn)入普通模式不需要其他的權(quán)限。
3.1 游戲開始場景
在游戲的開始場景實(shí)現(xiàn)前,需要對輔助類Global進(jìn)行介紹,Global類主要是用在開始游戲的時(shí)候,初始化信息的函數(shù)。Global類中的成員變量提供給游戲很多的信息,比如喵星忍者獲得的鉆石數(shù)、金幣數(shù)等。Global類保存信息,讀取游戲中的所有信息的時(shí)候,只需要讀取xml文件就可以了,當(dāng)信息出現(xiàn)變化的時(shí)候,要對xml文件中的信息進(jìn)行修改。Global類中初始化數(shù)據(jù)信息是通過initGame函數(shù)實(shí)現(xiàn)的,先是對xml文件的存在性進(jìn)行判斷,如果得出是初次進(jìn)入游戲。那么需要初始化Global類中相關(guān)的變量和xml數(shù)據(jù),此外還要建立xml文件。假若xml文件存在,那么就將文件中的信息讀取出來,初始化Global類中和信息相關(guān)的變量。
CGScene()是CGScene的構(gòu)造函數(shù)。第一步是將場景里面的精靈對象建立起來,比如文字信息和人物頭像等。新建“游戲開始”的按鈕,同時(shí)設(shè)置當(dāng)電點(diǎn)擊該按鈕的時(shí)候,所觸發(fā)的動作,從而可以成功進(jìn)入到游戲的加載場景中。將ConBtn按鈕設(shè)置在屏幕的左上方,并且回調(diào)函數(shù)是onToggledSettings,該函數(shù)的目的是實(shí)現(xiàn)控件的隱藏或彈出。另外依次新建三個(gè)菜單切換按鈕,這幾個(gè)按鈕主要實(shí)現(xiàn)的功能是處理音效以及處理背景音樂、和介紹游戲等,他們的回調(diào)函數(shù)分別是onlnfoClicked、onMusicClicked、onGameClicked。在菜單面板中也增加上這幾個(gè)菜單切換按鈕。并且將標(biāo)志位進(jìn)行設(shè)置,如果是真,那么表明了彈出了3個(gè)控件,反之說明沒有彈出。下一步是完成了初始化Global類中的initGame函數(shù)。
3.2 游戲加載場景
游戲加載場景的實(shí)現(xiàn)具體總結(jié)如下:
①LoadingScene函數(shù)是LoadingScene的構(gòu)造函數(shù),其中的參數(shù)scenelD代表的是場景id,而參數(shù)maplndex代表的是地圖索引。第一步是對場景的id進(jìn)行判斷,接著進(jìn)入到游戲主場景或者世界地圖場景中。mapIndex主要是應(yīng)用在闖關(guān)的模式場景中,對mapIndex進(jìn)行判斷,從而選擇進(jìn)入到不同的關(guān)卡中。mapIndex的組成部分有3位數(shù)字,關(guān)卡id對應(yīng)著第1位上,章節(jié)id對應(yīng)著第3位,比如204代表的是第2章節(jié)中的第4個(gè)關(guān)卡。接著將精靈對象LoadSprite進(jìn)行初始化,將游戲加載動畫完成播放功能。
②void onEnterTransitionDidFinished(),這個(gè)函數(shù)屬于CCNode類的成員函數(shù),該方法的調(diào)用場合是切換完節(jié)點(diǎn)所在的場景后,這個(gè)方法調(diào)用是通過Cocos2d-X自動實(shí)現(xiàn)的,完全不用手動的方式。該方法,先要是否第一次進(jìn)入到游戲加載場景進(jìn)行判斷,假如是初次那么就要進(jìn)入到游戲的加載場景中,也就是完成異步的加載。
結(jié)語:掌握手機(jī)單機(jī)游戲簡單易操作,同時(shí)不用花費(fèi)很多的時(shí)間,直接將手機(jī)中的游戲應(yīng)用程序打開就能夠玩了,很多的用戶都對手游十分依賴,現(xiàn)今人們的生活幾乎與手機(jī)游戲形成了密不可分的關(guān)系,生活中處處可以看到人們無論是休息時(shí)間還是工作時(shí)間,都手里拿著手機(jī)打游戲。隨著這些年科技技術(shù)的發(fā)展,跑酷類的游戲逐漸取得了很大的進(jìn)步,并且其發(fā)展趨勢是一種井噴式。跑酷類的游戲上手比較容易,不需要太多的技能,同時(shí)還和精品游戲中所設(shè)計(jì)的特質(zhì)是相符合的,但是跑酷類的游戲要想達(dá)到如火純青的地步還是需要一些能力的,跑酷類的游戲受到了很多玩家們的青睞。
[1]馬克,卡夫雷拉,王小振,王恒.iPhone游戲編程實(shí)例: iPhone games projects:分享成功游戲開發(fā)人員的錦囊妙計(jì)[M].人民郵電出版社,2010
[2]徐松林,黃猛.Cocos2d-x手機(jī)游戲開發(fā):跨iOS、9ndroid和沃Phone平臺[M].人民郵電出版社,2012
[3]趙志榮,關(guān)東升.Cocos2d-x學(xué)習(xí)筆記,完全掌握Lua API與游戲項(xiàng)目開發(fā),the definitive guide to Lua API and game projects[M].清華大學(xué)出版社,2016
[4]Muzykov K. Learning iPhone game development with Cocos2D 3.0 harness the power of Cocos2D to create your own stunning and engaging games iOS[J]. 2014
[5]Zirkle P, Hogue J. iPhone Game Development: Developing 2D and 3D Games in Objective-C[J]. Bulletin of Geography. Socio-economic Series, 2012, 17(17):117-125