吴伟信
摘要:随着智能手机的普及,手机益智游戏受到了人们的广泛欢迎。Flash游戏具备视觉体验好、交互性强以及流式传输等优势,基于Flash技术设计手机跳跳龙益智游戏,可满足人们在碎片时间内的娱乐与益智需求。在分析游戏设计思想与主要元件设计后,围绕需要解决的主要问题,介绍了游戏场景循环移动、小龙上下跳跃动作、游戏关卡元素反复出现以及小龙与关卡元素碰撞检测等功能的详细技术实现过程。实际测试结果表明,该游戏操作简单、运行稳定,用户体验佳。最后总结了该益智游戏的特点以及今后需要进一步完善的方向。
关键词:Flash技术;手机游戏;益智游戏;跳跳龙;碰撞检测
DOI:10.11907/rjdk.191310
中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2019)012-0142-04
0引言
手机益智游戏是信息时代的一种新型移动学习方式,其将学习者喜欢的游戏竞争模式引入知识学习中,以趣味性的方式将知识技能传授给用户。手机益智游戏具有娱乐性强、占用空间小、文字交互少和易于移植等特点。益智小游戏以单机版为主,适合玩家在碎片化时间里进行娱乐,而且不会产生依赖性,玩家在益智游戏中获得的愉悦感来自于突破益智关卡时的成就感。目前比较经典的益智小游戏有“扫雷”、“推箱子”,以及“拼图”类、“迷宫”类、“棋牌”类游戏等。
国外对益智游戏的研究较早,已经形成了从基础理论到设计开发模型及评价等丰富的研究成果。例如美国的Game2Train公司、加拿大的Enlight Software公司、法国的Cryo Interactive Entertainment公司以及日韩等国家的一些专业游戏公司都先后推出了众多深受欢迎的益智游戏。国内对益智游戏的研究起步较晚,但近几年在教育游戏理论基础、益智游戏软件设计方面也取得了一些研究成果,并在实践方面推出了不少Flash益智小游戏,受到青少年喜爱,例如“开心消消乐”、“密室逃脱”、“一起来找茬”、“梦游先生”、“愤怒的小鸟”等。
随着社会生活节奏的不断加快,人们的工作学习压力越来越大,利用碎片时间玩益智游戏已成为现代人缓解压力的一种方式。Flash小游戏以其采用矢量图形画面、文件体积小的优势得到了益智游戏爱好者的青睐。基于Flash的手机游戏在动画处理、uI设计以及交互技术等方面具有较好的用户体验,且开发效率较高。益智游戏的目标通常只有一个,即通过游戏形式锻炼人的感官,使用户通过游戏提高某方面能力。目前国内很多益智游戏设计时在教育与游戏的融合方面做得还不够,让用户感觉只是在教育软件中加入了游戏模块。所以如何更好地发挥寓教于乐的思想设计益智游戏,利用游戏的娱乐性刺激用户学习兴趣,是值得不断实践探索的课题。跳跳龙手机益智游戏让玩家在遭遇关卡角色博弈与益智题挑战时获得感官刺激,从而使玩家放松心情,以愉悦的心态适应接下来的工作和学习。游戏操作较为简单,目标是使用户在体验小龙跳跃行进闯关的游戏乐趣中提升算数快速运算能力。
1游戏设计
1.1设计思想
用户进人游戏后需要让游戏的主角色小龙避开所有障碍物,游戏过程中会出现带益智题标签的水果、宝盒、蝴蝶和星星,游戏者用鼠标滑过前进中的小龙时,小龙会跳起来,游戏者通过控制小龙跳跃,获取分值和能量。在游戏开始时,有2只小龙在行进,游戏者将鼠标滑过小龙,控制其向上跳跃;小龙行进过程中会不断消耗能量(健康值),且行进途中会出现石头障碍物,小龙如果没有避开障碍物,健康值将快速递减;如果有2只以上小龙向上跳跃碰到飞过的水果,将增加健康值。游戏者增加分值主要通过碰撞飞过的宝盒和星星,任何一只小龙跳跃时碰到附有益智题正确答案的星星即可增加分值,而游戏者要通过碰撞宝盒得分,需要有2只小龙向上跳跃碰到飞过的附有益智题正确答案的宝盒,才能增加分值,随着分值增加到一定程度,会增加小龙数量。相反,如果游戏者在控制小龙跳跃时碰到飞过的附有错误答案的蝴蝶,将减少分值;最后,当小龙穿越所有障碍或健康值耗尽时,游戏结束。游戏运行流程如图l所示。
1.2主要元件设计
基于Flash的跳跳龙益智游戏素材准备涉及元件设计与场景设计。元件设计中小龙的角色与动作设计是核心,角色将Q版龙头像与卡通儿童身相结合进行设计,其在游戏中主要是侧面行进的動态形象,利用影片元件支持角色行进中的眨眼、摆臂等动作;同时,动态的小龙角色在闯关时,遭遇分值、健康状态条增减时会出现不同表情,还需在角色影片元件中嵌人脚本实现不同表情的变换。为了提高游戏运行效率,游戏只采用一个场景,游戏中水果、宝盒、蝴蝶和星星等元素也只设计一款形象;通过游戏场景的循环移动实现小龙的行进效果,水果、宝盒、蝴蝶和星星等元素以反复飘移形式出现、消失。
1.3需要解决的主要问题
在深入研究Flash技术在移动终端的应用后,结合手机益智游戏特点,手机跳跳龙益智游戏设计需要解决的核心问题包括:
(1)需要对游戏中的对象实例进行碰撞检测,在控制小龙跳跃过程中,小龙元件实例与水果、宝盒、星星和蝴蝶等元件实例之间可能发生碰撞,检测实例之间的碰撞是游戏设计的关键。
(2)通过鼠标悬停事件进行小龙上下跳跃控制,但小龙前进是自动运行,因此需要对运行状态进行智能判断;小龙跳跃的运行算法体现在Y方向上的加速度控制与跳跃范围控制。
(3)实时进行游戏者的分值呈现与小龙健康状态条显示,实现对游戏者的评价。在游戏运行中动态显示当前玩家的游戏得分与小龙剩余健康值,从而控制小龙数量和游戏进程。
(4)智能手机内存较台式电脑小,因此要求游戏程序逻辑设计相对严谨,需考虑各种可能事件及意外情况,以适应手机应用程序代码利用率高的特点。
2关键技术分析
基于Flash的手机跳跳龙益智游戏设计关键技术包括:设置游戏场景循环移动,小龙跳跃动作,水果、宝盒、蝴蝶、星星等游戏关卡元素的反复飘移出现,以及小龙与水果、宝盒、蝴蝶、星星的碰撞检测等。
2.1游戏场景循环移动设置
游戏场景需要呈现没有尽头的绿树丛林,因此需设置循环移动的背景;在设计好游戏主场景后,复制一个相同场景,紧挨在与主场景移动方向相反的一侧,确保两个场景水平对齐;当主场景沿水平方向移动了一个场景宽度后,备份场景也一起移动同样的单位长度,此时备份场景刚好完全代替了主场景位置。当这一移动效果循环执行时,前一场景移动停止的画面与后一场景的画面内容完全一致,游戏运行时则呈现出没有尽头的场景画面。背景循环控制方法主要是基于进入帧事件,设置背景的x坐标以固定值递减,当移动到坐标值偏离原点达到场景宽度时,重新初始化回到原点。
2.2小龙上下跳跃动作
小龙跳跃动作是基于鼠标滑过事件触发小龙元件Y坐标值递减或递增实现的。首先,引人跳跃状态变量jumping与垂直跳跃方向的递增变量high。变量jumping是跳跃动作运行的判断条件值,初始值设置为False;当鼠标滑过小元件时,将变量jumping置为True,此时满足跳跃动作条件,当小龙完成一次跳跃,回到Y方向初始位置时,再次将变量jumping置为False,等待下一次鼠标滑过事件与动作。小龙跳跃动作主要通过改变该元件Y坐标值实现上跳和下落,变量high初始值设置为负整数,小龙元件的Y坐标值以high为步长循环累加,实现上跳动作;同时设置high以个位正整数递增,这样既能实现小龙下落动作,还能控制跳跃有一定的加速度变化。
2.3水果、宝盒、蝴蝶、星星等元素反复飘移出现
各个游戏关卡中能够影响小龙分值、健康值变化的水果、宝盒、蝴蝶、星星等元素,是基于同一组元件实例在飘移出游戏窗口后,结合随机函数重置元件实例的x坐标值,实现相关元素反复飘移出现。水果、宝盒、蝴蝶、星星等元件实例的移动方向与小龙相反,它们沿水平方向以一定常量递减x坐标值,直到移出游戏窗口,以随机函数产生2位数偏移值累加到初始x坐标值,设置元件实例出现在下一游戏关卡。宝盒、蝴蝶、星星等元件中的益智题是100以内的加、减、乘运算题,由随机函数产生两个2位数,分别赋值给元件中的两个动态文本框,运算符及等号直接在静态文本框中进行设置,运算结果由第3个动态文本框显示。如果是正确的益智题,结果由系统运算产生;如果是错误的益智题,则直接由随机函数产生l位自然数。
2.4小龙与水果、宝盒、蝴蝶、星星碰撞检测
游戏场景中小龙元件实例跳跃碰撞游戏关卡中的元素,是基于hitTest函数进行相交或重叠检测的,语法格式为longl.hitTest(guanqial)。其中longl为被检测的小龙元件实例,guanqial为用来检测的水果、宝盒、蝴蝶、星星等元件实例。如果函数返回值为True,说明两个实例发生了碰撞,否则两个实例轮廓未交叉,不存在碰撞。
3游戏中主要功能模块实现
3.1小龙跳跃功能实现
游戏中的小龙由影片元件创建,利用MOUSE_OVER事件实现小龙跳跃控制。当鼠标划过元件实例时,小龙向上跳跃,并以一定跳躍高度作为返回条件值。关键代码如下:
3.2小龙与水果、星星、宝盒、蝴蝶碰撞功能实现
游戏应用hitTest()函数实现小龙与水果、宝盒、星星、蝴蝶的碰撞功能检测。其中小龙与水果或石头碰撞将增减健康值,而小龙与宝盒、星星或蝴蝶碰撞将增减分值。
3.2.1小龙与水果、石头碰撞功能实现
当小龙碰撞到水果,健康值增加,若碰撞到石头,则健康值减少。小龙碰撞到水果时,水果运行下沉动作,并统计与水果发生碰撞的小龙数量,若达到两只以上,健康值增加10个单位,否则健康值不变。小龙行进过程中若碰撞石头,每碰撞一次将使健康值减少10个单位。由于增减健康值算法类似,而小龙与水果的碰撞算法具有典型性,以下列举关键代码:
3.2.2小龙与星星、宝盒碰撞功能实现
玩家控制小龙与附有正确益智题的星星、宝盒碰撞都将增加分值,每只小龙碰撞一次星星,星星运行下沉动画,分值增加100个单位,而小龙需要同时碰撞两只以上的宝盒,宝盒才运行下沉动画,分值增加100个单位。以上两种碰撞算法类似,而小龙与宝盒的碰撞算法具有典型性,以下列举关键代码:
3.4增加小龙数量功能实现
游戏过程中,控制小龙跳跃碰撞附正确益智题的游戏关卡元件实例,分值不断递增,在健康值不为0,且增加分值达到10倍于单次碰撞得分值时,将新增一只小龙移入游戏场景中。游戏场景外设置3只小龙元件实例作为玩家不断挑战游戏关卡成功的奖励,每达到一次闯关条件,场景中就新增一只小龙。关键代码如下:
4结语
本文提出一种基于Flash技术的跳跳龙手机益智游戏设计方案,分析了游戏实现需要解决的主要问题与关键技术,详细介绍了主要功能模块实现方法。对生成的游戏原型在移动端进行功能测试和兼容性测试,测试结果良好,说明所设计的游戏运行稳定,具备较好的兼容性。
然而,该游戏在性能上还可作进一步完善与优化,由于手机在CPU和内存配置上远低于台式机,移动端的游戏运行如果能尽可能少地占用资源,用户体验效果将更佳。若游戏运行场景中过多使用位图会占用较多内存空间,而矢量图太多又消耗CPU资源,性能优越的游戏能够在二者之间找到平衡。该跳跳龙手机益智游戏中的元件均采用矢量图设计,所设计的元件包括小龙角色、游戏关卡角色(水果、星星、宝盒、蝴蝶等)以及背景等。前期设计时每个游戏关卡角色都设计了不同矢量元件,虽然这些矢量图元件占用内存较少,但在运行时会占用较多CPU资源。针对这些情况,在后期修改时,只保留了一组关卡元件形象。因此,该游戏今后的优化方向将围绕如何确保运行时手机内存资源与CPU资源的平衡,在满足用户需求的情况下,减少影片元件中逐帧动画的使用,尽量使用压缩的音频格式等。