郭易峰
摘要:游戲基于Quick-Cocos2d-x引擎設(shè)計框架,以Sublime Text2為開發(fā)工具,采用MVC設(shè)計模式,使用Lua開發(fā)語言,實現(xiàn)了游戲的用戶管理、角色升級、裝備升級、技能升級、觸摸管理、數(shù)據(jù)管理等功能。
關(guān)鍵詞:Quick-Cocos2d-x引擎; MVC設(shè)計模式;手機游戲
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)36-0082-03
1 概述
手機游戲(以下簡稱手游)很好地繼承了電腦游戲的優(yōu)勢和賣點,并且在手機廣泛的應(yīng)用空間里發(fā)揮著自身的價值。強調(diào)用戶體驗的RPG手游,已經(jīng)在龐大的手機游戲強手之林中,鋒芒畢露。
IOS移動平臺的應(yīng)用和游戲開發(fā)也處于發(fā)展高潮期,手游成了電信增值業(yè)務(wù)中一項主要應(yīng)用,而且手機使用量正在飛快的遞增著。因此設(shè)計和開發(fā)一款好玩、高品質(zhì)的RGP的手游,可以讓更多人在閑暇之余放松自己,也鍛煉自己的實際動手開發(fā)能力,為將來能在手機相關(guān)應(yīng)用開發(fā)和其他軟件開發(fā)上有一個準備。本文主要完成以下內(nèi)容:
1)對游戲引擎以及開發(fā)語言作了細致的研究,對游戲中需要用的核心技術(shù)做了詳細的學(xué)習(xí)。確定了游戲以Quick-Cocos2-x引擎為基礎(chǔ),使用Model-View-Control設(shè)計游戲框架,使用Lua語言編寫游戲代碼。
2)對游戲的具體需求、數(shù)據(jù)庫設(shè)計作了具體、詳細的分析,并且完成了數(shù)據(jù)庫的建立及插入相應(yīng)數(shù)據(jù)。
3)編寫具體功能的代碼。
2 手機游戲技術(shù)
2.1 Quick-Cocos2d-x游戲引擎
本文主要研究基于Quick-Cocos2d-x引擎的RPG(角色扮演格斗類)游戲。Quick-Cocos2d-x引擎它是用Lua語言開發(fā)的,相對于Cocos2d-x引擎用C++開發(fā)來說要求比較低,并且Quick-Cocos2d-x引擎內(nèi)部將C++的接口轉(zhuǎn)化為Lua的接口之后更加的通俗易懂,開發(fā)者很容易上手。游戲使用Lua腳本語言開發(fā),Lua語言作為一種腳本語言,其輕量的特性給開發(fā)者帶來很多的便捷,在引擎內(nèi)部用Lua語言封裝類對象,留給外部一個接口,這樣既保護了數(shù)據(jù)又讓開發(fā)者可以很方便地使用這些接口,以提高開發(fā)效率。
2.2屏幕觸摸事件
屏幕觸摸事件,首先要設(shè)置屏幕能接收觸摸,即手指能夠觸摸屏幕并有響應(yīng),其次是創(chuàng)建觸摸事件監(jiān)聽器,加入事件調(diào)度器中并對其設(shè)置觸摸事件優(yōu)先級。事件監(jiān)聽器主要有觸摸事件,鍵盤響應(yīng)事件,加速記錄事件,鼠標響應(yīng)事件和自定義事件。這里游戲用到的是觸摸事件里的單點觸摸事件,特別的是,所有結(jié)點的觸摸優(yōu)先級是一樣的都為0,但是在上面的結(jié)點比在下面的結(jié)點要先處理觸摸事件,而且優(yōu)先級值越小,那么接受觸摸就越優(yōu)先。
2.3 MVC設(shè)計模式
MVC設(shè)計模式,即Model View Control 的縮寫,它的意思是指數(shù)據(jù)與呈現(xiàn)在玩家眼前的視圖之間的交互,Model是數(shù)據(jù),View是呈現(xiàn)在眼前的視圖,Control是聯(lián)系兩者之間的一個樞紐,它可以是一個對象,也可以是一個按鈕,圖片等等。使用同一個Model,它可以提供多個視圖的不同表現(xiàn)形式而無需創(chuàng)建新的Model,并且Model可以移植到新的平臺工作,它的另一個好處就是可以讓使用者在編寫游戲的過程中致力于View或者是Model的編寫而不用重復(fù)的寫新的Model,大大的提升了工作效率。
2.4碰撞檢測技術(shù)
碰撞檢測技術(shù)是引擎內(nèi)部封裝好的一個接口rectIntersectsRect()用來檢測兩個物體的getBoundingBox()是否重合,其內(nèi)部實現(xiàn)原理簡單的說就是獲取物體的邊界并判斷在一定的范圍內(nèi)是否重疊,如果重疊返回true,即發(fā)生了碰撞,否則返回false;實現(xiàn)精準的碰撞檢測可以準確的檢測到英雄與怪物的碰撞,提升畫面體驗感。
3 系統(tǒng)分析與設(shè)計
3.1系統(tǒng)需求分析
游戲可以多玩家注冊、登錄,玩家登錄之后可以根據(jù)自己的喜好選擇并創(chuàng)建角色開始游戲。玩家進入游戲后砍殺怪物所得的金幣和經(jīng)驗可以用來買裝備、提升角色等級、提升武器和技能等級。游戲即時連接數(shù)據(jù)庫,玩家所有的信息都會存儲在本地路徑備份。
3.2功能模塊設(shè)計
基于以上需求分析,游戲的功能模塊有:用戶管理、角色升級、技能升級、裝備升級、觸摸管理、數(shù)據(jù)管理。
用戶管理:用戶的注冊、登錄,不同玩家登錄后角色選擇以及信息的存儲管理。
數(shù)據(jù)管理:游戲的數(shù)據(jù)管理類,包括所有信息的存儲與讀取。
關(guān)卡功能:玩家開始游戲后,在主城界面點擊關(guān)卡,進入戰(zhàn)斗場景,通過殺怪可以積累經(jīng)驗和金幣,其中金幣可以用來提升玩家技能和裝備等級,經(jīng)驗提升角色等級。
游戲強化:游戲強化分為裝備強化、技能強化、角色等級強化,其中裝備和技能的強化使用的貨幣是玩家殺怪獲得的金幣,角色等級強化使用的是玩家的經(jīng)驗。
裝備功能:裝備功能里主要實現(xiàn)的是穿戴裝備和卸下裝備。
觸摸管理:游戲中手指與屏幕的觸摸事件被單獨拿出封裝成一個對象,用來管理和維護觸摸事件。
3.3數(shù)據(jù)庫設(shè)計
3.3.1 需求分析
游戲數(shù)據(jù)庫必須存儲玩家所有的信息,包括玩家基本信息以及角色信息。游戲數(shù)據(jù)庫與SQL不同,使用的是Lua語言中的表(table)實現(xiàn)數(shù)據(jù)庫的作用,即存儲數(shù)據(jù)信息。
玩家基本信息:賬號和密碼。
角色信息:玩家創(chuàng)建的角色信息,以及游戲開始后角色的信息,包括角色武器、經(jīng)驗、金幣等信息。
3.3.2 結(jié)構(gòu)設(shè)計
游戲數(shù)據(jù)庫是一個表(table)UserTable,表內(nèi)套有多個表分別是HEROTABLE、SKILLCOPY、EQUIPTABLE,分別存儲對應(yīng)的數(shù)據(jù)信息。游戲采用引擎封裝的Json類將存儲信息的表轉(zhuǎn)化成Json格式的文件,然后寫入本地路徑下。同樣的也是在該路徑下讀取文件,將文件轉(zhuǎn)化為Lua語言的表,獲取玩家的所有信息。
4 系統(tǒng)具體實現(xiàn)
4.1用戶管理功能實現(xiàn)
1)功能描述:可以實現(xiàn)玩家的注冊和登錄。
2)實現(xiàn)算法描述:注冊一個賬號基本信息的邏輯處理如下:
①填寫賬號和密碼以及確認密碼;
②從數(shù)據(jù)庫中查詢該用戶名字在數(shù)據(jù)庫中是否已經(jīng)注冊,若沒有注冊則進行第③步,若已經(jīng)注冊則在屏幕上方提示“該賬號已存在”;
③把玩家信息寫入數(shù)據(jù)庫中。
具體實現(xiàn)為:獲取文本框內(nèi)的內(nèi)容,然后將其加入表中,表以賬號名為key值,密碼和玩家的基本信息為value(后續(xù)會提到)值,并將表編碼json.encode(table)后寫入本地路徑下,完成信息的存儲,具體實現(xiàn)代碼如下。
4.2游戲數(shù)據(jù)管理功能實現(xiàn)
1)功能描述:數(shù)據(jù)管理功能是系統(tǒng)在實現(xiàn)各子功能系統(tǒng)所必須要實現(xiàn)的功能,用來記錄存儲玩家的數(shù)據(jù)信息。
2)實現(xiàn)算法描述:
①打開各子功能界面;
②實現(xiàn)各子功能,調(diào)用數(shù)據(jù)管理類的接口,將數(shù)據(jù)類PublicData中的用戶表PublicData.UserTable編碼成Json格式的文件;
③讀取游戲所在路徑或者目錄,將文件寫入到該路徑或者目錄下。
4.3關(guān)卡功能實現(xiàn)
1)功能描述:玩家開始游戲進入主城后,在主城上回顯示九個關(guān)卡,點擊關(guān)卡,進入戰(zhàn)斗場景,戰(zhàn)斗場景中玩家操控英雄砍殺怪物,積累經(jīng)驗和金幣。
2)實現(xiàn)算法描述:
①進入主城界面;
②點擊關(guān)卡,從數(shù)據(jù)庫中讀取玩家上次玩到第幾關(guān),玩家此次玩游戲只能進入上次記錄關(guān)卡之前的關(guān)卡,點擊上次記錄之后的關(guān)卡,在屏幕中間會有一個提示框提示信息未解鎖;
③進入戰(zhàn)斗場景,玩家操作英雄砍殺怪物,獲取經(jīng)驗和金幣。
4.4游戲強化功能實現(xiàn)
游戲強化功能主要分為裝備強化、技能強化、角色等級強化,強化功能類似,這里只介紹技能強化,其他的不再一一描述。
1)功能描述:玩家開始游戲之后進入戰(zhàn)斗場景砍殺怪物,積累經(jīng)驗和金幣,在強化界面點擊技能強化按鈕,實現(xiàn)強化功能。
2)實現(xiàn)算法描述:
①進入強化界面;
②點擊技能按鈕出現(xiàn)技能強化層,點擊技能對應(yīng)的按鈕,判斷玩家當前的金幣是否足夠本次強化所需的金幣,如果足夠則強化,否則在屏幕中間提示金幣不夠,前往副本戰(zhàn)斗;
③獲取當前最新表的信息,將其編碼寫入本地路徑下備份。
4.5裝備功能實現(xiàn)
1)功能描述:裝備功能主要實現(xiàn)的是裝備的穿戴與卸下:點擊裝備可相應(yīng)的穿上和卸下。
2)實現(xiàn)算法描述:
①進入裝備界面;
②點擊裝備界面右側(cè)的裝備列表,獲取裝備,在裝備界面的左側(cè)則顯示已經(jīng)穿上的裝備。
4.6觸摸管理
1)功能描述:避免代碼冗余,將所有屏幕觸摸事件封裝成一個接口,在需要的時候調(diào)用接口實現(xiàn)。
2)實現(xiàn)算法描述:
①獲取當前觸摸對象,作為參數(shù)傳入接口
②設(shè)置屏幕能接收手機觸發(fā)的單點事件,并加入事件調(diào)度器
③設(shè)置單點觸摸事件的回調(diào)函數(shù),并且事件調(diào)度器對傳入的當前對象設(shè)置優(yōu)先級
5 總結(jié)
本文通過查看以及對比了許多資料,對RPG游戲進行了了解和關(guān)鍵技術(shù)的學(xué)習(xí),敲定了游戲的設(shè)計框架,分析了游戲所要實現(xiàn)的功能需求,最終確定了游戲的設(shè)計方案,最后利用基于Quick-Cocos2d-x引擎,實現(xiàn)游戲的開發(fā)。
由于本人知識水平有限,對相關(guān)知識的理解與應(yīng)用存在一些欠缺和差錯,通過游戲的開發(fā)實現(xiàn)也為自己今后的學(xué)習(xí)帶來新的目標。
參考文獻:
[1] 李寧.用Cocos2d-x實現(xiàn)射擊類游戲:星際大戰(zhàn)[J].電腦編程技巧與維護,2014(13).
[2] 錢默.手機游戲設(shè)計趨勢探析[J].藝術(shù)科技,2013(8).
[3] 陳有英,黃振濤. 基于Cocos2D-X引擎的塔防游戲[J].軟件導(dǎo)刊,2014(8).
[4] 黃憲清,唐先紅.基于cocos2d-x的游戲設(shè)計與開發(fā)[J].科技風,2015(10).
[5] 馬超,馬佳琳. 基于Lua動態(tài)腳本語言Cocos2d-x應(yīng)用開發(fā)的技術(shù)研究[J].軟件工程師,2015(8).
[6] 喻炳,宣榮,徐青平.基于cocos2d-x的手機游戲設(shè)計與實現(xiàn)[J].信息技術(shù)與信息化,2015(8).
[7] 觸控科技與Imagination合作開發(fā)最新版Cocos2d-x游戲引擎[J].電子設(shè)計工程,2015(7).
[8] 黃憲清,唐先紅.基于cocos2d-x的游戲設(shè)計與開發(fā)[J].科技風,2015(10).