国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Cocos2d—x引擎的跨平臺(tái)跑酷類手游的設(shè)計(jì)與實(shí)現(xiàn)

2017-11-14 09:41:26沈晨謝璨
電腦知識(shí)與技術(shù) 2017年29期
關(guān)鍵詞:跨平臺(tái)

沈晨+謝璨

摘要:該文介紹了一款基于Cocos2d-x引擎的跑酷類手游的開發(fā)全過程。首先對(duì)Cocos2d-x技術(shù)的優(yōu)點(diǎn)以及三層架構(gòu)模式進(jìn)行簡要介紹,然后結(jié)合軟件工程的思想,對(duì)游戲的需求分析進(jìn)行了詳細(xì)描述,接著給出了游戲的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì),包括游戲體系結(jié)構(gòu)、功能模塊、類設(shè)計(jì)等。最后介紹了游戲中幾個(gè)關(guān)鍵功能的具體實(shí)現(xiàn),并且給出了部分游戲界面展示,同時(shí)對(duì)游戲進(jìn)行了系統(tǒng)的測試,各測試項(xiàng)均顯示正常。

關(guān)鍵詞:Cocos2d-x;游戲引擎;跨平臺(tái);跑酷

中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)29-0046-02

伴隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的深入,智能手機(jī)、平板電腦、智能手表等移動(dòng)智能設(shè)備在近幾年的爆發(fā)性地飛速發(fā)展,移動(dòng)終端手游市場成為了最受人們關(guān)注的市場之一。而在手游的開發(fā)過程中,開發(fā)者不得不面對(duì)一個(gè)移動(dòng)設(shè)備多平臺(tái)的現(xiàn)狀,使用不同語言在不同的平臺(tái)上做開發(fā)和維護(hù),必將使得開發(fā)成本不斷增加。因此,一個(gè)支持跨平臺(tái)的游戲引擎在廣大開發(fā)者和眾多游戲企業(yè)中必將備受歡迎。而Cocos2d-x[1]引擎擁有強(qiáng)大跨平臺(tái)能力,并繼承Cocos2d系列引擎的一貫特點(diǎn):靈活、高效、操作簡單,并且功能非常強(qiáng)大。Cocos2d-x只需要編寫一次代碼,就可以無縫的部署到包括IOS、Android、Windows、OS X在內(nèi)的大量主流系統(tǒng)平臺(tái)上[2]。在當(dāng)今終端移動(dòng)多樣化的時(shí)代,把游戲部署到多種平臺(tái)是游戲開發(fā)的大趨勢(shì),Cocos2d-x的跨平臺(tái)能力無疑幫助開發(fā)者節(jié)約了大量的時(shí)間和資本。本文利用Cocos2d-x引擎設(shè)計(jì)開發(fā)出了一款可支持多個(gè)移動(dòng)端的跑酷類游戲—《奔跑吧馬里奧》,在各項(xiàng)功能以及性能測試中,均顯示良好。

1 Cocos2d-x技術(shù)簡要分析

游戲引擎一般理解為已編寫好的游戲框架或者圖像應(yīng)用程序的核心組件。引擎為游戲開發(fā)者提供開發(fā)游戲所需的各種框架組件,其目的是為了讓游戲設(shè)計(jì)者能容易并且迅速的做出游戲而不用從零開始。Cocos2d-x使用C++開發(fā),基于MIT開源協(xié)議及OpenGL ES,支持Lua、Javascript 腳本語言和C++語言,支持插件和二次開發(fā)。Cocos2d-x引擎架構(gòu)分三個(gè)層次:最底層為操作系統(tǒng)層,該層包括引擎所支持的所有移動(dòng)操作系統(tǒng),如IOS、Android、Windows Phone、OSX、Windows、Ubuntu等等;中間層為引擎層,包括圖像模塊、聲音模塊、物理引擎模塊、腳本模塊;最上層為應(yīng)用游戲?qū)?,包括了開發(fā)者所構(gòu)建的整體游戲[3][4]。

2 游戲需求分析

《奔跑吧馬里奧》(RunningMario)是一個(gè)受90年代風(fēng)靡一時(shí)的霸王機(jī)上的經(jīng)典小游戲《超級(jí)馬里奧》及前兩年火爆全中國的跑酷類手游《天天酷跑》這兩款游戲啟發(fā)而產(chǎn)生的游戲作品。因而游戲作品以馬里奧世界的各種角色、敵人、道具等等主題元素為基礎(chǔ),以跑酷類游戲的快速、刺激、挑戰(zhàn)性、易上手、難精通等等游戲理念為核心。游戲總體功能需求如圖1所示。

1) 開始界面

l 游戲設(shè)置:點(diǎn)擊設(shè)置按鈕可以設(shè)置背景音樂和音效的開關(guān);

l 游戲相關(guān):點(diǎn)擊游戲相關(guān)按鈕可以查看游戲版本,開發(fā)者等的信息;

l 挑戰(zhàn)教程:點(diǎn)擊開始挑戰(zhàn)按鈕,第一次進(jìn)行挑戰(zhàn)時(shí)會(huì)顯示游戲教程;

l 每日簽到:點(diǎn)擊每日簽到按鈕,可進(jìn)行每日簽到,獲得金幣。

2) 選擇關(guān)卡模塊

l 動(dòng)態(tài)背景:界面背景由上向下循環(huán)滾動(dòng);

l 特效動(dòng)畫:選擇關(guān)卡后,馬里奧動(dòng)畫跳落到關(guān)卡標(biāo)志上;

l 滑動(dòng)選擇關(guān)卡:向左滑動(dòng)選擇關(guān)卡。

3) 游戲界面

l 暫停、繼續(xù)、重新游戲:在游戲過程中,可點(diǎn)擊暫停菜單按鈕,暫停菜單里面可以點(diǎn)擊繼續(xù)游戲、重新游戲、主菜單;

l 查看任務(wù)欄、能量條進(jìn)度:通過查看左上角的任務(wù)欄可知道地圖完成進(jìn)度,通過查看能量條進(jìn)度可知道主角特殊技能是否激活;

l 地圖顯示:當(dāng)玩家進(jìn)入選中的關(guān)卡后,自動(dòng)加載相應(yīng)地圖;

l 道具顯示:隨機(jī)產(chǎn)生道具放在地圖隨機(jī)位置;

l 闖關(guān)結(jié)算:當(dāng)玩家闖關(guān)成功或者失敗,都會(huì)有金幣的結(jié)算,可查看排行榜;

l 玩家控制角色:玩家可以點(diǎn)擊跳和攻擊按鍵控制角色進(jìn)行跳、二段跳、攻擊;

l 角色釋放技能:在能量條滿的前提下,激活角色特殊技能,點(diǎn)相應(yīng)技能按鈕釋放技能;

l 敵人攻擊:在地圖隨機(jī)位置產(chǎn)生的敵人進(jìn)行攻擊動(dòng)作。

3 游戲設(shè)計(jì)

3.1 游戲總體設(shè)計(jì)

游戲RunningMario的體系結(jié)構(gòu)主要包括:游戲業(yè)務(wù)部分,數(shù)據(jù)持久化部分[5]。

游戲業(yè)務(wù)部分細(xì)分為四個(gè)層次:

1) 游戲場景層:由開始場景、選擇關(guān)卡場景、游戲場景三大場景組成,該層封裝了地圖創(chuàng)建、主角創(chuàng)建、敵人創(chuàng)建,GUI創(chuàng)建,動(dòng)畫創(chuàng)建等邏輯;

2) 游戲精靈層:包括主角精靈,敵人基類精靈,各敵人精靈,每一個(gè)精靈都封裝了自身的邏輯,如主角精靈的跳動(dòng)、技能釋放等,各敵人攻擊、被攻擊等邏輯;

3) 游戲公共層:包含整個(gè)游戲的配置文件,整個(gè)游戲的公共函數(shù),如特效場景切換、生成素材文件存儲(chǔ)地址和動(dòng)態(tài)匹配生成動(dòng)畫等邏輯[6];

4) 游戲系統(tǒng)層:主要用于游戲業(yè)務(wù)邏輯與數(shù)據(jù)持久化邏輯之間交互完成玩家數(shù)據(jù)存儲(chǔ)邏輯和游戲管理器管理整個(gè)游戲。

數(shù)據(jù)持久化部分,通過獲取從游戲業(yè)務(wù)邏輯傳遞過來的玩家數(shù)據(jù),完成數(shù)據(jù)存儲(chǔ)操作。

3.2 游戲詳細(xì)設(shè)計(jì)

游戲RunningMario主體的類設(shè)計(jì)有公共類、場景類、主角類、敵人類、游戲管理類、數(shù)據(jù)存儲(chǔ)類這六大類[7],各個(gè)類的作用為:1)公共類:定義了整個(gè)游戲的公共配置文件及公共工具方法。2)場景類:定義了游戲包含的開始、選擇關(guān)卡和主游戲三大場景,其之下由多個(gè)層類組成,各個(gè)層類又定義了游戲各式各樣的GUI、地圖等的生成屬性和方法,如:簽到板、控制角色的按鍵、闖關(guān)結(jié)算板等。3)主角類:定義了馬里奧的存活狀態(tài)、各種動(dòng)作和釋放技能等屬性和方法。4)敵人類:定義了烏龜、蘑菇層、刺猬、飛彈四大敵人類及其攻擊動(dòng)作等屬性和方法。5)游戲管理類:定義了玩家的數(shù)據(jù)、數(shù)據(jù)修改、數(shù)據(jù)查詢等等的屬性和方法。6)數(shù)據(jù)存儲(chǔ)類:定義了游戲管理類中的玩家數(shù)據(jù)的增、刪、改、查的基本操作方法[8]。endprint

4 游戲?qū)崿F(xiàn)

由于Cocos2d-x支持跨平臺(tái),單個(gè)平臺(tái)上的工程開發(fā)完成后,可通過跨平臺(tái)環(huán)境移植游戲到Cocos2d-x所支持的不同平臺(tái)上運(yùn)行。開發(fā)過程中我們選擇了Win32工程作為開發(fā)基礎(chǔ)工程,待Win32工程完成后,進(jìn)行跨平臺(tái)移植游戲到Android平臺(tái)上運(yùn)行。需要用到的開發(fā)工具包括:Visual Studio 2015、Cocos3.7、Python2.7,跨平臺(tái)移植開發(fā)工具包括:JDK1.7、Eclipse、ADT17、NDK17、AndroidSDK。

在本游戲開發(fā)過程中使用了Action動(dòng)畫和幀動(dòng)畫,而Cocos2d-x引擎提供了這兩種動(dòng)畫的創(chuàng)建方式。其中Action動(dòng)畫的實(shí)現(xiàn)方式可以簡單描述為:為場景、層、精靈等基本元素添加一個(gè)動(dòng)作,而由元素來操作這個(gè)動(dòng)作完成Action動(dòng)畫。元素操作動(dòng)作時(shí),可以構(gòu)造一個(gè)動(dòng)作序列(Sequence),把幾個(gè)動(dòng)作組合起來放入序列中,統(tǒng)一由元素操作動(dòng)畫播放。而幀動(dòng)畫在很多游戲引擎中都有應(yīng)用。幀動(dòng)畫就是每一幀由一張圖片組成,當(dāng)播放每一幀時(shí)形成一個(gè)完整的動(dòng)畫。在本游戲中,馬里奧跳、飛、登場等動(dòng)畫和敵人攻擊和死亡等動(dòng)畫都是由幀動(dòng)畫來完成的。

在本游戲設(shè)計(jì)過程中,游戲地圖的滾動(dòng)與角色、角色間的碰撞檢測是最大的難點(diǎn),并對(duì)設(shè)計(jì)的成敗起決定性作用。本游戲地圖的創(chuàng)建方式使用了Cocos2d-x支持的開源地圖TileMap(瓦片地圖),重點(diǎn)是實(shí)現(xiàn)多段地圖的連續(xù)滾動(dòng)。地圖滾動(dòng)的實(shí)現(xiàn)思想如下:首先創(chuàng)建兩段地圖,前段已經(jīng)截入畫面,另一段準(zhǔn)備載入畫面。其次根據(jù)當(dāng)前屏幕中第一段地圖的X坐標(biāo)小于0為判斷條件構(gòu)造循環(huán)結(jié)構(gòu)來處理更新地圖。然后再次通過Schedule時(shí)間調(diào)度器去每幀調(diào)用第二步中的方法更新地圖。最后,移除被更新的地圖。

對(duì)于碰撞檢測,Cocos2d-x內(nèi)置的物理引擎攜帶了強(qiáng)大的物理檢測功能,其中也包含了碰撞檢測功能,本游戲采用了物理引擎中的碰撞盒子來進(jìn)行馬里奧與敵人間的碰撞檢測,具體過程為:首先給每個(gè)創(chuàng)建的角色綁定上一個(gè)碰撞盒子。其次,取消碰撞盒子在碰撞時(shí)產(chǎn)生力的效果。最后當(dāng)角色移動(dòng)時(shí),碰撞盒子也在移動(dòng),當(dāng)盒子間產(chǎn)生交點(diǎn),即說明角色間發(fā)生碰撞。

5 游戲測試

游戲RunningMario的測試方法采用黑盒測試[9],基本測試環(huán)境為Windows和Android平臺(tái),主要測試的項(xiàng)目為功能測試、性能測試。首先,進(jìn)入開始界面進(jìn)行每日簽到等相關(guān)操作;其次,進(jìn)入選擇關(guān)卡界面選擇關(guān)卡;再次,進(jìn)入游戲界面闖關(guān);最后,查看闖關(guān)結(jié)算和退出游戲。在各項(xiàng)功能測試及性能測試中,各項(xiàng)指標(biāo)均顯示正常,整個(gè)游戲過程運(yùn)行良好。游戲部分界面如圖2所示。

6 總結(jié)

本文給出使用C++語言,通過Windows系統(tǒng)上的Visual Studio工具,開發(fā)一款基于Cocos2d-x引擎的跑酷類手游的全過程。首先對(duì)Cocos2d-x技術(shù)做了簡要分析,然后結(jié)合軟件工程的思想,對(duì)所開發(fā)游戲做了需求分析。接著對(duì)游戲做了總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。最后在游戲的開發(fā)實(shí)現(xiàn)階段,介紹了關(guān)鍵功能是如何實(shí)現(xiàn)的,并且給出了部分游戲界面展示,同時(shí)對(duì)游戲進(jìn)行了系統(tǒng)的測試,各測試項(xiàng)均顯示正常。

參考文獻(xiàn):

[1] 滿碩泉. Cocos2d-x權(quán)威指南[M]. 北京:機(jī)械工業(yè)出版社, 2013:17-29.

[2] 陸奎安. 基于Cocos2d-x引擎的跨平臺(tái)游戲設(shè)計(jì)與實(shí)現(xiàn)[D].武漢: 華中科技大學(xué), 2014.

[3] 鐘迪龍. Cocos2d-x游戲開發(fā)之旅[M]. 北京:電子工業(yè)出版社, 2013:15-27.

[4] 徐磊, 范柳青. 淺析3D游戲引擎[J]. 電腦知識(shí)與技術(shù), 2011, 7(17):31-33.

[5] 林羅龍. 電腦游戲設(shè)計(jì)中的平衡策略[J]. 電腦知識(shí)與技術(shù), 2009, 5(21):19-21.

[6] 巴克, 蘭德. 游戲編程中的人工智能技術(shù)[M]. 北京:清華大學(xué)出版社, 2006:17-31.

[7] 姜旭. 手機(jī)游戲, 小屏幕上的大戰(zhàn)場[N]. 中國知識(shí)產(chǎn)權(quán)報(bào), 2012-06-08(11).

[8] Richard, Taylor, Mario Zechner. Beginning Android Games[M]. Apress, 2011:590-592.

[9] 海藩. 軟件工程導(dǎo)論[M]. 北京:清華大學(xué)出版社, 2007:152-179.endprint

猜你喜歡
跨平臺(tái)
跨層級(jí)網(wǎng)絡(luò)、跨架構(gòu)、跨平臺(tái)的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
一款游戲怎么掙到全平臺(tái)的錢?
潛力雙跨平臺(tái):進(jìn)階:誰將跨入下一個(gè)“十大”?
跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
基于C++語言的跨平臺(tái)軟件開發(fā)的設(shè)計(jì)
基于C++語言的跨平臺(tái)軟件開發(fā)
移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)
一種虛擬現(xiàn)實(shí)應(yīng)用程序跨平臺(tái)方法的研究
基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測與診斷系統(tǒng)
水城县| 微山县| SHOW| 琼结县| 抚宁县| 盖州市| 淮安市| 宜春市| 延寿县| 陈巴尔虎旗| 集安市| 汨罗市| 贵德县| 灌云县| 合江县| 邢台市| 腾冲县| 浑源县| 江西省| 邵阳县| 洮南市| 洛南县| 若羌县| 贵南县| 昭平县| 宝丰县| 苏州市| 油尖旺区| 博野县| 雷州市| 射阳县| 八宿县| 吉水县| 靖西县| 黔东| 许昌市| 门源| 商都县| 应城市| 大英县| 奉新县|