基于DirectX的太空飞行射击游戏的设计与实现Word格式文档下载.docx
- 文档编号:16200957
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:61
- 大小:1.35MB
基于DirectX的太空飞行射击游戏的设计与实现Word格式文档下载.docx
《基于DirectX的太空飞行射击游戏的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于DirectX的太空飞行射击游戏的设计与实现Word格式文档下载.docx(61页珍藏版)》请在冰豆网上搜索。
场景渲染:
碰撞检测
Abstract
Flightshootinggameisakindofpuzzlegamepopulararoundtheworld,hasbeenportedtothePCandmobilesides,longago,itcreatedagamecannotmatchthepeak,alsoinfluencethegenerationchain.Now,althoughithasnolongeritsformerglory,butasaclassicera,itwillneverdisappearinthecourseofhistory,inthepresenteraofintelligentmachines,itstillexudesboundlessvitality.A"
Thunderfighter"
"
FullnameairplaneWars"
andotherexcellentflightshootinggame.
ThispaperisbasedonDirectXflightshootinggame,whichisrunningontheWindowsoperatingsystema2DgameinC++asadevelopmentlanguage,usingtheDirectXSoftwareDevelopmentKittodevelopamultimediagameinVisualStudio2008environment.DirectXAPIbycallingthedisplaysection,aninputsectiontodevelopspaceflightshootinggame,therebystrengtheningthegame'
sgraphicsandeffects,soseeminglysimplespaceflightshootinggamescreenmoreauthenticityandsenseofspace.Inthisgame,themainpartofthedisplaytoandrenderinggamescenes;
interactivesectioncompletedbythekeyboardtocontrolthegamecharacters,andthroughthedisplaygraphicsoutputfeedback;
intermsofgamelogic,conditionsforthestartandendofthegametomakejudgments,completecollisiondetection,characterupgrades,damagecalculation,andtheenemyAIandsoon.ThisgamebycallingtheDirectXAPItoachievetheabovefunctions,thebasicrealizationofasimple2Dgameengine.
KeyWords:
2Dgame;
DirectX;
Scenerendering;
Collisiontest
第1章概述
1.1飞行射击游戏的开发背景
当今这个娱乐的年代,电脑游戏已经成为我们生活中补课或缺的一部分了,从最小的手机上的贪吃蛇小游戏,一直到到魔兽世界等经典网络游戏,他们都给我们的生活带来了乐趣,让我们能在忙碌的日常生活当中得到充分的放松。
尤其是各种小游戏,以其简单方便的操作,和变化多样的性能更是广受年轻人的喜爱。
2015年全球网络游戏市场规模将达到884亿美元,同比增长9%。
过去五年全球网游基本稳定在8%左右。
相比于发展时间长,商业模式较为成熟的欧美市场,新兴游戏市场发展速度更快,2015年中国游戏收入有望超越美国排名全球第一。
作为发展最为快递的新兴游戏市场之一,2015年中国网游市场规模达到1361.8亿元,同比增长24.41%,预期2016-2018年将逐渐趋于稳定。
细分市场看,2015年端游仍然占据最主要地位,市场规模占比42.77%,移动游戏则增长速度最快,2016年有望赶超端游成为占比最高的细分市场。
1.22D太空飞行射击小游戏开发的目的和意义
目前游戏产业已经成为中国如日中天的产业之一。
中国的游戏产业经过二十余年的发展,正处在一个高速增长的时期,已经成为国际公认最具发展潜力的市场。
在我国游戏市场的起步阶段,我国游戏的自主研发能力较弱,市场主要以其他国家和地区的游戏为主。
如今,随着国家政策的大力扶持,我国游戏运营商改变了以代理外国游戏为主的运营方式,转而开发自主产权的游戏。
虽然我国自主开发能力提升很快,但在技术上仍然落后与欧美日韩等游戏行业成熟的国家休闲益智是开发单机小游戏的本源。
同时,中国缺乏高质量的游戏开发者,特别是游戏设计者,这是中国游戏行业面临的一大问题。
如果这一情况得不到改观,我国游戏开发技术很难赶上其他游戏行业成熟的国家。
相对于大型游戏,小游戏之所以能够生存下来是因为其有大型游戏没有的优势,小游戏体积小,玩法比较简单,对计算机等游戏平台性能要求比较低。
对于朝九晚五的大多数人来说,很难拿出一整块时间玩游戏,他们需要一种时间灵活、轻松便捷的小游戏去放松心情,小游戏正符合他们的需求。
针对以上契机和个人兴趣,我决定开发一款2D飞行射击小游戏。
虽然只是模仿但也是成为一名游戏开发者的必经之路。
本课题是一个基于2D纵向的飞行射击游戏。
1.3飞行射击游戏的发展及研究现状
在所有的游戏类型中,飞行射击游戏,即STG,可以说是最古老,也是最深入人心的一种虚拟游戏,同时也一直拥有着广大的粉丝群体,从红白机到PC再到手机,我们对飞行射击游戏的喜爱一直没有停止。
在飞行射击游戏中,我们往往操作着一架普普通通的飞机,在漫天密集的枪林弹雨中惊险地消灭敌人,充当世界的救世主;
或者以宇宙为背景,驾驶着高科技战机在太空中探险……飞天自古以来就是人类的一大梦想,于是在虚拟游戏世界中这种元素就很自然的受到全世界玩家经久不衰的追捧。
STG的发展同样有一个漫长的历程,这其中最让人印象深刻的恐怕还是街机时代的飞机游戏带给我们同年的快乐。
作为80、90后的我们,一定不会忘记“小蜜蜂”、“沙罗曼蛇”、“打击者1945”、“雷电”这些耳熟能详的名字。
电子游戏是我们这一代人童年最美好的回忆,一个硬币,一盘卡带,曾开启了多少小伙伴们“打飞机”的快乐生涯。
即使那个时代的我们还根本不知道什么是STG。
STG(ShootingGame),飞行射击游戏,起源于上个世纪70年代的日本,而伴随着电影《星球大战》席卷全球的狂热风暴,电子游戏的开山鼻祖SpaceInvaders(太空侵袭者)应运而生,这也就是我们最初知晓的那款著名的“小蜜蜂”。
现在看来单调的画面和简单的操作,却让那个时代的人们第一次体会到瞄准、射击和躲避子弹的乐趣,电子游戏也正是在这一次获得了前无古人的成功,而“打飞机”则成为了全世界街谈巷玩的游戏。
图1-1太空侵袭者
从80年代末到90年代初,STG如雨后春笋般涌现,一片百家争鸣的景象。
那也是STG代表电子游戏的时代,创新繁花似锦,几乎每款游戏都采用了新的技术,鲜艳的色彩、卷轴式的大场景、逐渐华丽的爆炸特效等等,都让STG的游戏品质得到极大的提升。
众多作品中,《沙罗曼蛇》绝对称得上经典之作。
《沙罗曼蛇》是那个年代位数不多的横版游戏,也是很多经历过那个年代的玩家深刻的游戏记忆。
精细的关卡布局,击杀敌人后获得可增强火力的能量胶囊,脑洞大开的BOSS设计,一系列的创新都让人们体验到了从未有过的兴奋和过瘾。
很长一段时间,一提起飞行和射击,很多人脑海中最先浮现的就是《沙罗曼蛇》。
图1-2沙曼巴蛇
图1-3沙曼巴蛇
到了90年代初,随着电子技术的进步,飞行射击游戏在感官上也有了进一步的优化,图像和音乐音效也都更加出色。
街机版迎来最后的革新,而家用游戏机也从FC红白机跨越到PCE的时代。
旧式STG从此达到顶峰,并且开始孕育新的蜕变。
彩京系列《打击者1945》的出现,实在给人耳目一新的感觉,精美的画面在那个时代,足够给人绝对的震撼,游戏中的坦克、飞机以及能变成人形的BOSS都让人眼前一亮。
凭借着多样的战机选择和武器设定,特别是行云流水的操作感和高难度的躲避技巧,《打击者1945》很快成为了风靡全球的街机游戏。
图1-4打击者1945
同样,当时与彩京一起瓜分STG市场的还有《雷电》系列。
这款纵向卷轴的空战射击游戏拥有更多的飞机选择,同时在游戏过程中你也会感觉更加爽快。
图1-5雷电
90年代中后期,随着电子技术的飞速发展和互联网的初步应用,越来越多的其他类型游戏开始登上历史舞台,而STG的发展却似乎陷入瓶颈。
创新乏力,玩法单一,弹幕系的高难度让很多普通玩家望而却步,玩家的大量流失让STG逐渐变成了只有发烧友才会去玩的游戏。
随着“打着飞机”长大的一群玩家渐渐长大成人,STG也继续走向衰落,但恰恰是在这一时期,却涌现出一批经典STG力作。
《怒首领蜂》《虫姬》等,从弹幕、难度、关卡设计、剧情、画面等方面都做了革新,成为倍受STG玩家推崇的作品。
也许STG再也不会回到巅峰,但是经典之所以称之为经典,就是他们总会在不经意间从我们的脑海中轻轻闪过,并且不会被忘记。
在手机游戏越发火热的今天,我们惊喜的发现,飞行射击游戏似乎最适合在手机上把玩,手指在竖屏上滑动,任何时候,在指间就能完成所有操作。
1.4系统描述
1.4.1开发环境及技术介绍
1.太空飞行射击游戏开发环境介绍
操作系统(OS):
MicrosoftWindows7;
开发语言:
C++;
开发环境:
MicrosoftVisualStudio2008;
使用库:
DirectX9.0c
2.DirectX简介
DirectX(DirecteXtension,简称DX)是由微软公司创建的使用C++语言按照COM的多媒体编程接口[1]。
很多游戏的游戏开发如MicrosoftWindows、MicrosoftXBOX、MicrosoftXBOX360和MicrosoftXBOXON等都是用其开发的。
并且他还能够向程序人员提供一个统一的硬件驱动的标准,使游戏的开发环节不用为了每一个品牌的硬件去编写不同的驱动,同时也是用户的使用变得极其方便。
DirectX之中包含了很多应用程序编程接口,按照它们的性质不同进行分类,可以分为四网络、声音、输入和显示四部分[14]。
(1)显示部分
这是DirectX里对于图形的处理的重要组成部分,是由DirectDraw与Direct3D两个小部分组成的[2]。
Direct3D的功能是3D效果的显示,比如经典网游半条命中的场景和人物、魔兽争霸3中的地图各种单位等,都是使用了DirectX的Direct3D。
DirectDraw则主要承担了2D图像加速。
它的功能范围很广泛,比如我们日常中播放mpg、浏览一些图片或者玩一些小游戏的时候都是用了DDraw的支持。
(2)声音部分
DirectSound是这个部分中的API的最重要的地方,它的主要功能是用来播放声音,而且还有处理混音的功能,同时还会对3d音乐效果有加强的作用,并且还具有录音的功能[13]。
我们游戏里的声音之所以可以对我们使用电脑的各种各样的声卡进行兼容有事因为DirectSound存在的原因。
(3)输入部分
我们需要鼠标键盘等设备来进行游戏,而对于这些设备的功能进行兼容,并且是他们能够达到工作的最佳状态,DirectInput功不可没[15]。
而且不但是鼠标键盘,它还支持连接手柄、摇杆、模拟器等。
(4)网络部分
网络游戏是现在游戏的中流砥柱,提到网络功能就不得不说DirectPlay,它为网游提供了TCP/IP,IPX,Modem和串口等多种连接方式,让玩家们可以选择不用的联网方式来进行游戏,此外它还支持网络的通话功能跟加密措施[3]。
3.C++语言特点
C++是一种从C语言的基础上派生出的具有面向对象特性的高级编程语言
具体来说C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。
C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。
面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
1.4.2飞行射击游戏开发设想
本游戏开发的环境是VisualStudio2008,本游戏开发使用的是C++语言,因此我在开发2D太空飞行射击小游戏的时候采用面向对象的开发方法。
初步设想构建5个部分,分别包括player部分、enemybullet部分、bullet部分、DxTest部分、ship部分。
将各部分的功能方法封装在8类中,并根据各部分之间的关系选择各类中要调用的共有方法和变量,以便建立各部分之间的联系。
第2章方案论证
2.1可行性研究
可行性研究的目的简单来说就是用最廉价的成本和最效率的速度来确定系统,并且是确定可以进行的。
可行性分析的目的不是解决问题,而是确定问题是否值得去解决,从以下四个方面考虑可行性:
2.1.1技术可行性
本次开发的太空飞行射击游戏想达到2D游戏效果可以采用两种图像接口,一种是OpenGL,OpenGL生成二维、三维图像均可,用简单的图形图像比特绘制复杂的三维景象是其三维图像生成的原理。
OpenGL是一种可以在不同的平台之间进行相互移植的接口,它与硬件无关。
另一种接口便是DirectX,遵循COM,是由微软公司创建的多媒体编程接口,所以它会在微软所开发的平台上功能会得到更多的展现,尤其是在2D开发方面[9]。
与OpenGL相比,DirectX功能更加完善。
2.1.2经济可行性
经济可行性是指对组织的经济状况和投资能力进行分析,对系统建设,运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行评估。
本游戏的开发有本人利用毕业设计的机会开发,开发费用可以忽略不计。
本游戏的开发需要资金少。
由于基本引擎已经开发设计好,游戏开发运行后,可以轻松的进行各项信息的发布与管理,节省了人力,物力和财力,减少无意的错误,节省了大量的时间,更新效率也大幅度提高。
本游戏小,且娱乐性高,具有一定市场占有率,因此,在经济上是可行的。
所带来的效益远远大于游戏的开发成本。
2.1.3操作可行性
本次课题是制作2D游戏,而且以《雷电》游戏作为借鉴。
继承了传统飞行射击类游戏的操作方法,通过键盘来操纵飞机,操作简单,容易上手。
2.1.4法律可行性
在本次开发过程中,若开发的游戏进行发行,进行商业活动,则所选择的开发环境的需要购买正版的商业版本,以免侵犯他人的知识产权。
若本次开发仅供学习研究,则可以使用厂家提供的免费使用版本。
在本次开发中,不得存在损害他人利益,损害集体或国家利益的行为。
2.2方案论证
根据设计游戏的初始需求可以提出两种开发方案:
以C++为开发语言,图形库采用OpenGL,编译环境使用MicrosoftVisualstudio2012。
开发语言采用C++,多媒体编程接口采用DX,编译环境使用MicrosoftVisualstudio2008。
由于本人的学习,已基本掌握对VisualVisualstudio2008编辑器的使用,同时也对WindowsAPI进行了学习,对使用C++进行编程相对来说比较擅长,而且由于在游戏开发中需要编写脚本,同时C++语言在脚本编写方面更有优势。
另外比起OpenGL,我们上文提到的DirectX是由微软开发的,所以它与Windows平台契合度更高,功能更完善。
本次开发选择制作类似《雷电》的小游戏,因游戏规模相对不大,对人力、物力、财力的要求是我可以达到的;
另外,我开发游戏使用的编辑器VisualC++6.0使用的是免费版本,使用的DirectXSDK也是免费的版本,虽然免费版本功能有些不健全,但对于我开发的小游戏来说已经足够了。
以上叙述表明我开发飞行射击小游戏在经济上是可行的。
在操作可行性上,在保证对游戏的质量要求前提下,本游戏以直观易懂,使用方便为目的开发了以下游戏操作:
玩家通过键盘上下左右键控制飞机飞行,space键设计,以上操作使玩家可以直接上手操作本游戏,因此本游戏在操作上是可行的。
本系统开发不会对外发行或进行商业操作,且使用的编辑器和DirectXSDK均是合法的免费试用版本,不会侵犯他人利益,不会出现侵权等问题,一切按照国家法律,因此具有法律可行性。
综上所述,从各方面的可行性进行考虑,本次开发方案采用方案2是最佳选择。
2.3方案总结
通过以上方案论证,我得出一套太空飞行射击游戏的制作方案,操作系统采用MicrosoftWindows7,开发环境选择MicrosoftVisualstudio2008,使用库为DirectX9.0c。
使用的开发语言为C++语言。
第3章需求分析
3.1功能行为需求描述
3.1.1太空飞行射击游戏用例建模
1.确定执行者
整个“飞行射击小游戏系统”只有一个执行者,即玩家,其活动如下:
玩家:
通过键盘上下左右键转换Playerplane上下左右移动,通过空格键发射子弹。
在内部的子系统之间的用例中,还有一个子系统外的执行者,即游戏引擎。
2.确定用例
对整个游戏系统进行分析,总结出以下用例。
(1)“太空飞行射击游戏”中的用例
在第一层,根据“太空飞行射击游戏”的模块功能,可选的用例有:
Player飞机功能
Enemy敌机功能
角色管理系统
场景设置系统
特效设置系统
碰撞检测系统
(2)“Player飞机功能”中的用例
在第二层,根据player功能的要求,可选的用例有:
playerplane的移动
playerplane射击
player状态反馈
(3)“Enemy敌机功能”中的用例
在第二层,根据Enemy功能的要求,可选的用例有:
enemy移动
enemy射击
enemy状态反馈
(4)“角色控制系统”中的用例
在第二层,根据角色管理系统的要求,可选的用例有:
实体数量
实体实例化
实体生命值
实体注销
(5)“场景设置系统”中的用例
在第二层,根据场景设置系统的要求,可选的用例有:
游戏背景
(6)“特效控制系统”中的用例
在第二层,根据特效控制系统的要求,可选的用例有:
爆炸特效
(7)“碰撞检测系统”中的用例
在第二层,根据碰撞检测系统的要求,可选的用例有:
playerplane的碰撞强度
enemyplane的碰撞强度
子弹的碰撞检测
碰撞伤害记录
3.分层绘制用例图
(1)最高层用例图
“太空飞行射击游戏综合设计”用例:
图3-1太空飞行射击游戏用例图
(2)第二层用例图
①“Player功能”用例
图3-2Player用例图
②“角色管理系统”用例
图3-3角色管理用例图
③“Enemy敌机功能”用例
图3-4Enemy敌机用例图
④“场景设置系统”用例
图3-5场景设置用例图
⑤“特效控制系统”用例
图3-6特效控制用例图
⑥“碰撞检测系统”用例
图3-7碰撞检测用例图
4.太空飞行射击游戏综合功能用例描述
“太空飞行射击游戏综合功能”用例描述
(1)“Player功能”用例
用例名:
Player功能
执行者:
玩家
目的:
本功能模块主要负责Playerplane的所有功能的实现,包括移动、射击以及状态反馈等。
过程描述:
①进入游戏界面后,点击开始键,进入游戏场景。
②屏幕上可以直观显示自己当前的状态(例如自己的生命值和敌机的状态)。
③根据当前状态选择飞机的移动方式。
④结束游戏。
异常事件流处理:
追踪子弹未命中敌机,需重新射击。
(2)“Enemy功能”用例
Enemy功能
游戏引擎
本功能模块主要负责Enemy敌机的所有功能的实现,包括随机移动、射击以及状态反馈等。
②从屏幕上显示当前的状态和玩家的状态。
③根据当前状态Enemyplane随机移动。
④循环执行以上操作。
⑤结束游戏。
随机移动时,避免与其他障碍物相撞。
(3)“角色管理系统”用例
角色管理系统主要根据游戏实体的数量来确定是否进行实体实例化,通过生命值监测来判断是否对实体进行销毁。
②获取实体的数量和实体的生命值。
③根据实体的数量实例化实体。
④根据实体的生命值销毁实体。
⑤循环执行以上操作。
⑥结束游戏。
同类实体数量一定,所以实例化时以同类实体为准。
(4)“场景设置系统”用例
本系统主要负责绘制背景,尽量使场景真实。
②播放场景。
③循环执行以上操作。
④结束游戏循环执行以上操作。
(5)“特效设置系统”用例
本部分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DirectX 太空飞行 射击 游戏 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)