基于DirectX的小游戏的设计与实现.docx

上传人:b****4 文档编号:12264825 上传时间:2023-04-17 格式:DOCX 页数:41 大小:2.01MB
下载 相关 举报
基于DirectX的小游戏的设计与实现.docx_第1页
第1页 / 共41页
基于DirectX的小游戏的设计与实现.docx_第2页
第2页 / 共41页
基于DirectX的小游戏的设计与实现.docx_第3页
第3页 / 共41页
基于DirectX的小游戏的设计与实现.docx_第4页
第4页 / 共41页
基于DirectX的小游戏的设计与实现.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

基于DirectX的小游戏的设计与实现.docx

《基于DirectX的小游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于DirectX的小游戏的设计与实现.docx(41页珍藏版)》请在冰豆网上搜索。

基于DirectX的小游戏的设计与实现.docx

基于DirectX的小游戏的设计与实现

四川师范大学本科毕业设计

 

基于DirectX的小游戏的设计与实现

 

学生姓名

学号

2008102101

所在系

计算机科学与技术系

专业名称

计算机科学与技术

班级

2008级计科(网络)1班

指导教师

 

 

四川师范大学

二○一二年五月

基于DirectX的小游戏

学生:

指导教师:

内容摘要:

开发一款好的游戏成为了目前IT界关注的主题,目前游戏产业属欧美,韩国做的最好,人们对国产游戏产生了怀疑,它们为什么能开发出好的游戏来了,究竟怎么设计一款游戏,怎么制作开发一款游戏,成为了一个热门话题,所以作为对游戏感兴趣的我,利用微软推出的DirectX图形开发库来进行DirectX的D3D打斗小游戏的设计与实现,整个过程重点阐述了DirectX游戏开发过程中所有的重要环节,包括了3D游戏制作过程中的3D建模,碰撞检测,打斗机制,场景渲染,智能NPC等等技术,从而实现逼真的场景渲染,英雄角色和NPC的打斗的一个小游戏。

玩家可以通过鼠标和键盘进行游戏,有很高的可玩性。

同时也向大家揭开3D游戏的面纱,使大家了解3D游戏的简单开发过程,消除游戏制作的神秘感,让每个人都了解3D游戏开发,使每个人都能开发3D游戏,并对实现D3D游戏技术难点和关键手段作了详细的分析和研究,提出了系统设计方案,明确了本课题实现的功能和目标。

关键词:

DirectX碰撞检测打斗机制智能NPC

 

BasedontheDirectXsmallgame

Abstract:

DevelopagoodgamewillbecomethemainsubjectofthecurrentITsector,thebestofthecurrentgameindustryisEuropeandtheUnitedStates,SouthKorea,peopleinthedomesticgamehaddoubts.Whytheydevelopsosuchgoodgame,howtodesignagame,howmakingagamedevelopmenthasbecomeahottopic,asformyinterestofgameidescribesthedesignandachievementprocessofafightinggamebasedtheD3DDirectXwhichMicrosoftrelease,itcontainalloftheimportantparts,includingthe3Dgameproductionprocessof3Dmodeling,collisiondetection,fightingmechanism,scenerendering,smartNPCandothertechnologies,toachieverealisticrendering,heroiccharactersandNPC'sfightinginthegame.playerscanplaygamesbyusingmouseandkeyboard,haveahighplayability.Anditopentheveilof3Dgame,sothatwecanunderstandthesimple3Dgamedevelopmentprocess,eliminatethemysteryofgameproduction,sothateveryonecandevelop3Dgames,andD3Dgamestoachievekeytechnicalproblemsandmeansofdetailedanalysisandresearch,andsystemdesign,specificallythefunctionofthistaskandgoalstoachieve.

Keywords:

DirectXCollisiondetectionFightingmechanismSmartNPC

 

DirectX打斗小游戏设计与实现

前言

随着多媒体技术、Internet技术的飞速发展,生活水平的提高,人们开始追求精神生活的享受,近年来游戏的快速发展,迎合了人们的这一需求,可以说游戏给人们现实生活中感受不到的东西,人们的方方面面都离不开游戏,从单机游戏发展到网络游戏,人们对游戏软件的需求日益扩大,将是21世纪具有广阔前景的一门产业。

从目前来看,不管是在游戏开发的技术上还是在设计思想方面,我国和其他发达国家在游戏开发上还有很大的差距。

这主要表现在两个方面:

新闻出版总署近期查处了一批低俗网游,其中充斥着暴力、色情、赌博等不健康内容,令人触目惊心。

关闭了45款未经审批的境外网络游戏;查处了26款存在低俗内容的网络游戏。

警告了27家网络游戏企业,并勒令其限期整改;还有10家网络游戏企业负责人被诫勉谈话。

当《赤壁》、《诛仙》、《超级舞者》等国产网游在海内外受欢迎时,大量的速成产品也在垂死挣扎很多公司在推出一款成功的产品之后,就会接着推出第二代、第三代,而游戏的内容是完全一样的。

另外还有很多厂商也会对成功的产品进行大规模的抄袭,换一个故事、换一个形象就拿去赚钱了。

当今游戏界谁人不知《魔兽世界》,《魔兽争霸》?

它的成功激发了欧美网络游戏开发商把自己的产品尽可能的让东方文化与西方文化相结合欲望。

中国玩家正把希望和兴趣转向欧美优秀的网络游戏产品,同时逐渐的适应和接受欧美网络游戏。

所以综上所述,我国在游戏开发领域还处于初级阶段当前,我们游戏产业发展的当务之急就是壮大自己的实力,国外游戏发展较为迅猛,它们掌握着先进的技术,从而开发出来的游戏从可玩性,可观赏性都比国产游戏要好的多。

在看下国内,虽然我国游戏产业这几年有良好的发展,但是相比国外,还有一定差距,这就驱使一些人对游戏开发产生了动力,可观未来的10年内,游戏产业必将掀起腥风血雨,我国的游戏开发产业将是一片大好趋势,这也就给我们这些程序员创造了良好的机会,游戏开发将是你最理智的选择。

目前比较流行的图形开发API是OpenGL和DirectX两种,OpenGL的前身是高端图形工作站厂商SGI在80年代所开发的IRISG,它在90年代初期成为了开源的标准。

当时微软在它的Windows95中发布了DirectX,将它作为OpenGL的竞争对手。

而在90年代末,微软曾经和SGI进行了Fahrenheit项目的开发,试图将两者结合起来,但是没有成功。

之后微软继续开发DirectX并与GPU厂商合作,留下OpenGL任其发展。

OpenGL之后几乎逐渐消失,直到90年代末Apple放弃了自己的QuickDraw3D,将OpenGL作为MacOSX的官方3D库。

Apple的系统给OpenGL程序带来了不少拥护者。

之后OpenGL正式被Linux采用,现在主流的游戏平台,包括PSP,PS3和Wii都支持该技术。

Microsoft推出的DirectX,是专门用于游戏开发和高性能多媒体应用软件开发的低层API。

DirectX是一种应用程序接口,它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。

这样说是不是有点不太明白,其实从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。

利用DirectX可以使程序员很容易的开发出具有高质量的游戏来。

随着DirectX不同版本的不断更新,它所包含的东西越来越多,开发出来的游戏也越来越好,总之DirectX包括DDraw,D3D,DInput,DSound等很多部分,而OpenGL仅为3D图形接口,OpenGL简单易学,另外OpenGL是跨平台的,最后DirectX的速度略快,OpenGL的稳定性更高,但表现的都不是很明显。

所以我们选择DirectX来开发这个格斗游戏,因为它包含内容比较全面。

而且就是编程方便,很容易控制程序,其中包含的函数也很容易调用。

本论文以开发一个基于DirectX的游戏作为切入点,讲述利用DirectX开发一个简单的3D游戏的基本步骤,其中包含的功能有:

3D模型驱动、3D骨骼模型驱动、角色控制器、地形生成器、绚丽的魔法效果、采用ATL(ActiveTemplateLibrary)编写的游戏脚本解析引擎等等。

本设计创建一个游戏场景,场景中的地形高低起伏,带有天空效果。

在场景中有两个角色,一个玩家角色,由用户控制,以实现一个简单的3D游戏。

本毕业设计是一个D3D打斗小游戏的设计与实现,其中包含了D3D游戏实现的重要环节,我所以选择这个题目,是想学习3D游戏的制作,锻炼自己的动手开发能力,增加自己的专业知识,同时这款游戏也有一定的发展空间,具有一定的实际意义。

1相关知识简介

DirectX是一种应用程序界面(api),可让以Windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。

下面我们来举个例子说明DirectX的作用:

以前我们玩Dos游戏的时候,都必须设置声卡的品牌,然后再设置它的irq、i/o、dma,其中有一项设置不对游戏就发不出声。

这部分设置不但让玩家伤透脑筋,对游戏设计者开说也非常头痛!

因为游戏设计者做游戏之初便需要把市面上所有声卡硬件数据都收集过来,然后根据不同的api来写不同的驱动程序。

现在我们玩Windows游戏,并不会做这些设置,因为DirectX提供了一个共同的应用程序界面,其实只要这个游戏是依照DirectX来开发的,不管你是什么显卡、声卡、统统都能玩,而且还能发挥比Dos下更佳的效果。

当然,前提是你的显卡、声卡的驱动程序也必须支持DirectX才行。

前面所说的只是提供一致的应用程序界面,其实要深入了解DirectX的各个组件你就会更加明白为什么游戏都要支持DirectX了。

DirectX由许多API组成,我只介绍几个重要的部分:

DirectDraw:

这是DirectX中非常重要的部分。

它担任图形处理的关键。

以往在实地址的Dos下设计游戏时,为了游戏速度的考虑,都让程序直接操作硬件。

而在Windows98这种保护模式下,所有图形的访问动作都必须gdi这个图形处理中心来处理,而不能直接对硬件下命令,而gdi对连续的画面处理不佳,游戏一旦通过gdi来处理的话,那么效果会差强人意。

▲DirectDraw就是来帮助windows程序也能直接进行硬件操作,更进一步还能加速显卡的速度,使游戏更为流畅。

另外DirectDraw还支持mmx、3dnow、agp等技术,还能处理多屏幕显示,让窗口环境的游戏更加多姿多采。

▲DirectSound这是用来处理声音的api,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。

前面所举的声卡兼容的例子,就是利用了DirectSound来解决的。

▲DirectInput这用来处理游戏的一些外围装置,例如游戏摇杆、gamepad、方向盘、vr手套、力反馈的各种设备等。

以往要在Dos下用方向盘来玩赛车游戏,就要先调整好irq、dma等各种设置。

而现在DirectInput则使这些设备与游戏配合良好,不需要做特别配置。

▲DirectPlay这是为了满足近来流行的网络游戏而开发的api,支持多通信协议,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。

▲Direct3D(D3D):

d3d的大名相信谁都听过吧!

对现在的游戏来说d3d实在是太重要了!

由于3d游戏的兴起,各大厂商纷纷推出3d加速卡为了避免重蹈声卡的覆辙,微软从Directx3.0后加入d3d这个api,让3d游戏有一个共同的开发标准。

这样当游戏再执行时若需要绘图时就会通过d3d向显卡驱动程序提出要求从而完成绘图。

▲DirectX已经经历了很多个版本下面如下:

目前最新版本是DirectX11,在微软刚刚发布的Windows7Beta版本中,一些已经安装使用的用户的发现了DirectX11已经包含其中了。

DirectX11作为3D图形接口,不仅支持未来的DX11硬件,还向下兼容当前的DirectX10和10.1硬件。

DirectX11增加了新的计算shader技术,可以允许GPU从事更多的通用计算工作,而不仅仅是3D运算,这可以鼓励开发人员更好地将GPU作为并行处理器使用。

DirectX1.0:

第一代的DirectX很不成功,推出时众多的硬件均不支持,当时基本都采用专业图形API-OpenGL,缺乏硬件的支持成了其流行的最大障碍。

DirectX1.0版本是第一个可以直接对硬件信息进行读取的程序,它提供了更为直接的读取图形硬件的性能(比如:

显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图像进行加速。

这时候的DirectX不包括现在所有的3D功能,还处于一个初级阶段。

DirectX2.0:

DirectX2.0在二维图形方面做了些改进,增加了一些动态效果,采用了Direct3D的技术。

这样DirectX2.0与DirectX1.0有了相当大的不同。

在DirectX2.0中,采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图像进行加速计算的。

DirectX2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。

从DirectX2.0开始,整个DirectX的设计架构雏形就已基本完成。

图1.1-1生化危机

DirectX3.0:

DirectX3.0的推出是在1997年最后一个版本的Windows95发布后不久,此时3D游戏开始深入人心,DirectX也逐渐得到软硬件厂商的认可,97年时应用程序接口标准共有三个,分别是专业的OpenGL接口,微软的DirectXD接口和3dfx公司的Glide接口。

而那时的3dfx公司是最为强大的显卡制造商,它的Glide接口自然也受到最广泛的应用,但随着3dfx公司被NVIDIA的收购、Voodoo显卡的衰败,Glide接口逐渐从人们眼中消失了。

图1.1-2Counter-Strike

DirectX8.0:

DirectX8.0的推出引发了一场显卡革命,它首次引入了像素渲染引擎(VertexShader)与顶点渲染引擎(PixelShader)的概念,反映在特效上就是动态光影效果。

同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。

这意味着程序员可通过它们实现3D场景构建的难度大大降低。

通过VS和PS的渲染,可以很容易的宁造出真实的水面动态波纹光影效果。

此时DirectX的权威地位终于建成,代表产品:

GeForce4Ti系列。

DirectX9.0:

2002年底,微软正式发布DirectX9.0,DirectX9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消。

全新的VertexShader(顶点着色引擎)编程将比以前复杂得多,新的VertexShader标准增加了流程控制,更多的常量,每个程序的着色指令增加到了1024条。

另外,DX9增加对浮点数据的处理功能,以前只能对整数进行处理,突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。

Visualstudio2005知识简介

开发工具我们选择Visualstudio2005集成开发环境。

VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。

VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。

另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。

该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集(API)。

目前,C++开发人员使用Microsoft基础类,而Java开发人员使用Windows基础类。

该框架统一了这些完全不同的模型,还为VisualBasic和JScript程序员提供了对类库的访问。

通过创建跨所有编程语言的公共API集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。

从JScript到C++的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。

2005年,微软发布了VisualStudio2005。

.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。

它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。

总体来说是一个非常庞大的软件,甚至包含代码测试功能。

这个版本的VisualStudio包含有众多版本,分别面向不同的开发角色。

同时还永久提供免费的VisualStudioExpress版本。

3DStudioMax知识简介

建模工具我们选择Autodesk公司开发的3DStudioMax,3DStudioMax,常简称为3dsMax或MAX,是Autodesk公司开发的基于PC系统的三维动画渲染和制作软件。

其前身是基于DOS操作系统的3DStudio系列软件,最新版本是2011。

在WindowsNT出现以前,工业级的CG制作被SGI图形工作站所垄断。

3DStudioMax+WindowsNT组合的出现一下子降低了CG制作的门槛,首选开始运用在电脑游戏中的动画制作,后更进一步开始参与影视片的特效制作,例如X战警II,最后的武士等。

在应用范围方面,广泛应用于广告、影视、工业设计、建筑设计、多媒体制作、游戏、辅助教学以及工程可视化等领域。

拥有强大功能的3DSMAX被广泛地应用于电视及娱乐业中,比如片头动画和视频游戏的制作,深深扎根于玩家心中的劳拉角色形象就是3DSMAX的杰作。

在影视特效方面也有一定的应用。

而在国内发展的相对比较成熟的建筑效果图和建筑动画制作中,3DSMAX的使用率更是占据了绝对的优势。

根据不同行业的应用特点对3DSMAX的掌握程度也有不同的要求,建筑方面的应用相对来说要局限性大一些,它只要求单帧的渲染效果和环境效果,只涉及到比较简单的动画;片头动画和视频游戏应用中动画占的比例很大,特别是视频游戏对角色动画的要求要高一些;影视特效方面的应用则把3DSMAX的功能发挥到了极至。

2总体设计

2.1概述

D3D打斗小游戏主要是利用微软的DirectXAPI来制作一款打斗小游戏,其中包括了游戏制作的重要过程,3D建模,碰撞检测,打斗机制等等。

2.2程序开发步骤

2.2.1三维建模

3Dsmax是一套用于制作三维动画的应用软件,其三维建模功能十分强大,所以利用3Dsmax能够建立很好的模型出来,并且生成的3DS文件是一种非常普遍的数据格式,用它建模不仅大大缩短建模时间而且提高建模效率.

本项目需要建立的模型有房子,树,木车子,小狗,英雄,NPC等。

2.2.2读取模型文件,并进行D3D编程

根据第一步用3dsmax进行建模,之后把3DS文件转换成.X格式的可以被DirectX识别的文件,之后程序载入这些模型,因为转换了格式所以图形都变成了一些顶点的集合,这样程序就能很好的对图形进行控制,以便于实现对模型的控制,从而达到所要达到的目的。

2.2.3设计程序所需的类

本程序包括16个类,他们都是D3D程序的基本类,比如,摄像机类,可以说它是说有3D项目中都有的类,因为你必须在场景中架设一个摄像机,这样才能实现观察场景,漫游场景的目的,还有控制类,对于有好的用户交互的程序时良好的,控制类提供了键盘响应方法,这样就可以让运行者很好的控制角色。

等等的这些都是D3D程序所必须包含的,所以很有研究价值。

本项目的类都具有一定联系,他们都是相互依赖的,下面是项目中的一些类关系图,从图中我们可以很清楚的看出它们之间具有很大的联系性:

 

图2.2.3-1系统类图

上图表现了程序的大体框架,表现为3层:

第一层:

首先是由CFloor,CSkyBox,CFog类来创建程序的场景框架,地面,天空,和雾效,

第二层:

这一层主要是CCamera类和碰撞检测类CmeshObject,摄像机类是程序中的重要类,因为它是想外部展现程序的窗口,我德项目中用的是CFreeCamera类,它是由CCamera类继承等到的,里面添加了很多新的功能,再有就是碰撞检测类,有了碰撞检测类,使程序变得更加智能。

最后一层就是:

游戏主类,由于第一层,第二层的成功创建,游戏基本环境就被模拟出来,而且是十分良好的,所以在这些基础上就可以最主角色类进行设计,里面有CRole,CNpc,CDirectinput类等等,这些类都是用来支持响应用户输入以及英雄的动作的,比如英雄的响应鼠标事件,英雄的碰撞检测等等。

2.2.4实现类,完成程序的编写

设计算法,实现类中的成员方法,以完成程序。

由于D3D为我们提供了很强大的API所以我们就可以真对想要达到的想过来实现类中的方法,比如可以用向量和矩阵之间的点乘和叉乘,来改变向量或者矩阵的状态,从而改变图形或者物体的状态,例如人物的行走等等。

2.3系统框图

系统框图是表现整个程序的架构图。

如图2.3-1所示:

 

图2.3-1系统框图

从图2.3-1可以看出,系统设计大致分为两大块。

第一:

场景的构建,场景构建主要就是模型的构建,其中就包括为例材质,比如要构成树木的图片,天空盒的图片。

还有就是些其他模型的构建,人物模型,道具模型等,这些需要准备的东西有了之后就可以建立我们的3D场景了。

第二:

角色的控制。

也就是和用户的交互,用户可以通过输入来控制人物模型已达到一定的目的。

这部分大致就是利用D3D为我们提供的函数接口,来实现对人物的控制,于此同时场景调度,碰撞检测,地形匹配也是很重要的,所以在这部分也要实现它们,有了它们我们的程序才会十分的智能,也就是人物不可能穿过建筑物,或者人物能够爬上山坡等等。

2.4功能需求

本程序的功能大体上就是在运行程序以后D3D可以成功载入我们的模型文件,成功渲染场景,之后用户能够通过鼠标和键盘的操作来控制英雄的移动,比如可以爬到山坡来俯瞰场景,漫游整个场景,可以去牵着小狗一同行走,还有就是能够和NPC进行对战,其中W,S,A,D是人物进行前,后,左,右移动,C是踢脚,F是出拳,鼠标左键改变摄像机的视角方向,鼠标右键改变人物的行走方向。

程序流程图如下:

 

图2.4-1系统流程图

3详细设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1