毕业设计(论文)基于DirectX的跳跳球游戏设计_第1页
毕业设计(论文)基于DirectX的跳跳球游戏设计_第2页
毕业设计(论文)基于DirectX的跳跳球游戏设计_第3页
毕业设计(论文)基于DirectX的跳跳球游戏设计_第4页
毕业设计(论文)基于DirectX的跳跳球游戏设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于directx的跳跳球游戏设计作 者 姓 名:指 导 教 师:单 位 名 称:信息科学与工程学院专 业 名 称:计算机科学与技术2010 年 6月design of jumpball game programming based directxby supervisor :june 2010东北大学本科毕业设计(论文) 毕业设计(论文)任务书毕业设计(论文)任务书毕业设计(论文)题目:基于directx的跳跳球游戏设计设计(论文)的基本内容:(1) 了解游戏开发背景,分析游戏功能需求,研究其设计及实现技术。(2) 设计基于directx的跳跳球游戏总体结构,主要实现游戏设计与游戏引擎:游戏

2、设计由三个子模块构成:界面设计,小球种类设计,游戏规则设计。游戏引擎主要实现gui控件模块、图形图像绘制模块、动画贴图模块、2d精灵渲染模块、粒子系统模块以及支持功能模块。毕业设计(论文)专题部分:题目:设计或论文专题的基本内容:学生接受毕业设计(论文)题目日期第周指导教师签字:年月日- iv -东北大学本科毕业设计(论文) 摘要基于directx的跳跳球游戏设计摘要当今电脑游戏越来越普及,与此相应,游戏编程也成为了计算机行业一个热门领域。游戏产业的前景十分美妙。当it业正在经历着“寒冬”时,游戏软件业却呈现出了勃勃生机。巨大的经济效益正在使越来越多的优秀人才投身于游戏产业之中。电脑游戏不仅能

3、给软件产业带来了效益,而且可以减缓人们的精神压力。游戏的本质是为了让人放松心情,愉悦感官。大多数游戏都是有益身心健康的。适当游戏不仅可以丰富生活,还可以促使人动手动脑开发智力。这款跳跳球游戏,为轻薄短小的游戏类型,上手快,耗时少,操作简单,游戏乐趣丰富。本文首先介绍了游戏开发的数学基础,visual c+工具和directx技术。然后在这个基础上重点说明了游戏开发的需求分析,成功搭建好了游戏的基本框架。其次,详细阐述了开发电脑游戏的关键技术游戏引擎技术,并用具体的类和函数,说明如何利用directx技术设计实现一个小型的游戏引擎。游戏引擎与应用程序,算法相结合,从而构成了一个完整的跳跳球游戏。

4、最后,本文对本次毕业设计进行总结,对制作更高水平的2d电脑游戏作出了展望。关键词: directx;游戏引擎;2d电脑游戏;跳跳球东北大学本科毕业设计(论文) abstractdesign of jumpball game programming based directxabstractbecoming increasingly popular in todays computer games,accordingly,the game programming has become a hot area of the computer industry.the game industry se

5、es a wonderful future.when the it industry is suffering a “frosty winter”,the game industry is full of vigor and vitality.the huge economic benefits of the game industry are pouring more and more outstanding talents to the field of it.computer game not only benefits of the computer industry,but also

6、 relieves peoples mental stress.the nature of the game is to make people relax and sensual pleasure.most games are healthy and well. appropriate games can not only enrich their lives,but also promote people hands-on mental and physical and development of intelligence. this jumpball game is small and

7、 short,which is easy to play and full of fun.firstly,this thesis introduces mathematical foundations of game development,the brief introduction of visual c+ and directx.then it concerns about the needs of game development,the basic structure of a pc game has been built.secondly,this thesis expounds

8、the key technology of designing pc gamegame engine technology.then it demonstrates how to use directx to design a small game engine with specific classes and functions. after the combining of game engine,application and algorithm,a whole jumpball game is complete.at the end of the paper,the summary

9、of this graduation project and some views on the 2d pc game with higher level.key words: directx;game engine;2d pc game;jumpball东北大学本科毕业设计(论文) 目 录目录毕业设计(论文)任务书i摘要iiabstractiii目录iv第1章 引言11.1 课题的背景11.2 课题研究成果应用的实际意义21.3 主要研究内容21.4 本文结构安排3第2章 游戏开发基础42.1 数学基础42.1.1 向量42.1.2 矩阵52.2 visual c+简介72.2.1 visu

10、al c+优势72.2.2 与其他函数库的结合82.3 核心技术简介82.3.1 directx简介82.3.2 directx 重要知识点112.4 本章小结11第3章 需求分析123.1 游戏规则123.1.1 棋盘和小球的表示123.1.2 游戏规则说明123.2 需求分析133.2.1 游戏引擎分析133.2.2 游戏方案分析133.3 本章小结15第4章 游戏设计164.1 游戏引擎164.1.1 gui控件的设计164.1.2 基本图形图像绘制的设计164.1.3 动画贴图的设计184.1.4 粒子系统的设计224.1.5 游戏引擎支持功能的设计254.2 游戏规则设计264.3

11、本章小结27第5章 游戏实现285.1 游戏引擎实现285.1.1 gui控件的实现285.1.2 基本图形图像绘制的实现295.1.3 动画贴图的实现295.1.4 粒子系统的实现325.1.5 游戏引擎支持功能的实现345.2 游戏实现365.2.1 小球种类设置365.2.2 游戏规则实现375.2.3 开始菜单界面395.2.4 游戏关卡选择405.2.5 主游戏界面405.2.6 编辑界面415.2.7 游戏帮助界面415.3 本章小结43第6章 游戏测试446.1 游戏引擎测试446.2 游戏测试446.3 本章小结45第7章 结论46参考文献48致谢49东北大学本科毕业设计(论文

12、) 0 引言第1章 引言1.1 课题的背景游戏在欧美的研究是从1961世界第一款交互式游戏太空大战诞生开始,已经发展了四十多年的历史,取得了不少成功经验。2007年美国视频游戏和游戏软件销售额达到了179亿美元,较2006年增长了43%,超过了电影,成为美国第一娱乐产业。日本经济的近20%是电子游戏产业所创造的。韩国的游戏产业也达到了200亿美元的产值,超过汽车工业成为韩国经济的支柱产业。与他们相比,中国的游戏市场仍是一个新兴的市场。根据2007年中国游戏产业调查报告,截至到2007年12月,中国网络游戏用户数已达至4017万,比2006年增长23%,实际销售收入为105.7亿元人民币,比20

13、06年增长60%,手机游戏用户也与同期相比增长25%。据2007年中国游戏产业调查报告,至2007年11月,中国网络游戏研发公司数量己达126家,比2006年的93家增长35.5%。广东、北京成为游戏研发公司增长最快的区域,截至至2007年11月,广东的游戏研发公司达到19家,比2006年的7家增长171.4%,北京游戏研发公司达到41家,比2006年的24家增长70.8%。全国游戏研发从业人员数量达到21034人,比2006年的13908人增长51.2%。然而就游戏设计的经验和技术而言,目前中国落后于欧美,日本和韩国,就中国自身而言,大陆又稍微落后于台湾。目前,中国市场上的游戏以日本、美国、

14、韩国等地的为多,而国产游戏则大部分是由内地与中国台湾地区合作开发,完全由内地游戏制作人自己创作的游戏实在是少之又少,游戏开发人员与用户量比例严重失调已经成为阻碍国内游戏产业发展的重要阻力,以拥有1300万人口的中国台湾地区为例,其软件游戏业设计美工人员近3000人,所以内地在软件游戏人才方面的缺口实在太大。随着国内外的游戏产业的发展,3d游戏渐渐的成为游戏市场中的主流,但2d游戏基于自己的自身特点并没有推出游戏市场,反而在休闲游戏、网页游戏等领域广泛的发展。放眼观察欧美、日韩游戏产业发展比较成熟的国家,3d游戏从游戏策划、图像引擎到游戏开发等各个方面已逐步成熟。反观中国,3d技术并不成熟,很多

15、游戏公司的主要力量还只是在于技术方面的处理,尽量在技术方面模仿国外的游戏作品,并且3d游戏投资较大,只有小部分的公司能进行开发。相反2d游戏的技术难度相对较低,游戏公司重心可以不单单是放在技术处理方面,还可以多注重在游戏表现形式等策划方面,丰富游戏的内容,整体开发周期断,资金投入相等少的多,这些都非常的符合中国现在的情况。在中国游戏市场的反应来看,3d游戏对于游戏爱好者来说吸引力强,他们喜欢拥有一定的操作难度,画面质量优秀的游戏;2d游戏表现形式上休闲、轻松、愉快,并且对硬件和系统的要求低,适合大量的喜欢交友,休闲娱乐的人。现在的2d游戏中还也引用了不少的3d效果来丰富游戏画面,如粒子系统、水

16、波特效等。因此,2d游戏在中国的发展前景是良好的,不会轻易的被3d游戏所取代,为此2d游戏开发技术是我们值得关注和思考的问题。正是在这样的情况下,本文研究游戏制作是很有意义的。基于游戏发展的历史和前景,我决定用c+语言开发一款小游戏跳跳球,游戏规则源于18世纪法国宫廷贵族的独立钻石棋,实现闯关模式功能。我希望这款游戏能够吸引大家,为大家带来快乐。1.2 课题研究成果应用的实际意义游戏产业的前景十分美妙。当it业正在经历着“寒冬”时,游戏软件业却呈现出了勃勃生机。近几年游戏行业的发展速度之快,远远超过了家电,汽车等等传统的行业。巨大的经济效益正在使越来越多的优秀人才投身于游戏产业之中。随着社会的

17、发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界。人们不再拘泥于一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成了必需品。跳跳球这一游戏简单易行,操作方便,娱乐性较强。这一款游戏紧紧地抓住了人们的心理,虽然简单,却其乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具。1.3 主要研究内容本文的研究目标是利用directx技术设计实现一个2d游戏引擎并完成休闲游戏跳跳球的制作。整个2d游戏图形引擎系统封装了底层复杂的实现细节,为上层游戏程序提供一个简单、灵活、易用的平台。本

18、文研究的课题初步探讨了2d游戏图形引擎的基本技术架构。针对一些关键问题给出了解决方案并予以实现,并在最后对于今后的工作做了进一步的展望。本文的工作内容主要包括以下几个方面:1) 研究了现有游戏图形引擎的主要实现方法,学习掌握相关的概念和技术,分析设计了2d游戏图形引擎系统的体系结构,划分了各功能模块。2) 分析了创建界面控件系统模块的优点,建立可视化自定义组件的底层类库,设计并实现了界面控件系统模块。3) 划分了图形渲染系统模块的层次结构,设计开发了基本图形图像绘制子模块、动画贴图子模块和屏幕渲染管理子模块。4) 利用了顶点缓冲的方法渲染2d精灵,可以减少游戏频繁的大量绘制图像所耗费的资源,提

19、高游戏的运行效率。5) 通过分析粒子特效的应用机理,给出了粒子特效在2d游戏中的实现方式。6) 在字体、资源管理器、音乐、音效、向量等游戏引擎支持功能方面,提出了可行的方法,并加以实现。7) 对智力游戏独立钻石棋进行重新的改造,设计出不同的小球,提高了游戏的趣味性。1.4 本文结构安排本文内容安排如下:第1章首先介绍了论文的研究背景和意研究成果应用的实际意义,对本论文的研究内容和结构进行了说明。第2章介绍了游戏开发所需要的数学基础知识,开发平台visual c+以及核心技术directx。第3章讲述了游戏设计的需求分析。描述了游戏的元素棋盘和小球,详细介绍了游戏的规则设计。介绍了游戏引擎处理流

20、程以及选择游戏算法。第4章游戏以及游戏引擎的具体设计。详细描述了游戏引擎各模块的设计包括gui控件模块、图形图像绘制模块、动画贴图模块、2d精灵渲染模块、粒子系统模块以及支持功能模块。还有游戏规则算法的详细设计。第5章描述了游戏以及游戏引擎的实现。包括小球类的实现,开始界面,关卡选择界面,主游戏界面,编辑界面以及游戏帮助界面。第6章分别对游戏和游戏引擎进行测试,找出问题并提出解决方案最后给出总结,并提出下一步的目标。- 50 -东北大学本科毕业设计(论文) 第2章 游戏开发基础第2章 游戏开发基础2.1 数学基础2.1.1 向量向量是游戏开发中涉及的最基本的对象,它的两个重要的属性是长度和方向

21、,3d世界的基本坐标系包含3个轴,分别是x轴、y轴和z轴,并分别代表空间中的宽度、高度和深度,3d向量是一个包含三个浮点数的结构,有了这三个值就可以定位3d世界中的任意物体。向量的基本操作如下:1) 计算向量的长度向量的模就是有向线段的长度,通过代数方法计算向量的公式为:。2) 单位化向量当向量的模为1是,即为单位向量。通过将向量的每个分量与该向量的模相除得到转化后的单位向量,如: 已知向量=,单位化的结果是。3) 向量相等几何学上,判断两个向量是否相等,需判断这两个向量的长度和方向是否都相等。在代数学上,判断是否相等,需判断两个向量维数和相应的分量是否相等。例如:要判断和是否相等。,4) 向

22、量加减向量的加法是基本的操作,定义为两个维数相同的向量对应分量分别相加。)向量的减法就和加法类似,是两个维数相同的向量对应分量分别相减。5) 向量放缩向量的放缩可以用来改变模的大小,而向量的方法不改变。通过一个倍数与向量3个分量相乘,得到向量放缩后的值。假设k为倍数, 6) 向量点乘向量点乘是向量代数中的一种乘法,其运算规则如下:在几何意义上,就是用于计算两个向量之间角度的余弦。,其中为两个向量的夹角。从上面的公式可以看出,当点乘的值等于0时,表示两个向量垂直;当点乘的值大于0时,表示两个向量的夹角小于90度;当点乘的值小于0时,表示两个向量的夹角大于90度;同时也可以通过点乘公式计算出夹角的

23、值。在游戏开发中应用较广,进行光照计算与背面消隐时可能大量应用。7) 向量叉积向量叉积是向量代数中的另一种乘法,用于计算垂直另外两个向量的向量。在游戏开发中有很多的用途,只要已知同一个顶点的两条边就可以求出该多边形的法向量。2.1.2 矩阵矩阵简单的来说就是一个由行、列组成的矩形数组。direct3d中很多情况下都要矩阵的操作,包括渲染的时候物体的平移、旋转、放缩还有投影场景等等。下面就来介绍矩阵的各种操作:1) 矩阵加减法矩阵的加法就是当两个矩阵的维数相同时,两个矩阵对应元素相加。以22的矩阵相加结果为:矩阵的减法和加法相似,是当两个矩阵的维数相同时,两个矩阵对应元素相减。2) 矩阵数乘矩阵

24、可以和倍数运算,用倍数与矩阵的每个元素相乘。例如倍数为n,与22的矩阵相乘为:3) 矩阵乘法矩阵相乘首先要求前一个矩阵的列数必须要等于后一个矩阵的行数,即a矩阵乘以b矩阵,a矩阵的列数要等于b矩阵的行数才可以进行乘法运算。矩阵相乘的具体运算是若一个m行n列的矩阵a和一个n行p列的矩阵相乘,可以得到一个m行p列的矩阵c,其中矩阵c中第ij个元素的值为矩阵a中的第i行的数值与矩阵b中第j行的数值一对应相乘后的和。例如:需要提醒的是矩阵相乘是不可以互换的,即。4) 单位矩阵有一种方矩阵它的主对角线上元素的值为1,其余位置的值为0,这种矩阵就是单位矩阵。例如下面是33的单位矩阵。任何矩阵与单位矩阵相乘

25、都不改变该矩阵。5) 平移矩阵平移矩阵就是能实现物体平移效果,例如需要平移一个物体,x轴方向上移动个单位,y轴方向移动个单位,z轴方向移动个单位,那么平移矩阵如下:然后把需要平移的矩阵与t(p)矩阵相乘,就得到了平移后的矩阵,也就是物体平移后的位置坐标。6) 旋转矩阵旋转矩阵就是能实现物体旋转效果,按照顺时针方向转动,一坐标原点为中心,他可以分别按照xyz轴旋转。例如某物体绕x轴旋转角度,另一物体绕y轴旋转角度,它们的旋转矩阵分别是:然后把需要旋转的矩阵与旋转矩阵相乘,就得到了旋转后的矩阵。7) 放缩矩阵放缩矩阵就是能实现物体模型进行放大缩小的效果,可以分别对物体的长、宽和高进行放缩,即按照x

26、yz轴方向进行放缩。例如某物体沿xyz轴方向分别放缩、倍,它的放缩矩阵如下:然后把需要放缩的矩阵与放缩矩阵相乘,就得到了放缩后的矩阵。2.2 visual c+简介2.2.1 visual c+优势c语言是一种高效率的计算机程序设计语言,而visual c+则是在它的基础上开发出的一套功能强大的程序设计工具。对于追求运行速度与表现效果的游戏程序,visual c+可以说是最佳的开发工具。第一,visual c+具有优异的运行速度。visual c+没有像visual basic那样有许多现成的对象和函数可以使用。visual basic中的现成的对象和函数,都是为了让visual basic程

27、序员们能够更轻松地开发程序而事先准备的,但这些功能完整的对象和函数在执行时会占用很多计算机资源,降低程序的运行效率。而visual c+因为没有这些通用的对象和函数,所以开发出的程序运行速度非常快。第二,visual c+可以直接访问内存。直接访问内存的最大好处就是速度快。为什么呢?其实在任何程序中都必须读取内存,只不过其他程序设计语言都为了防止发生内存读写不当而使用间接管理内存的方式,这样虽然安全,但却比较耗费时间。不过,直接读写内存的方式可以说是一把双刃剑,使用得当将大大提高程序的运行速度,使用不当将会造成程序运行出错或者计算机死机。第三,使用windows api。在visual c+中

28、使用windows api是相当容易的,只要在项目中设定所要使用的函数库并引用正确的头文件,就可以使用windowsapi中的函数与数据类型。在visual c+开发环境之下,可以用具有完整面向对象属性的c语言作为程序设计的主体,而且可以很容易地使用mfc,windows api,甚至整合其他技术(如directx和opengl)来开发游戏程序。因此,在未来的一段时间之内,visual c+仍然会是开发程序的最佳工具。2.2.2 与其他函数库的结合但是,单纯使用visual c+是无法设计出优美而且高效的游戏的,目前的游戏开发中都运用了directx来加强多媒体功能,或者是使用opengl来制

29、作更流畅的3d效果。direetx是微软推出的一套在windows中开发多媒体程序的api函数集。它包含了很多用来处理2d与3d影像,声音,网络以及控制各种输入输出设备的组件,可以说是开发游戏程序时不可或缺的工具包。opengl是显卡硬件厂商共同制定出的一套绘图函数库,它可以说是专门为开发3d游戏程序而设计的,使用它的api函数可以制作出更为流畅的3d动画与场景。本文主要讲述2d游戏的制作,所以重点介绍directx。2.3 核心技术简介2.3.1 directx简介windows操作系统下的gdi(graphics device interface,图形设备接口)减轻了图形编程的很多工作。利

30、用gdi编程,可以不考虑硬件的具体特性,直接调用windowsapi中的图形处理函数处理当前dc即可。这虽然很方便,但却是以降低处理速度为代价的。因为它不能直接访问硬件,需要通过操作系统间接访问,这就相当与转了个大弯才到达目的地,很浪费时间。这对要求速度的游戏程序来说,是远远不够的。这是看到了gdi在游戏设计中的不足,microsoft为迎合市场需求,让游戏可以在windows下顺畅的运行,推出了多媒体开发技术directx。它不但可以像windows gdi一样方便的使用,又可以直接对硬件抽象层(hal)进行操作,速度比gdi快得多。directx一经问世就受到开发商的大力支持,迅速成为游戏

31、和多媒体开发市场上的工业标准1。directx的内容包括了directdraw、direct3d、directsound、directmusic、directplay、directinput和directsetup等部分,它们分别主要应用在图形程序、声音程序等方面。directx结构及其与win 32的关系如图2.1所示2。windows win32 应用程序directdrawdirect3ddirectsounddirectmusicdirectinputdirectplaydirectsetupgdiwindow ddi设备驱动接口hel硬件模拟层hal硬件抽象层硬件:视频、音频、输入d

32、irectx与gdi的接口directx子系统图2.1 directx结构及其与win 32的关系下面分别介绍directx的各个部分。1) directdrawdirectdraw是一种directxapi。它允许用户直接地操作显存,支持硬件覆盖、内存与显存反转。directdraw在提供这些功能的同时并支持基于microsoftwindows的应用程序和设备驱动。directdraw作为一种软件接口,支持windows的gdi(图像设备接口),并提供直接操作显示设备的功能。它提供了与设备无关的游戏、windows子系统等软件开发方式。它还能够支持许多种显示硬件,包括从简单的svga显示器到

33、高级硬件性能(支持图像剪切、延伸和非rgb颜色格式)。接口的设计使应用程序能够知道所使用硬件的特性,从而可以支持它们的硬件加速功能。2) direct3ddirect3d提供了与硬件无关的的3d视频硬件操作方式。可以在两种模式(立即模式和保留模式)中选择其中之一使用。立即模式较保留模式是一个低层的3d api,后者建构于前者之上。立即模式适合于开发高品质的多媒体应用程序,它在底层与加速硬件进行通讯。保留模式应用于对3d场景进行实时的操纵。3) directsoundmicrosoft directsound的api是directx平台软件开发工具程序员指南的声音组件。directsound提供

34、了硬件加速、对声音设备的直接操作。在提供这些功能的同时,它还保持了与当前设备驱动的兼容性。directsound是通过“硬件抽象层(hai)”来操作声音硬件的,这是一个由声音设备驱动来实现的接口。hal提供了以下功能:u 要求和释放对声音硬件的控制;u 描述声音硬件的特性;u 在硬件允许的条件下实现特定的操作;u 在硬件不允许的时候报告操作失败。directsound能够自动地利用硬件加速,包括硬件混音和硬件声音缓冲。应用程序无须查询硬件和程序特性,而可以在运行期部分查询directsound来获得对声音设备特性的充分描述,然后根据各个特性的存在或缺少来使用不同的方法进行优化。还可以指定接受硬

35、件加速的声音缓冲区。4) directmusicdirectmusic与dkectsound在用途上可以说是等同的。这里不再重复说明。5) directinputdirectinput用以支持包括鼠标、键盘和游戏杆等在内的输入设备,甚至还有力度反馈的高级输入/输出设备。directinput对象由输入设备提供数据。每一个相应设备都有所谓“对象实例”,即个别的控件,如按键、按纽和游戏杆的轴向等。键盘上的每一个按键都可以作为键盘对象的一个对象实例。即使程序在后台运行,direconput也能够对输入设备做出响应。6) directplaydirectplay的主要作用在于使应用程序间通讯方式得以简

36、单化。directplay的技术不仅提供了一个方案,实现了通讯与传送协议及在线服务的无关性,而且还实现了与传输服务器和游戏服务器的无关性。万一所基于的网络不支持某一方式,directplay包含了必要的代码来仿效它。directplay的service provider结构使应用程序与网络隔绝开来。应用程序通过查询directplay来获得所基于网络功能特性(例如延迟、带宽等),从而相应地调整通讯方式。使用directplay的第一步是选择使用哪一种service provider,它决定了将用于通讯的网络或协议。协议可以是遍布internet的tcpip、局域网中的ipx或两台计算机间的连接

37、电缆。directplay提供了两种很有用的连接管理方式:u idirectplay3:enumconnections列举了应用程序可以获得的所有连接;u idirectplay3:initializeconnection初始化一种特定的连接。7) directsetupdirectsetup控制directx自动安装,只有正确安装了directx后,它才能正常使用。2.3.2 directx 重要知识点(1) 表面:direct3d中为了对2d图像数据的进行存储,创建一个像素矩阵,即为表面,它的存储形式为线性数组。(2) 多重采样:电脑的画面是由像素点构成的,为了保证画面的平滑效果,采用颜色

38、深度等信息对图元进行反走样处理。这个技术很多时候都是被禁用的,因为它会明显的降低程序运行速度。(3) 像素格式:也就是每个像素颜色位数分配方式或者是否包含透明度,在创建物体表盒和纹理时,需要定义像素格式。(4) 页面置换:在动画显示的过程中,为了保证画面的平滑和流畅,选择用后备缓存和前台屏幕转换的方法。当应用程序接收到画面移动命令,先清除后备缓存,然后在后备缓存上渲染的物体,最后提交给前台屏幕,显示结果。(5) 深度缓存:场景中物体之间相互遮挡,要判断它们之间前后关系还有那些部分会被遮挡等就需要知道它们像素点的深度信息,这种计算场景物体像素点深度信息并进行判断就称为深度缓存。在场景中,根据与虚

39、拟摄像机的距离来判读像素的深度,越近的会遮挡住后方较远的像素3。2.4 本章小结本章首先对游戏开发的数学基础进行介绍,包括向量及其运算,矩阵及其运算。然后介绍了游戏开发平台visual c+,说明了visual c+的优点与好处。最后,重点介绍了游戏开发的核心技术directx。对directx的结构及功能做了详细的阐述。东北大学本科毕业设计(论文) 第3章 需求分析第3章 需求分析3.1 游戏规则3.1.1 棋盘和小球的表示游戏的棋盘最大支持12*11个方格。游戏的小球分为普通小球,一次性小球,前进小球,静止小球,定时小球,尖刺小球,其中每种小球的功能不同。u 普通小球:跳过一个小球后,到达

40、另一边的空闲格子;u 一次性小球:在跳过一个小球后会自爆;.u 前进小球:跳过一个小球后,到达另一边的任意一个空闲格子;u 静止小球:固定在原地,不能移动;u 定时小球:带有定时爆炸的普通小球;u 尖刺小球:能够摧毁它的路径上的所有物体,自动移动并且不能被选择。3.1.2 游戏规则说明跳跳球是一款充满策略性的解谜游戏,源于法国18世纪宫廷贵族间的独立钻石棋。法国的独立钻石棋,匈牙利的魔方,以及中国的华容道,被国外专家并称为智力游戏界的三大不可思议迷题。游戏规则说明如下:(1) 鼠标单击选中小球,如果小球可以跳,那么下一步能走的区域将被标记出来;(2) 单击任意标记区域可将球体移至该处,中间跳过

41、的球被消除;(3) 小球只能以跳跃的方式移动且只能水平或垂直移动,不能斜跳;(4) 棋盘上的小球可以跳过相邻的一颗小球,不能一次跳过两颗或以上的棋子;(5) 当小球跳跃的时候,不能超过棋盘设定的边界;(6) 一次性小球在跳至标记区域时,自己与被跳过的小球同时消失;(7) 前进小球的标记区域是相邻小球后面的所有空闲格子;(8) 静止小球是不可选择的,只有利用别的小球把它消除;(9) 定时小球是可以选择移动的,不过在超过设定时间后将自爆;(10) 尖刺小球是关卡提前设定的,能够摧毁它的路径上的所有物体,自动移动并且不能被选择但是可以被消除;(11) 游戏时间设定为60秒,如果超过时间,那么game

42、 over;(12) 最后若能够只剩下一颗小球,那么你将获得胜利。3.2 需求分析3.2.1 游戏引擎分析在游戏设计开发中,游戏引擎的开发是最为重要的一环,它的发展很大程度上提高了游戏的开发效率。游戏引擎的好与坏,执行速度的快与慢,直接影响到游戏的可玩性和现实的可操作性,对游戏技术的品质有非常大的影响和作用,主要表现在以下几个方面:(1) 在图形图像表现上。优秀的游戏引擎,将可最大程度的发挥游戏的策划思想,对于表现大规模场景,真实渲染游戏场景物件,华丽表现游戏视觉特效,将起着最直接的作用。(2) 在游戏程序运行的高效低耗性上。因为2d游戏对pc系统资源消耗较大,所以如何在游戏引擎中有效地设计渲

43、染方法,有效地进行资源管理,将对游戏运行效率起着巨大的影响。优秀的游戏引擎,在真实高效表现游戏场景的同时,又达到了资源消耗的最优化。(3) 在游戏程序的稳定性、健壮性及多平台移植性方面,一个稳定的游戏引擎,将起着至关重要的作用。游戏引擎的处理过程是这样的:首先设置游戏的运行环境,对图形背景、精灵物体、动画属性、层次关系和位置坐标等进行初始化。然后对用户的输入进行检测以便根据玩家的意图来改变游戏的运行状态,并且通过游戏的管理控制界面对用户的输入请求进行处理。处理完后通过游戏的屏幕渲染机制更新屏幕的显示。当退出游戏时,清除初始化时载入的所有图形、声音以及各种数据,并且释放内存4。处理过程如图3.1

44、所示:3.2.2 游戏方案分析回溯算法是所有搜索算法中最为基本的一种算法。优先搜索法按条件向前搜索以达到目的但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回上一步重新选择,这种走不通退回再走的技术称为回溯法。其采用了一种“走不通就掉头”思想作为其控制结构,其相当于采用了先根遍历的方法来构造解答树,可用于找解或所有解以及最优解。开始游戏游戏结束清理退出游戏游戏环境初始化处理用户响应更新屏幕屏幕渲染机制是否图3.1 游戏引擎处理流程图回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:不是按某种固定的计算方法来设计算法,而是通过尝试和纠正错误来寻找答案。回溯算法的

45、一个重要特性是问题的解空间通常在搜索问题的解的过程中动态产生的。它对空间的消耗较少,当其与分枝定界法一起使用时,对于所求解在解答树中层次较深的问题有较好的效果。宽度优先搜索算法是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。dijkstra单源最短路径算法和prim最小生成树算法都采用了和宽度优先搜索类似的思想。如果搜索是以接近起始节点的程度依次扩展节点的,那么这种搜索算法就叫做宽度优先搜索,这种搜索是逐层进行的,在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点。显而易见,宽度优先搜索方法能够保证在搜索树中找到一条通向目标节点的最短路径,这棵搜索树提供了所有存在的路

46、径,如果没有路径存在,那么对有限图来说,我们就说该法失败退出,对于无限图来说,则永远不会终止。另一种盲目搜索叫做深度优先搜索。正如算法名称那样,深度优先搜索所遵循的搜索策略是尽可能深的搜索图。在深度优先搜索中,对于最新发现的顶点,如果它还有以此为起点而未探测到的边,就沿此边继续探下去。当结点v的所有边都己被探寻过,搜索将回溯到发现结点v有那条边的始结点。这一过程一直到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被发现为止。和宽度优先搜索类似,每当扫描己发现结点u的邻接表从而发现新结点v时,深度优搜索将置v的先

47、辈域为u。和宽度优先搜索不同的是,前者的先辈子图形成一棵树,后者产生的先辈子图可以由几棵树组成,因为搜索可能由多个源顶点开始重复进行5。宽度优先搜索,占内存多,能找到最优解,必须遍历所有分枝。深度优先搜索,占内存少,能找到最优解(一定条件下),但能很快找到接近解(优点),可能不必遍历所有分枝(也就是速度快)。 根据本游戏的需求,深度优先搜索是比较好的方案。3.3 本章小结本章首先对游戏规则进行分析,描述了棋盘和不同小球的表示,详细介绍了游戏的规则。然后介绍了游戏引擎处理流程,初步描述了游戏引擎功能需求分析。最后比较了回溯法,宽度优先搜索以及深度优先搜索,选择深度优先搜索为本游戏开发的算法基础。

48、东北大学本科毕业设计(论文) 第4章 游戏设计第4章 游戏设计4.1 游戏引擎4.1.1 gui控件的设计要创建精彩的游戏,必须要有适合游戏场景的图形来丰富游戏的可玩性。虽然原始的windows包含了很多与用户交互的优秀的控件,如按钮、标签和下拉列表框等,但是它们都是基于标准化窗口平台的,如果直接应用于游戏之中,会让游戏显得过于死板生硬,既不谐调也不美观。因此在游戏图形引擎中需要创建一套适应于游戏应用开发的自定义可视化控件和菜单。自定义的可视化控件和菜单不仅使游戏外观变得更加精美,而且可以节省游戏的开发时间,提高开发效率。开发游戏的技术人员可以在此基础之上方便的生成自己所需的菜单和控件系统,来

49、丰富游戏中的视觉效果。(1) 创建gui控件的优点具体来说游戏中创建自定义可视化控件和菜单的优点是:u 自定义的组件管理可以给组件比原始的windows更精确的布局。游戏是高度可视化的,如果能够精确指定摆放组件的(x,y)坐标,就可以对场景更好的控制。u 自定义组件便于给游戏自己定义的观感,基于视觉直观的效果会使其在游戏中应用变得简单方便。u 可以很容易模仿和扩充原始windows组件的功能。(2) gui控件功能分析gui控件模块能够实现类似游戏用户界面。通过在游戏程序中创建界面对象,然后再响应它的命令。就像使用ide中的各种控件一样,通过设置每个控件的大小、位置、颜色等信息,就可以获得一个

50、完善的游戏界面。使用这种方式只需响应控件的命令,能够减少代码的编写量,大大减少开发的工作强度。界面控件模块提供的对象界面系统整合了输入输出控制系统,它实现封装了一套通用的界面控件。控件都有一套默认的实现方法,同时可以通过使用不同的图形资源来配置不同外观的界面6。4.1.2 基本图形图像绘制的设计基本图形图像绘制主要是通过gge:ggeresmanager类和gge:ggeimage类实现对图形图像的操作、调入以及绘制。gge:ggeresmanager类的功能是实现对纹理,音乐,精灵,动画,图像等资源的管理。(1) 图形操作流程目前的电脑游戏都是由大量的图形构成的。将一幅图形在屏幕上显示的方法

51、可分为将指定格式的图形数据调入到指定内存中,再将指定内存中的数据拷贝到显示内存中。图形操作基本遵循以下模式:首先建立图形环境,然后执行图形处理处理完成后释放图形环境。基本流程如图4.1所示。开始结束建立一个与当前显示区兼容的暂存设备场景建立设备相关位图与暂存设备场景的关联取当前显示区句柄建立一个与当前显示区兼容的设备相关位图取当前显示区句柄将当前显示区的内容拷贝到暂存设备场景释放图形环境图4.1 图形操作流程图(2) 调入位图图像文件读取位图文件使用gge:ggeresmanager类来实现,getimage函数返回一幅图像,可以使用gif、jpeg或png图像格式之一来调图图像。调入位图图像

52、文件的流程如图4.2所示。调入图形文件到设备相关位图开始删除上次的设备相关位图成功获取调入的位图参数返回错误结束否是图4.2 调入位图图像文件流程图(3) 绘制位图图像并显示到屏幕绘制位图图像使用gge:ggeimage类的getrect()函数来实现,它绘制指定图像中已缩放到适合指定矩形内部的图像。图像绘制在此图形上下文坐标空间的指定矩形内部,并且如果需要还可以进行缩放。透明像素将不影响该处已存在的像素7。函数如下:virtual void gge:ggeimage:getrect(float* x,float*y,float*width,float*height) 参数: x x坐标 y

53、y坐标 width 宽度 height 高度 4.1.3 动画贴图的设计动画贴图是图形渲染的重要组成部分,在几乎所有游戏中,图形的核心都是动画。如果没有动画,游戏将变成静止的,整个游戏就会变的异常死板,加入了动画会使游戏增添丰富多彩的效果,更加引人入胜。目前的计算机动画是在传统动画的基础上,采用计算机图形图像技术而迅速发展起来的一门高新技术。计算机动画是指用绘制程序生成一系列的景物画面,其中当前帧画面是对前一帧画面的部分修改。由于人眼的视觉灵敏度很低,很容易产生动画的错觉,因此会将这些变化误认为是在移动。应用程序以一定的规律快速连续绘制并显示一系列有关联的静止图像就产生了电脑动画。一般来说,计

54、算机动画中的运动包括景物的位置、方向、大小和形状的变化,还有景物表面纹理和色彩的变化等8。根据2d动画移动和受控制的交互程度不同,可以将动画贴图划分为子画面动画、帧动画、精灵行走动画三个个部分。1) 子画面动画(1) 子画面动画原理子画面动画是独立于背景移动的图形对象。图形对象是一个独立于动画图像背景的实体。每个图形对象都可以称为一个子画面,并且有一个随时间变化的位置,这样子画面就有了一个确定其位置如何随时间变化的速度。在实际游戏中子画面通常是基于图像的,各子画面都对应于一个用来在屏幕上绘制子画面的图像,并赋予图像一定的属性。在2d游戏图形引擎中由sprite类具体生成子画面。sprite类中

55、定义了子画面的特定属性,包括位置、纹理、包围盒矩形、深度系数。gge:sprite_create (ggetexture*texture,float x,float y,float width,float height)参数: texture 精灵使用的纹理 x x坐标 y y坐标 width 宽度 height 高度 ggesprite:getboundingbox (ggerect *rect, float x,float y)参数: rect 保存包围盒矩形至该参数 x 包围盒左上角x坐标 y 包围盒左上角y坐标 gge:ggesprite:getz (int i = 0)参数: i 顶点序号 位置:子画面所处于游戏中的具体坐标及涉及子画面出现在游戏屏幕上的轮廓。包括处理子画面位置时需要考虑到的宽度和高度等信息。包围盒矩形:用于控制允许子画面移动的区域。深度系数:子画面在场景中的视景深度系数。(2) 子页面管理器 由于子画面动画所具有特定的属性,因此在游戏中生成子画面时需要对其进行管理。子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论