999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談Cocos2d的塔防類游戲開發(fā)

2019-12-09 01:58:52范羚蔡琪瑋
大經(jīng)貿(mào) 2019年10期

范羚 蔡琪瑋

【摘 要】 本文完成一個(gè)基于開源性游戲框架Cocos2d的塔防類游戲設(shè)計(jì),闡述了游戲設(shè)計(jì)目的,總體規(guī)劃及游戲整體框架設(shè)計(jì),并從用戶界面設(shè)計(jì)和游戲業(yè)務(wù)邏輯設(shè)計(jì)兩方面詳細(xì)分析了設(shè)計(jì)過程,實(shí)現(xiàn)了塔防類游戲中所需各類管理器的編程,并最終完成游戲開發(fā)。

【關(guān)鍵詞】 Cocos2d 場景 管理器

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

1、設(shè)計(jì)目的和總體規(guī)劃

Cocos2d游戲引擎自帶多種游戲機(jī)制,其內(nèi)部封裝了大量動(dòng)作和場景方法函數(shù),這些方法對于游戲中使用的各種元素如精靈、場景等的表現(xiàn)形式有較好的實(shí)現(xiàn)效果,可以完成游戲元素的展示、碰撞、動(dòng)作和音樂音效等,在玩法和畫面上,帶給游戲使用者不一樣的體驗(yàn)。常用的游戲設(shè)計(jì)方法有:放置方法Place、隱藏方法Hide、顯示方法Show、移動(dòng)方法MoveTo、跳躍方法JumpTo、放大方法ScaleTo、旋轉(zhuǎn)方法RotateBy、閃爍方法Blink、速度變化和組合動(dòng)作等。

Z`在此次游戲機(jī)制設(shè)計(jì)上,采用鼠標(biāo)進(jìn)行操作,完成游戲進(jìn)程中玩家所需的各種功能,比如:建塔、升級、銷毀、控制游戲速度、游戲菜單設(shè)計(jì)等;在塔種類的設(shè)計(jì)上,使用盡可能豐富的塔種類,并使不同的塔有不同的素材和屬性,包括建造開銷、血量、攻擊速度和傷害等;不同的敵方怪物也有不同的素材和屬性;在子彈的構(gòu)造上,將子彈設(shè)計(jì)為一個(gè)單獨(dú)的實(shí)體類,具有自己的移動(dòng)和傷害等方法,構(gòu)造方式相對自由。

2、系統(tǒng)框架設(shè)計(jì)

本游戲基本系統(tǒng)框架采用Cocos2d進(jìn)行設(shè)計(jì)。Cocos2d使用場景樹結(jié)構(gòu)來管理游戲?qū)ο螅瑢⒂螒騽澐譃椴煌膱鼍癈CScene,再將場景劃分為不同的層CCLayer。一層可以有任何可見的游戲?qū)ο螅螒驅(qū)ο罂蓤?zhí)行Action來修改其屬性。在游戲進(jìn)行的每個(gè)時(shí)刻,都存在獨(dú)立運(yùn)行的場景,并且通過在不同場景間切換來完成游戲進(jìn)程。Cocos2d還使用引用計(jì)數(shù)來管理內(nèi)存,本次使用的類都派生自具有引用計(jì)數(shù)機(jī)制的CCObject。其中CCApplication負(fù)責(zé)游戲平臺的初始化和消息處理等。CCDirector用來管理場景,切換場景,游戲暫停,初始化等。CCNode是游戲中最重要的節(jié)點(diǎn)類對象,任何可見或不可見的游戲邏輯對象都是一個(gè)節(jié)點(diǎn)。CCAction是動(dòng)作類,完成修改CCNode相關(guān)屬性,如位置,旋轉(zhuǎn),縮放等。CCScene是場景類,可獨(dú)立運(yùn)行,包括可見的怪物,地形和不可見的邏輯腳本等。CCLayer是場景中的圖層類,游戲場景包含多個(gè)層,如HUD圖層,游戲?qū)ο髨D層,背景圖層,天空圖層等。圖層是可以繪制的區(qū)域,可以添加UI,Sprite和其他對象。此外,該層還接收輸入消息,該消息可以處理圖層類中的輸入消息,與CCScene一樣,CCLayer是CCNode的子類,CCAction也可用于修改其屬性。

二、游戲功能設(shè)計(jì)

1、用戶界面邏輯設(shè)計(jì)

本次在設(shè)計(jì)塔防類游戲用戶界面時(shí),使用用戶界面與業(yè)務(wù)邏輯分離的思想。用戶界面模塊用來接收用戶輸入及呈現(xiàn)數(shù)據(jù),包括有可以實(shí)現(xiàn)游戲功能導(dǎo)航的主菜單界面,實(shí)現(xiàn)關(guān)卡地圖的展示和關(guān)卡選擇的關(guān)卡界面,用來展示怪物的怪物圖鑒界面,及游戲主界面。業(yè)務(wù)邏輯模塊功能是根據(jù)用戶需求處理數(shù)據(jù)。

2、游戲業(yè)務(wù)邏輯設(shè)計(jì)

一般游戲引擎在對業(yè)務(wù)邏輯的處理上是使用一個(gè)死循環(huán),當(dāng)游戲運(yùn)行時(shí),根據(jù)游戲?qū)崟r(shí)實(shí)現(xiàn)的情況,進(jìn)行實(shí)時(shí)顯示,不斷刷新界面,使用update_game()和display_game()函數(shù)進(jìn)行處理。玩家在游戲中所看到的界面,聽到的音樂,以及一些輸入和觸動(dòng)等,在游戲邏輯實(shí)現(xiàn)上就是這樣的一個(gè)循環(huán),游戲運(yùn)行過程中,該循環(huán)一直在進(jìn)行,并同步處理玩家事件。所有游戲邏輯都在這個(gè)主循環(huán)中實(shí)現(xiàn),使用Cocos2d游戲引擎中Main.cpp的CCApplication:: sharedApplication ()->run()進(jìn)入游戲循環(huán)。Windows系統(tǒng)屬于消息驅(qū)動(dòng),這個(gè)死循環(huán)就是用來處理windows消息循環(huán),并在其中處理FPS邏輯,消息分發(fā)等。本文使用CCDirector::sharedDirector()->mainLoop()作為Cocos2d的主循環(huán),由導(dǎo)演CCDirector負(fù)責(zé)維護(hù)。從此處進(jìn)入Cocos2d,一旦進(jìn)入主循環(huán),程序就開始執(zhí)行游戲邏輯。

本次設(shè)計(jì)的游戲邏輯主要有:游戲菜單邏輯,游戲界面邏輯,游戲數(shù)據(jù)管理器,防御塔管理器,怪物管理器,子彈管理器和卡片管理器(功能管理)。

在游戲菜單邏輯中,一般游戲主要有2條功能分支,單機(jī)模式和對戰(zhàn)模式,且單機(jī)模式和對戰(zhàn)模式最終都指向游戲界面,本文主要實(shí)現(xiàn)單機(jī)模式。游戲界面是公共模塊,提取公共模塊,只需要進(jìn)行數(shù)據(jù)和類型狀態(tài)的區(qū)分,就能很好的進(jìn)行代碼上的規(guī)劃。

游戲界面流程從加載游戲數(shù)據(jù)開始,接下來繪制UI界面,創(chuàng)建各類管理器,進(jìn)入游戲循環(huán),直至用戶結(jié)束游戲。其中,在游戲界面邏輯中最重要的是游戲循環(huán)模塊,游戲引擎已經(jīng)做好了封裝,開發(fā)者要關(guān)心的是游戲數(shù)據(jù)管理、UI界面、各類實(shí)體管理器(防御塔管理器、敵人管理器等)。

游戲邏輯包括游戲循環(huán)、消息機(jī)制和定時(shí)器,各類實(shí)體對象邏輯都離不開這三個(gè)部分。本文設(shè)計(jì)的塔防類游戲的各類實(shí)體管理器包括有:用來管理游戲全局?jǐn)?shù)據(jù)的游戲數(shù)據(jù)管理器,通過定時(shí)器,獲取子彈接口,發(fā)射子彈,及對塔防進(jìn)行升級、出售等功能性操作的防御塔管理器,對游戲數(shù)據(jù)和怪物進(jìn)行管理的怪物管理器,提供獲取子彈接口,管理子彈的容器的子彈管理器,提供防御塔功能性接口,對防御塔進(jìn)行功能性管理的卡片管理器。

三、具體實(shí)現(xiàn)過程

1、防御塔管理器

防御塔類管理器具有成員屬性:攻擊力和攻速;成員方法包括尋找攻擊目標(biāo)和攻擊等。防御塔也有對應(yīng)的防御塔管理器,負(fù)責(zé)存儲管理已建造的防御塔。在防御塔類中,定時(shí)器時(shí)間間隔就是攻擊速度,定時(shí)調(diào)用攻擊敵人的一系列方法。

2、怪物管理器

怪物的業(yè)務(wù)邏輯封裝在怪物管理器中,設(shè)計(jì)時(shí),需先創(chuàng)建怪物列表,再創(chuàng)建定時(shí)器,在游戲場景運(yùn)行過程中,通過定時(shí)器每隔一定時(shí)間,產(chǎn)生新的怪物,產(chǎn)生的怪物屬性需從.json文件中讀取并創(chuàng)建,包括怪物ID,血量,移動(dòng)速度,攻擊力,素材路徑等。

3、卡片管理器(功能管理)

防御塔對應(yīng)的功能操作在卡片管理器,點(diǎn)擊防御塔,會(huì)調(diào)用防御塔按鈕回調(diào)函數(shù),彈出/隱藏卡片管理器界面,在此界面上實(shí)現(xiàn)對防御塔的升級和出售等操作。

4、資源管理器

資源管理器負(fù)責(zé)存儲和管理游戲所需的游戲信息,在游戲場景創(chuàng)建時(shí),讀取對應(yīng)的.json 文件。資源管理器是一個(gè)單例類,能在任何場景中調(diào)用,方便游戲信息的處理。資源管理器應(yīng)包括游戲地圖信息,敵方怪物信息和防御塔信息等屬性,且具有相應(yīng)的成員方法:獲取地圖信息,獲取怪物信息,獲取防御塔信息等。

5、游戲場景邏輯

創(chuàng)建游戲場景后,由導(dǎo)演負(fù)責(zé)執(zhí)行場景,執(zhí)行中場景的定時(shí)器會(huì)生效,定時(shí)器定時(shí)回調(diào)場景update( )函數(shù),并且自定義定時(shí)器將調(diào)用對象及各管理器的自定義回調(diào)函數(shù);游戲的邏輯,包括勝利和失敗條件也是在場景的update函數(shù)中進(jìn)行判定:當(dāng)擊敗怪物數(shù)量達(dá)到該地圖關(guān)卡指定最大數(shù)量時(shí),游戲獲勝;當(dāng)目標(biāo)血量小于或等于0時(shí),游戲失敗。

6、游戲運(yùn)行結(jié)果

游戲菜單是游戲的第一個(gè)界面,該界面將引導(dǎo)玩家選擇游戲模式及功能,有單機(jī)模式、對戰(zhàn)模式等。在單機(jī)模式下,玩家在游戲主界面進(jìn)行選擇關(guān)卡,游戲可提供選擇豐富的游戲主題和關(guān)卡。在游戲具體場景中,玩家可以通過消耗金幣,建造防御塔,以防御怪物入侵,游戲中使用的地圖則是采用TiledMap格子地圖構(gòu)建。

在本次游戲開發(fā)過程中,較為常見的bug是資源加載問題,程序運(yùn)行過程中若加載不到對應(yīng)的資源,一般會(huì)導(dǎo)致程序的崩潰,若調(diào)用到了空資源,系統(tǒng)就會(huì)產(chǎn)生崩潰。出現(xiàn)這類問題時(shí),應(yīng)通過核對對應(yīng)模塊的資源加載代碼和對應(yīng)路徑資源來解決。另一個(gè)較為棘手的問題是內(nèi)存問題,一般這種問題是由內(nèi)存管理不當(dāng)引起的。Cocos2d有自己的資源管理系統(tǒng),通過引用計(jì)數(shù)的機(jī)制,自動(dòng)管理并釋放內(nèi)存資源。在手動(dòng)管理資源中,應(yīng)考慮系統(tǒng)的自動(dòng)內(nèi)存管理機(jī)制,加入對應(yīng)的功能性代碼,以避免和自動(dòng)內(nèi)存管理機(jī)制起沖突,引發(fā)意料之外的bug。針對這種情況,最好是盡量在編碼過程中避免出現(xiàn)邏輯上漏洞,加強(qiáng)對內(nèi)存的合理管理。

四、小結(jié)

本文實(shí)現(xiàn)了基于Cocos2d的塔防類游戲設(shè)計(jì),主要介紹了系統(tǒng)框架的設(shè)計(jì)以及游戲功能設(shè)計(jì)。在系統(tǒng)框架設(shè)計(jì)中,詳細(xì)說明了設(shè)計(jì)的總體思路,并以此為基礎(chǔ)框架,完成游戲功能上的設(shè)計(jì),主要有:用戶界面與邏輯設(shè)計(jì),各類管理器設(shè)計(jì)。基于Cocos2d游戲引擎的游戲業(yè)務(wù)邏輯設(shè)計(jì)能比較直觀地展現(xiàn)Cocos2d游戲引擎在游戲開發(fā)中的應(yīng)用,為其他基于Cocos2d的塔防類游戲設(shè)計(jì)提供參考。

【參考文獻(xiàn)】

[1] [美]Stephen Prata. C++ Primer Plus[M].張海龍,袁國忠譯 北京:人民郵電出版社,2015:340-377.

[2] 張巖林. 基于Cocos2D-x的卡牌類游戲框架的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林大學(xué),2017.

[3] 朱京晶. 基于Cocos2d-x引擎的游戲的尋路算法研究與實(shí)現(xiàn)[D].北京交通大學(xué),2017.

作者簡介:范羚(1977-),女,廈門工學(xué)院電子信息工程系,講師,,研究方向:信號與信息處理。

主站蜘蛛池模板: 亚洲一区色| 一级毛片在线免费看| 日本少妇又色又爽又高潮| 国产亚洲精品97AA片在线播放| 蜜臀av性久久久久蜜臀aⅴ麻豆| 色国产视频| 欧美综合在线观看| 久久久久免费看成人影片| 美女国产在线| 国产91成人| 亚洲精品国产成人7777| 91在线精品麻豆欧美在线| www欧美在线观看| 欧美亚洲国产视频| 久久99热66这里只有精品一| 99久久精品国产麻豆婷婷| 国产不卡在线看| 亚洲国产精品一区二区第一页免| 国产区人妖精品人妖精品视频| 国产日韩久久久久无码精品| 女人18毛片久久| 欧美天堂在线| 青草视频久久| 色噜噜综合网| 一级毛片在线播放免费观看| 欧美成人第一页| 国产国模一区二区三区四区| 亚洲精品欧美重口| 国内精品视频区在线2021| 国产亚洲精久久久久久无码AV| 久草中文网| 中文字幕人妻av一区二区| 人妻一本久道久久综合久久鬼色| 亚洲男人在线天堂| 米奇精品一区二区三区| 国产欧美日韩资源在线观看| 亚洲精品高清视频| 女人一级毛片| 一本久道热中字伊人| 国产亚洲视频中文字幕视频| 亚洲国产中文欧美在线人成大黄瓜 | 亚洲无码不卡网| 免费无遮挡AV| 人妻精品久久久无码区色视| 2024av在线无码中文最新| 91po国产在线精品免费观看| 一级毛片免费高清视频| 极品国产一区二区三区| 亚洲精品无码抽插日韩| 日韩高清无码免费| 人妻无码中文字幕第一区| 制服丝袜国产精品| 多人乱p欧美在线观看| 国产一在线观看| AV在线天堂进入| 国产成人无码AV在线播放动漫| 久久久久免费精品国产| 亚洲日韩精品无码专区97| 狠狠做深爱婷婷综合一区| v天堂中文在线| 亚洲综合经典在线一区二区| 国产精品浪潮Av| 57pao国产成视频免费播放| 欧美午夜小视频| 成年网址网站在线观看| 国产成人综合日韩精品无码首页 | 青青操视频在线| 国产精品尤物铁牛tv| 国产亚洲高清在线精品99| 99视频只有精品| 欧洲日本亚洲中文字幕| 国产香蕉97碰碰视频VA碰碰看| 青青草a国产免费观看| 欧美性天天| 伊人大杳蕉中文无码| 亚洲第一中文字幕| 国产欧美高清| 久久国产黑丝袜视频| 久久久久人妻精品一区三寸蜜桃| 亚洲乱伦视频| 激情午夜婷婷| 午夜免费小视频|