基于Android的3D空战游戏开发

2018-12-23 19:54:31曾翔宇
无线互联科技 2018年7期
关键词:碰撞检测敌机炮弹

曾翔宇

(湖南科技学院 电子与信息工程学院,湖南 永州 425199)

1 游戏设计发展

动作类游戏是最传统的游戏类型之一,主要由玩家所控制的人物或角色根据周围环境的变化,利用键盘或者手柄、鼠标的按键作出一定的动作,如移动、跳跃、攻击、躲避、防守等,来达到游戏要求的相应目标,一般是为了过关。TV GAME早期的作品多数集中在这个类型上。

通过了几代游戏机种的变化和发展,现在的动作类游戏中已经融入了更新鲜的元素、更完整的剧情、更复杂的机关解谜,这些都使动作类游戏逐渐成为所有类型游戏里面款式最丰富的一种。代表作品:《波斯王子》《鬼泣》系列、《超级忍者》系列(是SEGA经典系列正宗ACT代表),还有《超级玛丽》《刺客信条》《真三国无双》等。

本文通过设计并实现在Android平台上的空战游戏《3D空战》,阐述了此类游戏的开发过程及实用的开发技巧。

2 游戏的背景及功能概述

2.1 背景概述

《3D空战》是一款很好玩的3D飞行射击游戏,在游戏中你要控制一架模拟战机,完成不同的任务。全3D的画面,游戏场景的设计别具一格,虽然画面是全3D打造,不过运行非常流畅,在Symbian系列手机系统中广为流行。游戏的玩法和同类3D飞行游戏类似,上下左右键控制飞机运动,确定键进行射击,游戏的目标就是完成每关的任务,也就是击落一定数量的敌机。不过敌机也可以射击,你要做的是控制好自己的战机,尽量和对面呼啸而来的敌机导弹保持距离。该游戏最大的特点就是巧妙而又丰富的场景设计—天空球和陆地球,这也是3D游戏吸引人的特点之一[1]。同时也是非常有挑战性的游戏,面对不断飞驰而来的炮弹,你要操作你的战机,努力躲避空中的炮弹,同时发射导弹击落敌机,当击落的敌机数大到一定数量时,就可以成功过关了。

2.2 功能简介

《3D空战》游戏的规则很简单,玩家驾驶着自己的飞机向前飞行,在飞行的过程中,会从不同方向飞出向玩家发射炮弹的敌机,玩家可以按下手机上的确认键发射炮弹击落敌机,也可以通过上下左右键控制飞机躲避,当击落的敌机数到一定数量时,玩家就闯关成功,进行下一次挑战。下面具体进行阐述。

(1)启动游戏后首先进入的便是游戏声音设置界面。单击“是”,则开启游戏声音,单击“否”,则关闭游戏声音。

(2)声音设置完毕后,返回主界面。该界面共有5个菜单,分别是关于游戏、游戏设置、快速游戏、游戏帮助及退出游戏。

(3)在开始菜单界面若单击“游戏设置”,则进入游戏声音设置界面。可进行声音设置。

(4)游戏主界面若单击“关于游戏”,则进入游戏关于界面。该界面介绍了关于本游戏的相关信息。

(5)游戏主界面若单击“游戏帮助”。该界面显示了游戏的操作规则和操作方法。

(6)在开始菜单界面若单击“快速游戏”,则首先切换到游戏加载画面,然后开始游戏。开始菜单界面若单击“退出游戏”,则会自动结束游戏,返回手机桌面,若要重新运行,在应用程序中单击小飞机图标,就可以重新开始游戏。

(7)游戏开始的画面:在一开始,自己的飞机在屏幕中间位置,敌机则由远及近从不同角度对我机射击。屏幕的左上角显示的是我机的数量,当被敌机击中之后,其数量会相应减少,替换我机继续进行游戏,当我机全被敌机击中后,则表示游戏失败。屏幕右上角是击落的敌机数量,当击落10架敌机,则闯关成功。

(8)游戏进行中:敌机从上到下,由远到近对我机进行射击。

(9)战机被敌机击中,并发生爆炸时的场景。

(10)当玩家完成规定的任务时,则游戏胜利,进入游戏胜利界面。玩家飞机全被击落之后,则游戏结束,进入失败界面。

3 游戏的策划和准备工作

3.1 游戏的策划

人们自古以来就对浩瀚的太空充满好奇,同时也不断地探索着这块未知的领域,正是由于这样,出现了许多以太空为中心题材的游戏,比如《太空保卫战》等一些游戏。《3D空战》也是这种3D动作飞行射击游戏,玩家控制自己的战机遨游天空,需要玩家注意力集中,当玩家投入到游戏中后,就可以体会到穿越高山、海洋、在空中邀游的完美体验。开发这款游戏的目的是在Android平台上的游戏开发提供一个指导方案,而不是生产商业化的游戏产品。

3.2 Android平台下游戏的准备工作

游戏的准备工作通常是根据游戏的策划来制作游戏所用的图片、声音等。由于图片的加载在游戏中比较耗时,建议把一些小的图片纹理,如飞机的机翼纹理、机身纹理、螺旋桨纹理等集成到一张图片上,以缩短游戏加载时间,提高运行速度。对于纹理的大小,不应太大,适当大小即可,这样可以节省内存资源。另外,还有准备好游戏中用到的声音文件。如炮弹发射声音、敌机发炮声音、爆炸音效、背景音乐等[2]。

4 游戏的架构

4.1 游戏中用到的主要技术

程序中开始菜单、声音设置界面、关于界面、帮助界面、加载界面及胜利界面均以2D实现。以上界面均直接自定义SurfaceView并重写了其中的onDraw()方法,所有的按钮均是作者用贴图实现的,避免了使用Android自带控件,使游戏画面更加绚丽、个性。

游戏时的界面使用3D技术实现,游戏界面直接自定义了GLSurfaceView并实现了Renderer接口,通过重写onKeyDown()方法、onTouchEvent()方法实现与用户的交互。本游戏使用了简单的碰撞检测算法。实际商业化游戏开发中,往往使用的碰撞检测算法是更有效率、更准确、更成熟的算法。而这些算法往往都是由数学家来研究的。

4.2 游戏的框架

接下来将通过游戏的运行过程阐述各个类在游戏中的作用,游戏的运行步骤如下。

(1)启动游戏后,首先在G L D e m o中初始化StartSurfaceView,然后将用户界面切换到声音设置界面。

(2)设置完游戏声音后,StartSurfaceView将调用其中的setMenuView方法,将界面切换到主菜单界面。

(3)在主菜单界面StartSurfaceView中,根据不同的菜单项调用不同的方法,进入不同界面。如果单击关于,则调用setAboutView方法,进入关于界面。

(4)当主界面调用setMySurfaceView后,进入游戏界面,首先MySurfaceView会初始化背景类、地板类、建筑块类、钢丝绳类等场景类来绘制场景。同时将启动线程ActionThread来刷新界面,同时进行动画的绘制和碰撞检测。

(5)游戏界面类中有一个消息处理器,MySurfaceView中有一个线程时时刻刻检测是否胜利,如果胜利就发送消息,然后交给消息处理器处理,GL Demo调用setWinView方法,切换到胜利界面。

(6)在胜利界面,触摸屏幕任意处,则GL- Demo调用setMenuView方法,切换到开始菜单界面[3]。

5 游戏中的运动线程和碰撞检测

下面阐述游戏中控制物体运动的线程和碰撞检测的实现,以及用户的交互,这些类中控制hero机和敌机的飞行,hero机炮弹和敌机炮弹的飞行,以及各种碰撞检测。

(1)飞机是如何按路线飞行的,主要包括飞机路线设计器和游戏中的MoveThread线程。飞机的每条路线由4个点构成,第1个点和第4个点在屏幕外,第2个点和第3个点在屏幕内,让飞机沿着这条路线飞行,就能保证飞机从屏幕外面飞进来,最后又飞出屏幕的效果。

由此可以用一个程序来生成多条不同的飞机路线,在游戏中让这多条不同路线循环出现,这样既能保证路线的多样化,又能节省资源,使游戏具有可玩性。

(2)飞机发射炮弹后,炮弹被添加进炮弹列表,炮弹列表里面所有的炮弹在单独线程中按既定的路线飞行,并且需要处理碰撞检测和生命周期检测。

6 游戏的优化与改进

6.1 增加游戏的关数

—款多关游戏,总是能激发玩家的挑战心理,对玩家有更大的吸引力。在玩家眼中,离开了闯关的刺激,游戏的体验就会大打折扣,所以增加游戏关数是游戏开发中必不可少的。本游戏中,并没有设置游戏关数,在以后的研究中可以改进程序,增加游戏关数,每闯一关,游戏难度越大,以提升玩家的体验。

6.2 模式的定制

游戏应该开发成多种模式,不同的模式带来不一样的体验,单一模式会让游戏很快失去对玩家的吸引力。同时应该增加游戏难度的选择功能,使玩家根据自己的情况选择不同的等级进行游戏,这样才更加合理。

6.3 子弹的变换

如果能在游戏过程中通过捡装备改变子弹种类或者数量,比如hero机吃到了一个晶体之类的东西就可以让炮弹数量更多或更快,会大大提高玩家对本游戏的体验,在以后的研究中可以自行开发完成此功能。

[参考文献]

[1]吴亚峰.Android3D游戏开发技术详解与典型案例[M].北京:电子工业出版社,2012.

[2]夏有新.Android3D游戏模型纹理处理[J].硅谷,2013(11):103-104.

[3]林深华,范志尚,蒋建兵,等.基于Android平台Unity3D游戏设计与实现[J].企业科技与发展,2013(10):40-42.

猜你喜欢
碰撞检测敌机炮弹
树上长“炮弹”
冲着敌机,开炮!——M1939式37毫米高射炮
全新预测碰撞检测系统
装填炮弹
环球时报(2020-02-21)2020-02-21 06:13:37
基于BIM的铁路信号室外设备布置与碰撞检测方法
“炮弹”表妹
Unity3D中碰撞检测问题的研究
电子测试(2018年1期)2018-04-18 11:53:00
新中国建国后击落入侵敌机大盘点
骑炮弹飞行
BIM技术下的某办公楼项目管线碰撞检测