资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录一、引言.1二、游戏开发所需技术及DirectX简介.11DirectX概述.12开发平面游戏所需要的技术分析.23开发3D游戏所需要的技术分析3三、平面游戏LeapMan的实现.41 DirectDraw在二维图形处理方面的功能分析42LeapMan游戏中图片素材预置.73概要设计与算法分析. .74LeapMan的详细设计. .10四、三维游戏Pools Up实现.121三维模型的建立.122碰撞算法分析.133Direct3D在Pools Up中的应用15五、DirectInput与DirectSound在游戏开发中的应用19六、结束语.21致 谢.22参考文献.23摘要:当游戏作为一种很重要的娱乐手段被大众接受时,游戏产业就已经注定会带巨大的经济效益。文章针对目前市场上流行的Windows平台下的主导开发工具DirectX对游戏开发进行初步的探讨,以两个不同类型的游戏的实现过程来研究DirectDraw、Direct3D 在二维和三维图形处理方面的应用,同时也对DirectSound、DirectInput也进行了初步的研究。关键词:游戏开发 游戏开发包 DirectDraw Direct3D DirectMusic DirectInput 游戏引擎Application of DirectX In Game DevelopmentAbstract: When Game was accepted by many people as a very important enterainment means,Game-industry will bring to us enormous economic benefit indisputably. This dissertation aim to the most popular Operating System Windows and using the leading game development tools kits DirectX base it, discussing elementary how to develop a game.The emphases is the use of DirectDraw and Direct3D in graphics processing in two dimension and three dimension.and the simply introduce of DirectSound and DirectInput.Keywords: Game-Development DirectXSDK DirectDraw Direct3D DirectMusic DirectInput GameEngine一、引言从2001年开始,游戏作为一种产业已经渐渐的为中国大众接受,它所带来的经济效益和社会效益更是人们之前没有估计到的。目前电子竞技已经成为一个本科专业,游戏开发也是“863计划”中一个重要攻关方向。从事游戏行业对软件开发的人员来说有着很广阔的前景。游戏开发相对其他软件开发来说特别复杂,它需要解决图形显示、网络传输、声音处理、I/O控制等问题,这些一般都必须借助游戏开发包(游戏引擎)来实现。图形技术的解决方案有OpenGL和DirectX,OpenGL是三维图形的API标准,但DirectX除了能解决三维图形问题,而且支持2D图形、音效管理、网络互连、外设控制等,它作为一套完整的游戏开发包而成为事实上的行业标准。本文分别以一个二维游戏和一个三维游戏的开发过程来论述DirectX在游戏开发中的应用,向人们展示了各种商业游戏开发的基本方法和一般过程。二、游戏开发所需技术及DirectX简介1DirectX概述在Windows环境中,程序一般不能直接访问硬件,对硬件功能的利用一般都只能通过能用GDI和MCI等设备接口来实现。游戏对实时性要求特别高,这使得稍大规模的游戏都无法在Windows GDI环境下运行。为了解决这个问题,微软公司开发出了DirectX SDK。这是一些基于COM技术的组件。在调用DirectX函数或是Method的时候,其实是调用一些DirectX DLL,然后这些DLL再调用显卡厂商所写的驱动程序,也就是说真正驱动硬件的是厂商所写的驱动程序1,这就使得程序执行效率非常高,并且能极大可能的把硬件的全部功能都发挥起来。同时,DirectX也具有各种硬件仿真功能,如果调用的功能硬件加速器不支持,DirectX就利用自己的仿真加速器来实现同样的效果。这样用DirectX编出的游戏不再担心硬件功能不支持的问题了。DirectX的功能非常强大,它包括以下几个组件: DirectDraw直接操纵显卡,支持图像的移动、拉伸等各种功能 DirectSound提供低延时的声音混合系统,支持硬件加速 DirectPlay简化游戏使用通讯设备的入口,提供通讯功能的集成和多种通讯协议统一接口功能 Direct3D提供三维图形显示的支持 DirectInput兼容所有的输入外设,简化游戏控制方法 DirectSetup简化游戏安装过程,提供多用户登陆的方法以运行程序 DirectMusic支持MIDI音频,支持运行时动态作曲。DirectX到9.0版时,新的组件DirectGraphics已经代替了DirectDraw与Direct3D。其他组件的功能也进行了进一步的扩展。DirectX在开发游戏方面的强大功能将会在本文的论述中看到。目前它的应用范围已经远远的超过了游戏开发领域,Windows平台下音频与视频的处理大部分也是利用DirectX来实现的。相信今后DirectX的领域会更加广泛。2开发平面游戏所需要的技术DirectDraw技术主要是为了解决二维平面游戏的问题而引入的。在DirectDraw的诞生之前,每个游戏厂商都不得不写自己的游戏引擎,而这种游戏引擎过多的依赖机器硬件所提供的图形功能,而且往往会局限在某一种硬件平台,所以当时的游戏开发具有相当大的困难。但纵观各种2D游戏引擎的功能,基本上都有如下几点5: 直接移动内存中的数据(一般来说是移动图片)。即可以把一张已经有的图片从一个内存块移动到另外一个地方,在游戏中看到的效果就是图片由一个位置移动到了另外的一个位置 指定一张图片中的某一部分显示出来。很多时候游戏中都会出现一些图形相同的地方,例如两位游戏角色的衣服,如果能指定图片的某一部分显示在指定的位置,不仅可以提高开发的灵活性,还可以使游戏所使用的图片大大减少,这对提高游戏的执行效率是非常关键的。 支持ColorKey效果。多张图片构成一个比较大的场景时,可以指定透明色,图片中不想要的颜色不显示出来,给人的感觉就是不同的角色之间的无缝接触。 控制显存中的主显示区域(也叫可见区域)。在游戏中需要高频率的切换场景时,如果通过不断的调入内存、显示、调出内存这样一个反复的过程来切换图片,效率将会变得很低。如果能够控制显卡中显示出来的数据区域,切换时只更换主显存基址即实现了动画。有了这种功能后游戏中即使再高频的切换角色也不会对画面的流畅性造成任何影响。 支持多缓冲技术。充分发挥计算机的并行处理能力,在显示器输出图像的同时,把下一帧将要显示的图形拷贝到在另个显存区域处理好,显示的时候只要改变显卡的显示区域基址即可。 支持字体显示、调色板技术和绘图功能。如果要更好的实现游戏的效果,游戏开发包最好能够支持下列图形功能: 支持半透明效果。 支持页面覆盖,即控制某一图形始终显示在最前方。 支持多种图形格式。1、 开发3D游戏所需要的技术要开发一个三维游戏,首先要解决的问题就是构造一个虚拟的三维世界,给玩家的感觉如置身在现实世界一样。当然,用户能看到的就只有一个显示平面,三维效果就是能够观察到三维世界中的不同的侧面。在三维场景显示出来之前需将三维世界中某一个观察点看到的内容投影到显存当中。能够开发一个三维游戏的游戏开发包都具有以下功能9: 构造虚拟的三维世界。这是3D的前提,实际上就是在计算机中建立一个三维坐标系。三维世界中有每一个角色都有方向与位置的概念,这些都可以通过一个坐标系就可以确定。 支持平移、旋转、缩放功能。这些功能都是基于坐标变换14的。 支持光照与投影。用算法来模拟现实生活中明暗效果,支持点光源,平行光和聚光灯,支持光线跟踪与阴影 支持材质和贴图。现实中一个物体有其自身的表现状态,包括颜色,反光强度和表面的图案,在计算机的三维世界中颜色与反光强度的需要有材质的支持,而物理表面的图案则需要贴图功能来支持。 支持观察点与观察角度。ViewPort决定程序显示出三维场景的哪一部分,即看到计算机中的哪些场景。 支持渲染功能。把观察点视线范围内的场景投影到计算机屏幕。 支持外部模型。每一个三维游戏都需要很多物体,这里所述的物体不一定是玩家,它还包括场景中的房屋,树木等三维物体,当物体太多的时候,每个角色不可能都靠软件设计师计算得到,如果那样的话工作量太大了。目前有很多的三维图形软件像3DSMAX、Maya等都可以直接建立三维模型,只有游戏开发包支持把外部的模型直接导入到程序中,在适当的时候把角色调出来显示,这样才可能开发大型的游戏。三、平面游戏LeapMan的实现1DirectDraw在二维图形处理方面的功能分析4DirectDraw的图形处理功能非常强大,它可以评估视频硬件的能力, 只要可能,它就会对其某一特性加以利用。例如,如果你的显卡支持硬件 Blit, DirectDraw 就会将位图映射这一操作分派给显卡来完成,极大的提升运行速度。如果软件中调用的功能硬件功能不支持时, DirectDraw 便利用硬件仿真层(HEL)来完成请求的这项操作。DirectDraw的功能还包括:支持多后台缓存(back buffers)的换页(page flipping)操作;支持窗口和全屏模式应用程序的裁剪;支持 3-D Z 缓存;支持带 Z 轴方向的硬件辅助覆盖;支持可访问图象缩放(stretching)操作;支持同时访问标准的和增强的显示设备内存区,包括动态改变调色板,独占访问硬件,和分辨率切换等等。这里以一个很简单的动画时钟来说明这种技术。图1 背景图图1和图2是将要使用的两张图片,图1是背景图,图2为前景图,利用图片局部显示功能,在程序中分别取出2、0、3、7、4、6、:、等数据块 (如图3)图2 前景图图3 程序定位图图4 程序拼图效果当然,这里所谓的“取”并不是把图片给分割出来,而是指程序在图片中定位,显示的时候只显示其中的一部分。程序最终显示出的程序拼图效果如图4。需要强调的是,游戏中所用到的素材图片只有图1和图2,所有的游戏都是利用这种原理,把基本的图片在一起组合而构成大规模的场景。在一个游戏程序中,一般来讲将会
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号