【PHP开源代码栏目提醒】:网学会员为需要PHP开源代码的朋友们搜集整理了射击类三维游戏引擎的研究与开发[专业:计算机应用技术] - 毕业设计相关资料,希望对各位网友有所帮助!
华侨大学硕士学位
论文射击类三维游戏引擎的研究与开发姓名石磊申请学位级别硕士专业计算机应用技术指导教师陈锻生20061201知识水坝
论文论文摘要 II
论文摘要 游戏引擎是最近十年出现的新名词也是当前计算机应用技术领域倍受关注的一个研究方向。
游戏引擎是同一类游戏中经过规范化的可复用部件它有机结合了多种子引擎包括图形、声音、脚本、数据库、网络、设备等模块开发者可以使用这些模块定制游戏。
本课题的目标是针对射击类三维游戏提取一套游戏引擎并使之具有实用价值。
本文中首先阐述了游戏和引擎的基本概念以及相互关系然后介绍了设计中所使用的几种开发工具OpenGL、Fmod、MySQL、SOCKET、XML和STL并以程序类的方式给出了它们的使用方式接下来利用面向对象技术对射击类三维游戏进行分析和设计得到一个具有通用性的体系结构随后对该体系结构进行划分和组织提取出资源、界面、设备、实体、辅助、工具六个包和一个程序框架即Transformer游戏引擎最后运用该引擎开发了一款低空虚拟战场系统LVBS验证了引擎各个模块的实用性。
Transformer具有以下四个特性功能通用配置方便具备改进和扩展能力效果与速度相平衡。
实验结果表明Transformer稳定高效完全适用于射击类三维游戏的开发。
关键词: 游戏引擎虚拟环境系统仿真网络游戏知识水坝
论文ABSTRACT IABSTRACT Game engine is a new term in the latest ten years and also a hotspot of current computer application technology. Game engine is the reusable part of a class of game which has been regularized it contains many sub-engines including graphics sound script database network device and other modules users can use these components to customize game. The objective of this research work is to devolope a game engine for three dimensional shooting games. This paper firstly describes the concepts of game and engine and explains their relationship Then introduces some tools including OpenGL Fmod MySQL SOCKET XML and STL and provides some class code as their usage. Then it uses the object-oriented technology to analyze and design shooting game and gets a general infrastruct. Then it organizes this infrastruct and extracts successfully the Transformer Engine which includes Resource Interface Device Entity Utility and Tool six packages and a framework. At last it uses Transformer to develop a game of L
VBS and proves the engine’s praticability. Transformer has three features as follows: Reusable functions and convinient configuration Easiness for ABSTRACT IIimprovement and expandedness Well balance between effect and speed. The experiment result shows that this engine works stably and effectively which means it is totally fit to be used in three dimensional shooting game’s development. Key
words: Game Engine Virtual Environment System Simulation On-line Game 第一章 绪论 1第一章 绪论 1.1 游戏引擎的研究现状 科学计算可视化、计算机动画和虚拟现实是近年来
计算机图形学领域的三大热门研究方向而电子游戏作为这些技术在商业领域上的应用更是蓬勃发展其可复用的部件——游戏引擎——已经吸引了越来越多的商家和高校甚至政府机构的注意力。
目前国际上已经涌现了众多杰出的游戏软件公司例如美国的EA、法国的UBI等和大批优秀的3D游戏引擎一些政府例如韩国已经将游戏产业确立成国民
经济的支柱。
国内关于这方面的研究起步很晚我们一般是要么购买别人的引擎进行二次开发导致引擎功能受限要么自主开发但是引擎的体系结构不合理不利于重用。
不过据报道“网络游戏通用引擎研究及示范产品开发”、“智能化人机交互网络示范应用”两个项目已经正式纳入了国家“863计划”信息产业部2004年度电子信息产业发展基金中“网络游戏开发平台项目”也是以研发通用引擎为目的的这表明了我国已经开始重视这方面的研究。
1.2 研究内容与意义 纵观十年来的发展历程我们可以得出一个结论游戏引擎发展最大的驱动力来自于三维游戏尤其是射击类游戏。
本设计的目标是开发一套面向射击类三维游戏的引擎使之能够适用于实际的游戏开发其研究意义体现在艺术、商业和学术三个方面。
从艺术角度来看电子游戏的出现代表了一种全新的娱乐方式——交互式娱乐——的诞生它是继绘画、雕刻、建筑、音乐、诗歌、舞蹈、戏剧和影视之后人类历史上的第九种艺术。
经过三十年的发展电子游戏向世人展示了其强大的艺术生命力当今娱乐界的大腕卢卡斯、派拉蒙、华纳都已经致力于电子游戏产品的开发并推出了一大批优秀的交互式电影。
游戏引擎将这种艺术规范化从而能够将视听综合艺术推向了一个崭新的高度。
从商业角度来看在世界范围内电子游戏业的利润已经超过了美国的电影第一章 绪论 2业和日本的汽车业。
发展游戏引擎的目的就是要简化游戏制作的复杂度缩短开发时间降低制作成本扩展制作规模。
从学术角度来看电子游戏与虚拟环境、系统仿真学科在技术和思想上是相通的它们之间有很多的解决
方案可以相互移植。
电子游戏还涉及到了数学、物
理学、图形学、多媒体、软件工程、人工智能、数据库和网络等学科是验证这些学科理论和技术极好的实验平台。
本课题设计面向射击动作类游戏的引擎其是最常见的游戏类型具有代表性。
1.3设计思路与难点 DirectX1是当前最著名的电子游戏集成开发环境其涵盖了图形引擎DirectDraw和Direct3D声音引擎Direct Sound和Direct Music网络引擎DirectPlay设备引擎DirectInput。
但是它只能运行在Windows平台上而且还欠缺一些特性例如物理系统、效果系统、数据库引擎、脚本引擎等。
本设计将参考DirectX的体系结构利用一些跨平台的工具替代和补充这些特性。
同时OGRE2作为当前最著名的
开源游戏引擎对于本课题具有极大的参考价值本设计将借鉴其构建思想运用面向对象技术分析、自己的引擎。
本
设计将摈弃了二次开发的思路采取“开发原型—构建引擎—实现DEMO”的模式先实现一个电子游戏然后提取出它的通用部分运用软构件的思想将之规范化和优化对外提供接口实现引擎最后基于该引擎制作了一款射击类游戏验证它的实用性。
本设计的难点在于1系统模块多工作量较大2从较底层做起技术难度较大3涉及的知识面较广整合需要时间。
通过高效地使用各种工具和合理的分析设计可以解决这些困难。
第二章 游戏与引擎 3第二章 游戏与引擎 2.1电子游戏与虚拟环境、仿真系统 虚拟环境3由计算机产生的三维世界它以人的感知系统为基础再现真实世界的几何和行为特性可以以自然方式进行人机交互它强调的是沉浸感。
仿真系统利用计算机程序对真实世界进行模拟这种模拟既可以是可视的也可以是不可视的但是要求结果尽可能接近真实世界它强调的是准确性。
电子游戏针对某些现实题材进行可视化仿真但是会对真实世界进行加工夸张或者省略某些部分它强调的是娱乐性。
电子游戏与一般的应用系统相比具有以下特点 1交互性强人机交互非常频繁用户对系统的控制权力很大 2独占性强大量地使用资源往往会接管内存、显卡、处理器的使用权 3实时性强系统在保持一定的帧率的基础上必须迅速反馈用户的操作。
2.2游戏与引擎 游戏与引擎的关系类似于汽车与发动机的关系。
我们知道一台发动机适用于一类汽车商业实践表明一套引擎也适用于一类游戏本设计就是开发面向射击类三维游戏的引擎因此可以将游戏引擎当作一种程序资源。
如果将游戏当作操作系统的话那么游戏引擎就是内核因为它提供了游戏的最通用的核心功能。
引擎将所有的游戏内容元素都排除在外这里内容指的是资源和逻辑从这个角度来分析可以得到以下公式 引擎 游戏 - 资源 - 逻辑 游戏引擎是一种中间件它的底层连接图形、声音、物理等引擎上层连接游戏资源和逻辑如图表2.1所示。
第二章 游戏与引擎 4resource amplogicgame enginetoolsoperatingsystem 图表2.1 游戏引擎示意图 引擎一般是以一个类库附加一个框架的形式来提供类似于VC中的MFC和Wizard。
引擎不负责资源和逻辑的创建和删除只负责资源的使用和逻辑的调度。
资源是实的元素逻辑是虚的元素但是它们都能够以脚本的形式表示和存储。
游戏引擎以数据驱动方式工作使用引擎开发游戏时首先由美工提供图片、声音、模型等多媒体资源设计师提供文本、数据库等数据资源然后由程序员根据类库来派生各种子类并在框架中使用脚本设置游戏逻辑。
引擎提供插件来导入资源提供控件来实现逻辑。
在专业的游戏引擎中一般会提供若干开发工具甚至是一套集成的开发环境这也是本设计继续完善的一个方向。
2.3几款主流商业引擎 1Quake系列 支持WindowsLinuxMacOSX平台采用OpenGL渲染引擎。
这个是最著名的引擎其主开发人员是John Carmack隶属于id software公司授权金250K左右代表作有Doom-Quake系列游戏HalflifeCS重返德军司令部荣誉勋章等等。
DOOM3主要支持室内场景擅长光影效果的处理。
它引入了“动态阴影效果”Shadow Volume实现动态阴影引入整体凹凸映射实现纹理表面凹凸感的生成。
2Unreal4系列 支持Windows Linux MacOSPS2XBOXNGC平台采用D3D渲染引第二章 游戏与引擎 5擎估计是授权最多的引擎由Epic公司开发。
开发工具十分强大引擎整体架构比较合理。
现在的授权金在200K左右。
代表作有Unreal系列Ubi的一堆游戏网络游戏天堂II。
其特点是擅长人物、树木以及车辆的渲染。
最新的UE3采用DirectX 9.0 API开发采用了其中的Shader Model 3.0。
3LithTech5系列 仅支持Windows平台采用D3D渲染引擎由Monolith公司现LithTech公司耗时5年耗资700万美元开发而成的。
授权金在75K250K之间。
代表作有无人永生等。
2.4小结 本章首先分析了电子游戏与一般应用
系统的不同之处然后给出了游戏引擎的定义最后介绍了几款主流的商业引擎。
第三章 工具概述及使用 6第三章 工具概述及使用 3.1 OpenGL图形引擎 3.1.1 OpenGL简介 OpenGL6开放式图形库 OpenGL Graphics Library的前身是SGI公司为其图形工作站设计的一个图形开发软件库IRIS GLGraphics Library由于受到了用户的一致推崇SGI公司有针对性地对GL进行了改进使之成为一个跨平台的开放式图形编程接口即OpenGL。
当前OpenGL 已经发展到2.0版本它被广泛地应用于CAD/CAM三维动画数字图像处理以及虚拟现实等领域OARBOpenGL Architecture Review Board联合会领导着它的发展。
OpenGL是图形硬件的一个
软件接口它的主要作用是将二维或三维的对象绘入一个帧缓冲区。
对象被描述成一系列的顶点用来定义几何对象或像素用来定义图像。
OpenGL对数据进行几个步骤的处理从而将其转换成像素这些像素将在帧缓冲区中形成最终需要的图形。
从程序员的角度看OpenGL是一组绘图指令的API集合利用这些API能够方便地描述二维和三维几何对象并控制这些对象按某种方式绘制到显示到缓冲区中。
OpenGL的API提供了物体描述坐标变换光照材质纹理、像素文字交互以及反走样、融合等方面的功能基本覆盖了开发二维和三维图形软件所需的各个方面。
OpenGL被设计成独立于硬件平台和操作系统并且可以被各种流行的编程语言使用。
OpenGL在网络环境下以客户/服务器模式
工作应用程序是客户OpenGL内核是服务器完全独立于各种
网络协议和网络拓扑结构。
OpenGL使用硬件指令扩展支持最新的硬件特性这些都是OpenGL相对于DirectX所具有的优势。
3.1.2 OpenGL的工作流程 OpenGL采用多边形造型方式每个物体都是由一组平面来描述的这些平第三章 工具概述及使用 7面记录了物体的表面需要用户提供围绕平面边缘的线段的顶点参数平面内图案的位图两组信息术语称之为顶点Vertex和纹理Texture。
OpenGL生成三维图形可以分成以下几个步骤工作流程7见图表1 1 坐标变换根据基本图元建立景物模型并且对该模型进行数学描述。
2 裁剪变换将景物模型放在三维空间的合适位置上并且设置视点观察该模型。
3 色彩与光照根据应用来设置色彩和确定光照条件。
4 光栅化将景物模型的数学描述机器色彩信息转换成屏幕上的像素。
几何物体顶点显示
列表光栅化图像像素操作像素纹理存储器评价器顶点操作基本操作帧缓存器图表3.1 OpenGL工作流程图 3.1.3 OpenGL 2.0 OpenGL 的最新版本是2.0它构建在OpenGL 1.3基础之上包括完全可编程能力、改进的内存管理机制和OpenML8数字媒体功能等新特性。
OpenGL 2.0具备全面的可编程能力包括以下三个部分 ●可编程顶点处理取代坐标转换、材质应用
程序及光照运算允许对个别顶点作随机运算 ●可编程片段处理取代内插值顶点数据运算、像素缩放、材质存取、材质应用及雾化功能允许个别片段的随机运算 ●可编程图像格式取代固定格式封装和解封装运算并允许OpenGL在传送或接收像素数据时将类型与格式进行任意组合。
OpenGL 2.0对OpenGL 1.X系列“黑箱作业”的内存管理机制进行了有效改进它直接为数据对象建立定位/连结的接口同时充分利用顶点数组、图像、材质、着色、显示清单及像素缓冲区来对其作精确控制还借助
压缩技术来减少数据的移动量。
这些措施使OpenGL 2.0获得高效管理内存的能力同时保留“黑第三章 工具概述及使用 8箱
作业”简单透明的优点。
OpenGL 2.0整合了OpenML集高端图形、数字媒体于一身摇身一变成为超越DirectX 9的全能型API。
OpenGL 2.0还增加了嵌入式图形APIATi和nVIDIA针对掌上电脑、彩屏手机的掌上3D芯片都在此基础上进行开发。
OpenGL 2.0支持两种可编程模型顶点编程Vertex Program对应于Direct 3D中的Vertex Shader提供可编程的TampL能力代替了传统渲染流水线中的TampL处理顶点的变换、光照计算片断编程Fragment Program对应于Direct3D 中的Pixel Shader提供可编程的光栅化操作代替了传统流水线中纹理映射、逐像素颜色及雾化处理。
3.2 Fmod声音引擎 3.2.1 Fmod简介 Fmod9是一个非常容易使用的跨平台声音引擎兼容Win32 Win64 WinCE Linux Linux64 Macintosh os8/9/10/x86 PS2 PSP PS3 Xbox Xbox 360GameCube和Wii平台支持C/CVBDELPHI和MASE语言。
FMOD支持的音频格式也很多包括三维环绕声MIDIMODMP3OGGWMAAIFFCD互联网流媒体、DSP效果、频谱分析建立采样同步ASIO EAX 2amp3等而且可以通过插件形式扩充还有很多内建的effects极大地方便了游戏开发。
著名游戏Wow采用的就是Fmod声音引擎。
3.2.2 Fmod读写类 Fmod的API是以函数形式提供的引擎将这些API封装在CSound中可以用一种统一的格式地对各种声音进行载入、释放、播放、暂停。
3.3 MySQL数据库 第三章 工具概述及使用 93.3.1 MySQL简介 MySQL10是一套
开源的数据库系统它由瑞典的T.C.X公司开发最早的设想只是计划制作一个快速的、结构简单的数据库经过不断的发展目前已成为一个优秀的数据库系统。
它具有以下特性 ●支持多用户、多线程。
MySQL采用C/S结构运行。
Server直接运行MySQL服务程序Client利用MySQL的开发包编写一般使用TCP/IP与Server通讯。
Server使用多线程技术支持多个Client同时访问通过增加CPU数量可以提高负载。
●支持跨平台。
MySQL支持的操作系统多达十几种其中包括Windows系列和Linux系列给了用户更大的选择空间。
●快速。
MySQL最初的设计目的就是希望在速度上超越现有的数据库系统并为此牺牲了一部分功能因此在运行速度上还是有较大优势的。
●支持多种客户端接口。
从最底层的C API到Perl、
PHP、Python等等都可以用来开发MySQL的客户端。
●完整的认证系统。
MySQL有自己的权限系统可以给不同的用户划分数据库的读写权限。
3.3.3 MySQL读写类 MySQL对外提供C API引擎将这些API封装在CSQL中其结构如下 Connect : boolClose : boolQuery : boolGetRow : boolGetField : boolGetRowCount : intGetFieldCount : int-m_handle : MYSQL-m_res : MYSQL_RESCSQL 图表3.2 CSQL结构示意图 3.4 XML文件 第三章 工具概述及使用 103.4.1 XML简介 1XML文件格式 XML11eXtensible Markup Language即可扩展标注语言是目前全球范围内用于描述数据和交换数据的一种标准方式具有自描述性、可扩展性、可校验性、丰富的链接定义、多样的样式表支持等特性。
一个XML文件由三部分组成元素、标记和属性。
以下举例说明 “ltfont colorquotredquotgtTransformerlt/fontgt”是一个元素其中“〈font〉”是开始标记“〈/font〉”是结束标记“color”是属性“red”是属性值“Transformer”是元素内容。
标记是一个元素的名字开始标记和结束标记是成对出现的即使一个没有内容的元素也必须包含完整的标记。
属性是元素的性质写在标记内属性名和属性值也是成对出现的。
一个元素可以有多个属性排列在标记内并用空格分开。
元素是可以嵌套定义的也就是说元素可以包含子元素。
每个脚本文件都会自动有一个根元素根元素不需要开始和结束标记所有的元素都是根元素的子元素。
3.4.2 XML读写类 XML文件格式是一种类似于栈的结构必须按照后进先出的顺序来解释它引擎提供了CScript来描述XML文件并提供CCompile来解释XML文件。
3.5 SOCKET套接字 3.5.1 SOCKET简介 Socket套接字是一套用于网络数据传输的编程接口它最早应用于1983年发行的BSD 4.2操作系统中由Berkeley计算机系统研究组CSRG开发所以又常被称为Berkeley Socket。
许多Unix系统直接沿用源自Berkeley的网络支持
代码。
Linux系统的网络
代码是重新编写的但接口规范还是与Berkeley Socket相同。
Windows Sockets第三章 工具概述及使用 11规范WinSock也是以Berkeley Socket为范例定义了一套Microsoft Windows下的网络编程接口不仅包含了人们所熟悉的Berkeley Socket风格的库函数也新增了一些针对Windows的扩展函数。
Socket接口位于通信协议与应用程序之间如图表3.3所示。
使用Socket开发网络通信程序可以避免直接面对复杂的网络
通信协议加快开发速度并且可以做到跨协议和跨平台开发。
应用程序网络编程接口通信协议操作系统物理通信媒体电子游戏SocketTCP/IPWindowsInternet 图表3.3 Socket示意图 3.5.2 SOCKET读写类 Socket的API是以函数形式提供的引擎将其封装在CSocket中它可以在Windows与Linux下跨平台使用。
Connect : boolListen : boolAccept : boolBind : boolSend : boolRecv : boolClose : bool-CanRead : bool-CanWrite : bool-socket : SOCKETCSocket 图表3.4 CSocket结构示意图 第三章 工具概述及使用 123.6 STL模板库 STL12Standard Template Library是SGI公司开发的一个具有工业强度的高效的C程序库。
它被容纳于C标准程序库C Standard Library中是ANSI/ISO C标准中最新的也是极具革命性的一部分。
该库包含了诸多在计算机科学领域里所
常用的基本数据结构和基本算法。
它高度体现了软件的可复用性为广大C程序员们提供了一个可扩展的应用框架。
这种现象有些类似于Microsoft Visual C中的MFCMicrosoft Foundation Class Library或者是Borland C Builder中的VCLVisual Component Library。
STL作为一个泛型化的数据结构和算法库并不牵涉具体语言并且它能得到所有的C的编译器的支持。
图表3.5 STL结构示意图 3.7 小结 游戏引擎总是建立在一定的工具之上的工具的选择必须满足引擎的通用性要求。
本章不仅介绍了游戏引擎开发所必然涉及到的图形、声音、数据库、文件、网络、数据结构工具而且还对它们的API进行了封装提供了方便的使用方法。
第四章 射击类三维游戏建模 13第四章 射击类三维游戏建模 4.1 游戏术语 1精灵游戏中可以被操纵的物体包括角色和道具.