郭易峰
摘要:游戏基于Quick-Cocos2d-x引擎设计框架,以Sublime Text2为开发工具,采用MVC设计模式,使用Lua开发语言,实现了游戏的用户管理、角色升级、装备升级、技能升级、触摸管理、数据管理等功能。
关键词:Quick-Cocos2d-x引擎; MVC设计模式;手机游戏
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0082-03
1 概述
手机游戏(以下简称手游)很好地继承了电脑游戏的优势和卖点,并且在手机广泛的应用空间里发挥着自身的价值。强调用户体验的RPG手游,已经在庞大的手机游戏强手之林中,锋芒毕露。
IOS移动平台的应用和游戏开发也处于发展高潮期,手游成了电信增值业务中一项主要应用,而且手机使用量正在飞快的递增着。因此设计和开发一款好玩、高品质的RGP的手游,可以让更多人在闲暇之余放松自己,也锻炼自己的实际动手开发能力,为将来能在手机相关应用开发和其他软件开发上有一个准备。本文主要完成以下内容:
1)对游戏引擎以及开发语言作了细致的研究,对游戏中需要用的核心技术做了详细的学习。确定了游戏以Quick-Cocos2-x引擎为基础,使用Model-View-Control設计游戏框架,使用Lua语言编写游戏代码。
2)对游戏的具体需求、数据库设计作了具体、详细的分析,并且完成了数据库的建立及插入相应数据。
3)编写具体功能的代码。
2 手机游戏技术
2.1 Quick-Cocos2d-x游戏引擎
本文主要研究基于Quick-Cocos2d-x引擎的RPG(角色扮演格斗类)游戏。Quick-Cocos2d-x引擎它是用Lua语言开发的,相对于Cocos2d-x引擎用C++开发来说要求比较低,并且Quick-Cocos2d-x引擎内部将C++的接口转化为Lua的接口之后更加的通俗易懂,开发者很容易上手。游戏使用Lua脚本语言开发,Lua语言作为一种脚本语言,其轻量的特性给开发者带来很多的便捷,在引擎内部用Lua语言封装类对象,留给外部一个接口,这样既保护了数据又让开发者可以很方便地使用这些接口,以提高开发效率。
2.2屏幕触摸事件
屏幕触摸事件,首先要设置屏幕能接收触摸,即手指能够触摸屏幕并有响应,其次是创建触摸事件监听器,加入事件调度器中并对其设置触摸事件优先级。事件监听器主要有触摸事件,键盘响应事件,加速记录事件,鼠标响应事件和自定义事件。这里游戏用到的是触摸事件里的单点触摸事件,特别的是,所有结点的触摸优先级是一样的都为0,但是在上面的结点比在下面的结点要先处理触摸事件,而且优先级值越小,那么接受触摸就越优先。
2.3 MVC设计模式
MVC设计模式,即Model View Control 的缩写,它的意思是指数据与呈现在玩家眼前的视图之间的交互,Model是数据,View是呈现在眼前的视图,Control是联系两者之间的一个枢纽,它可以是一个对象,也可以是一个按钮,图片等等。使用同一个Model,它可以提供多个视图的不同表现形式而无需创建新的Model,并且Model可以移植到新的平台工作,它的另一个好处就是可以让使用者在编写游戏的过程中致力于View或者是Model的编写而不用重复的写新的Model,大大的提升了工作效率。
2.4碰撞检测技术
碰撞检测技术是引擎内部封装好的一个接口rectIntersectsRect()用来检测两个物体的getBoundingBox()是否重合,其内部实现原理简单的说就是获取物体的边界并判断在一定的范围内是否重叠,如果重叠返回true,即发生了碰撞,否则返回false;实现精准的碰撞检测可以准确的检测到英雄与怪物的碰撞,提升画面体验感。
3 系统分析与设计
3.1系统需求分析
游戏可以多玩家注册、登录,玩家登录之后可以根据自己的喜好选择并创建角色开始游戏。玩家进入游戏后砍杀怪物所得的金币和经验可以用来买装备、提升角色等级、提升武器和技能等级。游戏即时连接数据库,玩家所有的信息都会存储在本地路径备份。
3.2功能模块设计
基于以上需求分析,游戏的功能模块有:用户管理、角色升级、技能升级、装备升级、触摸管理、数据管理。
用户管理:用户的注册、登录,不同玩家登录后角色选择以及信息的存储管理。
数据管理:游戏的数据管理类,包括所有信息的存储与读取。
关卡功能:玩家开始游戏后,在主城界面点击关卡,进入战斗场景,通过杀怪可以积累经验和金币,其中金币可以用来提升玩家技能和装备等级,经验提升角色等级。
游戏强化:游戏强化分为装备强化、技能强化、角色等级强化,其中装备和技能的强化使用的货币是玩家杀怪获得的金币,角色等级强化使用的是玩家的经验。
装备功能:装备功能里主要实现的是穿戴装备和卸下装备。
触摸管理:游戏中手指与屏幕的触摸事件被单独拿出封装成一个对象,用来管理和维护触摸事件。
3.3数据库设计
3.3.1 需求分析
游戏数据库必须存储玩家所有的信息,包括玩家基本信息以及角色信息。游戏数据库与SQL不同,使用的是Lua语言中的表(table)实现数据库的作用,即存储数据信息。
玩家基本信息:账号和密码。
角色信息:玩家创建的角色信息,以及游戏开始后角色的信息,包括角色武器、经验、金币等信息。
3.3.2 结构设计
游戏数据库是一个表(table)UserTable,表内套有多个表分别是HEROTABLE、SKILLCOPY、EQUIPTABLE,分别存储对应的数据信息。游戏采用引擎封装的Json类将存储信息的表转化成Json格式的文件,然后写入本地路径下。同样的也是在该路径下读取文件,将文件转化为Lua语言的表,获取玩家的所有信息。
4 系统具体实现
4.1用户管理功能实现
1)功能描述:可以实现玩家的注册和登录。
2)实现算法描述:注册一个账号基本信息的逻辑处理如下:
①填写账号和密码以及确认密码;
②从数据库中查询该用户名字在数据库中是否已经注册,若没有注册则进行第③步,若已经注册则在屏幕上方提示“该账号已存在”;
③把玩家信息写入数据库中。
具体实现为:获取文本框内的内容,然后将其加入表中,表以账号名为key值,密码和玩家的基本信息为value(后续会提到)值,并将表编码json.encode(table)后写入本地路径下,完成信息的存储,具体实现代码如下。
4.2游戏数据管理功能实现
1)功能描述:数据管理功能是系统在实现各子功能系统所必须要实现的功能,用来记录存储玩家的数据信息。
2)实现算法描述:
①打开各子功能界面;
②實现各子功能,调用数据管理类的接口,将数据类PublicData中的用户表PublicData.UserTable编码成Json格式的文件;
③读取游戏所在路径或者目录,将文件写入到该路径或者目录下。
4.3关卡功能实现
1)功能描述:玩家开始游戏进入主城后,在主城上回显示九个关卡,点击关卡,进入战斗场景,战斗场景中玩家操控英雄砍杀怪物,积累经验和金币。
2)实现算法描述:
①进入主城界面;
②点击关卡,从数据库中读取玩家上次玩到第几关,玩家此次玩游戏只能进入上次记录关卡之前的关卡,点击上次记录之后的关卡,在屏幕中间会有一个提示框提示信息未解锁;
③进入战斗场景,玩家操作英雄砍杀怪物,获取经验和金币。
4.4游戏强化功能实现
游戏强化功能主要分为装备强化、技能强化、角色等级强化,强化功能类似,这里只介绍技能强化,其他的不再一一描述。
1)功能描述:玩家开始游戏之后进入战斗场景砍杀怪物,积累经验和金币,在强化界面点击技能强化按钮,实现强化功能。
2)实现算法描述:
①进入强化界面;
②点击技能按钮出现技能强化层,点击技能对应的按钮,判断玩家当前的金币是否足够本次强化所需的金币,如果足够则强化,否则在屏幕中间提示金币不够,前往副本战斗;
③获取当前最新表的信息,将其编码写入本地路径下备份。
4.5装备功能实现
1)功能描述:装备功能主要实现的是装备的穿戴与卸下:点击装备可相应的穿上和卸下。
2)实现算法描述:
①进入装备界面;
②点击装备界面右侧的装备列表,获取装备,在装备界面的左侧则显示已经穿上的装备。
4.6触摸管理
1)功能描述:避免代码冗余,将所有屏幕触摸事件封装成一个接口,在需要的时候调用接口实现。
2)实现算法描述:
①获取当前触摸对象,作为参数传入接口
②设置屏幕能接收手机触发的单点事件,并加入事件调度器
③设置单点触摸事件的回调函数,并且事件调度器对传入的当前对象设置优先级
5 总结
本文通过查看以及对比了许多资料,对RPG游戏进行了了解和关键技术的学习,敲定了游戏的设计框架,分析了游戏所要实现的功能需求,最终确定了游戏的设计方案,最后利用基于Quick-Cocos2d-x引擎,实现游戏的开发。
由于本人知识水平有限,对相关知识的理解与应用存在一些欠缺和差错,通过游戏的开发实现也为自己今后的学习带来新的目标。
参考文献:
[1] 李宁.用Cocos2d-x实现射击类游戏:星际大战[J].电脑编程技巧与维护,2014(13).
[2] 钱默.手机游戏设计趋势探析[J].艺术科技,2013(8).
[3] 陈有英,黄振涛. 基于Cocos2D-X引擎的塔防游戏[J].软件导刊,2014(8).
[4] 黄宪清,唐先红.基于cocos2d-x的游戏设计与开发[J].科技风,2015(10).
[5] 马超,马佳琳. 基于Lua动态脚本语言Cocos2d-x应用开发的技术研究[J].软件工程师,2015(8).
[6] 喻炳,宣荣,徐青平.基于cocos2d-x的手机游戏设计与实现[J].信息技术与信息化,2015(8).
[7] 触控科技与Imagination合作开发最新版Cocos2d-x游戏引擎[J].电子设计工程,2015(7).
[8] 黄宪清,唐先红.基于cocos2d-x的游戏设计与开发[J].科技风,2015(10).