胡祝华 左江洋 赵瑶池
【摘要】为了实现一个消除类手机游戏,以Cocos2D-x作为游戏引擎,通过Lua脚本语言调用Cocos2D-x引擎接口,利用table结构及重写的touch函数来实现游戏的核心模块。测试结果表明:游戏运行流畅,响应用户触碰及时准确,达到了设计目标。
【关键词】Cocos2D-x;Lua;消除游戏
1.引言
近年来基于Android的游戏软件层出不穷,例如耳熟能详的捕鱼达人2,龙之力量以及三国群殴传等。发布在全球各大应用商城,累计下载量超过5亿次。这些游戏的普遍共性是:操作简单,娱乐性强[1]。
在基于Android的2D游戏开发中,Cocos2D-x是移动平台中使用最普遍、功能非常强大的游戏引擎[2]。在国内基于Cocos2D-x引擎开发的游戏有很多[3,4],也有基于Cocos2D-x的二次开发工作[5]。本文基于Cocos2D-x引擎利用Lua脚本语言[6]设计和实现了一个消除类游戏,游戏中将800*480的屏幕分为了60个80*80的小方格子。每个格子都有一只会跳动的地鼠并且身上会标有1-8中的任意数字,玩家可以通过记忆地鼠身上的数字来依次的将地鼠消除。通过测试,该游戏具有简易、好玩、消除动作执行准确及时等特点。
2.Cocos2D-x框架及Lua语言
Cocos2D-x引擎十分强大,里面集成了很多2D手机游戏需要的接口。例如渲染框架,动作功能,用户交互,内存管理机制等等,通过这些接口可以实现场景的跳转,精灵的控制和特效的添加等,这为游戏开发提供了十分便利的条件,Cocos2D-x引擎封装模块及调用关系[7]如图1所示。Cocos2D-x引擎中有四个重要的角色:导演,场景,层和精灵。这些角色完成自己的工作从而展现给玩家完美的游戏体验。Cocos2D-x引擎里面的运行机制和拍电影有很大的类似之处。导演统领全局,控制了多个场景的切换,每个场景上面可能又会有多个层,而演员(也就是精灵)工作在层上面,展现出自己的动作。这样的流程会使得设计井然有序、分工明确。
图1 引擎封装模块及调用关系
随着Lua脚本语言的发展,Lua在游戏开发中展现出了自己鲜明的特点,比如语法简单、易于移植和易于使用等。在Cocos2D-x游戏开发中通过Lua调用引擎中的c++接口函数,二者结合来开发手机游戏即可以大大缩短开发周期,也可以达到预期的游戏开发效果。
3.消除小游戏设计
3.1 流程设计
利用Cocos2D-x的框架,在一个场景中利用Lua写的逻辑实现地鼠的消除。当用户进入游戏中时,系统会创建场景和层,加载地鼠精灵,然后便是等待用户实施touch事件,游戏操作流程图2所示。
当用户进入游戏,呈现在用户眼前的就是标有数字的能够跳动的八只地鼠,当用户点击标有数字1的地鼠后,表明用户已经将8只地鼠的位置记住,此时,将地鼠精灵身上的数字去掉。然后,当用户每次触摸屏幕时候,touch函数就要获取手指的坐标,通过这个坐标来做出判断用户是否点击到了地鼠精灵上,并且点击的顺序是否正确。最终给出地鼠精灵是否被消除的响应。
图2 游戏流程图
3.2 关键技术细节
(1)地鼠消除流程
在这个游戏中,用Lua语言基于Cocos2D-x引擎实现了游戏的整个逻辑,其中导演、场景、层和精灵依次被创建出来。这里所用的touch并没有调用引擎自身提供的Touch事件,而是重新开发了一个函数。其中除了业务逻辑外,也运用了Lua里面的table来存储数据。
(2)地鼠消除算法
游戏中精灵的消除步骤如下:
1)当用户进行消除操作时,获得用户此时点击的坐标,用这个坐标和精灵的坐标进行比较,精灵的坐标存储在table表中。
2)将屏幕分为60块,用来随机的放置8个地鼠精灵,当精灵全部显示出来后,用table纪录下精灵的x,y坐标。当用户点击了第一只地鼠后,其余地鼠身上的数字被覆盖掉。
3)用户凭记忆消除其他地鼠。当用坐标确认了用户点中地鼠精灵后,还需要做出一个点击顺序的判断,即是否是按着1至8的顺序依次点击的地鼠,如若不满足这个条件,地鼠当然也不能够被消除。也就是说在touch里面设定了两个条件,首先,用户需要点击到地鼠精灵。其次,用户要按照正确的顺序点击才能够消除地鼠,二者缺一不可。当这两个条件均已达到时,我们先将地鼠从table表中删除掉,再将这个精灵从当前层中去掉,如此,则达到了消除的效果。
(3)游戏界面设计
Cocos2D-x以OpenglES为图形库,因此使用OpenglES坐标系。GL坐标系原点在屏幕左下角,x轴向右,y轴向上。本游戏将屏幕设置为800*480大小。(0,0)坐标为左下角,设置每个单元格大小为(80*80),用Lua中的table结构来保存位置信息。屏幕分格如图3所示。
图3 游戏屏幕分格及坐标示意图
4.开发环境与配置
软,硬件环境及必要的设置包括以下几点:
(1)硬件环境:PC(Inter(R),Core(TM)i5
-3230M CPU @2.60GHZ,2.56GB内存),Andorid手机。
(2)软件环境:操作系统选用Win7 64位,开发平台为Visio studio 2013,android 4.2 SDK,Cocos2D-x 3.2,python 2.7。
(3)开发环境配置:在Cocos2D-x 3.2的版本中取消了Visio studio 2013模板创建项目的方法,而是使用python脚本创建项目,因此需要在计算机中配置python环境。
5.游戏测试效果
游戏开发项目打包成apk文件,安装到真机上测试效果如图4、图5、图6、图7所示。
图4 游戏开始状态 图5 游戏进行中状态a
图6 游戏进行中状态b 图7 游戏结束状态
6.结语
本文通过Cocos2D-x与Lua结合设计并开发的消除小游戏,展现了Android 2D游戏开发的基本流程,详细介绍了其中的关键技术。这类记忆消除游戏对于开发青少年智力,增添生活乐趣都很有意义,本游戏实现了主要的消除功能。
参考文献
[1]夏志海.基于Cocos2d-x的手机游戏坦克大战的设计与实现[D].哈尔滨工业大学,2013.
[2]刘剑卓.cocos2d-x游戏开发技术精解[M].2013.
基金项目:海南省教育厅基金资助项目(项目编号:Hjkj2013-14、HNKY2014-18)。
作者简介:胡祝华(1979—),男,湖南桃江人,讲师,研究方向:智能嵌入式技术、人机交互技术。
通讯作者:赵瑶池,女,讲师。