1、 本 科 毕 业 论 文 3D 动漫游戏设计:程序设计 3D Cartoon Games Design:Program Design 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年 月 摘 要 3D 游戏开发,是游戏开发中的主力军,越来越多的大型游戏,不论单机 pc 游戏或者网络游戏, 3D 已经成为了其最大的卖点,这离不开 3D 技术的逐渐成熟和完善。因此学习和制作 3D 游戏具有良好的工作前景和市场需求的。 本文研究的主要方向是通过 OpenGL 技术,学习和实践 3D 游戏开发的相关技术,制作出一款小型 3D 第一人称射击类型游戏;在本科专
2、业学习的基础上,强化针对游戏开发的相关技能,增加实践经验为了满足游戏市场工作要求。本文所制作的游戏采用的 OpenGL技术,系统显卡自带 OpenGL API,增加相关 3D 模型开发包,在 Windows 和 OpenGL的基础架构上制作随机模拟现实场景;通过 3DS 模型支持库, MD2 和 MDL 动画模型支持库导入多种人物模型;通过有限状态机,寻路算法等相关方法实现部分游戏智能 AI功能;文件的读写和保存来实现游戏的保存与加载等等实现游戏开发目标。 此次游戏制作采用新式迭代式开发模式,按照游戏开发流程,由大到小,又少到多的模块 化 开发更加有利于提高游戏的开发进程,同时也能更细致的加深
3、对游戏开发各个方面的了解和掌握。 总的来说,最后成功开发完成此次项目游戏,而本文是对最后开发出的整个游戏开发过程的一个技术性报告,对 其中技术要点和难点的讲解,对某些重点解决方法的详细分析。 关键词: 3D 游戏; OpenGL;人工智能 Abstract 3D game development is the main force in game development, an increasing number of large-scale game, regardless of stand-alone or online games pc game, 3D Technology has b
4、ecome its biggest selling point, which is inseparable from the 3D technology matured and improved. Therefore learning and producting the 3D games could bring us good job prospects and market demand. In this paper, the main direction is through the OpenGL technology, learning and practicing of 3D gam
5、e development technology, to create a small 3D first-person shooter type of game; in the undergraduate professional study, based on the game development aimed at strengthening the relevant skills to increase the practice of experience in order to meet the requirements of the gaming market. the game
6、is produced by the usage of the OpenGL technology, the system graphics card comes with OpenGL API, the increase related to 3D model development kit, and OpenGL in Windows infrastructure stochastic simulation to create realistic scenes; through the support 3DS Model library, MD2 animated model and MD
7、L animated model to achieve a variety of figures to support the Treasury model; through the finite state , routing algorithm method and others to related parts of the game features smart AI; according to read and write documents to achieve the save and load games, etc. to achieve the dream of develo
8、pment of the game. The game using the new iterative development model, in accordance with the game development process, descending and less to the number of modules developed to improve the game development process, but also able to have a more detailed understanding of all game developers understan
9、ding and mastering. All in all, This is the entire game development process a technical report on the technical points and the difficulties which the lectures focus on some of the detailed analysis of solutions. Key words : 3D games; OpenGL; Artificial Intelligence 目 录 第 1 章 系统介绍 . 6 1.1 论文背景 . 6 1.
10、2 论文组织结构 . 7 第 2 章 系统的设计框架 . 8 2.1 开发平台 . 8 2.2 开发模块 . 8 2.3 游戏程序框架结构 . 9 2.3.1 Windows 框架: Demo.cpp 类文件 . 9 2.3.2 OpenGL框架: OpenGL.cpp 类文件 . 9 2.3.3 程序间的相互关系 . 9 第 3 章 系统的实现方法 . 10 3.1 天地形成:场景天空盒实现 . 10 3.1.1 摄像机漫游: . 10 3.1.2 地面的构成算法 . 12 3.1.3 天空盒 . 14 3.1.4 广告牌技术 . 14 3.2 生命诞生:人物动画模型 . 16 3.2.1
11、3DS 模型 . 16 3.2.2 MD2 动画模型( AI相关) . 17 3.2.3 MDL动画模型 . 22 3.3 战斗打响:战斗系统 . 24 3.3.1 射击爆炸效果 . 24 3.3.2 碰撞检测( AI 相关) . 27 3.4 故事延续: 游戏 数据 保存 . 29 3.4.1 游戏数据产生 . 29 3.4.2 游戏保存和加载 . 30 第 4 章 系统性能及测试 . 31 4.1 系统性能及运行结果 . 31 4.2 系统测试 . 31 第 5 章 总结 . 33 致谢语 . 34 参考文献 . 35 Contents Chapter 1 System Introduct
12、ion. 6 1.1 Background . 6 1.2 Structure of This Thesis . 7 Chapter 2 System Design. 8 2.1 Developing Platform. 8 2.2 Division of Modules . 8 2.3 System Design Framework . 9 2.3.1 Windows Framework: Demo.cpp class. 9 2.3.2 OpenGL Framework: OpenGL.cpp class . 9 2.3.3 Relationships Between Frameworks
13、. 9 Chapter 3 System Implementation . 10 3.1 The formation of heaven and earth: the sky box Implementation . 10 3.1.1 Roaming Camera. 10 3.1.2 The algorithm of the ground composition . 12 3.1.3 Sky box . 14 3.1.4 Billboard technology. 14 3.2 The birth of life: character animation model. 16 3.2.1 3DS
14、 Model . 16 3.2.2 MD2 animated model (AI-related) . 17 3.2.3 MDL animation model . 22 3.3 Battle started: combat system . 24 3.3.1 Effect of shooting explosion . 24 3.3.2 Collision Detection (AI-related) . 27 3.4 extension of the story: save and load the game data . 29 3.4.1 Creation of the game dat
15、a . 29 3.4.2 Save and load the game. 30 Chapter 4 System Performance and Testing . 31 4.1 System Performance and Running Outcome . 31 4.2 Testing . 31 Chapter 5 Summary. 33 Acknowledgement . 34 References . 35 第 1章 系统介绍 1.1 论文背景 如今 3D 类游戏已经是一个十分火热的话题,它不但吸引着众多玩家的眼 球 ,也为各大游戏商家带来了大量的商机。可以说 3D 游戏已逐渐成为当代
16、游戏的主导,被越来越多的游戏商家所看好。 3D 游戏开发技术中, Open GL仍然是唯一能够取代微软对 3D图形技术的完全控制的 API。它仍然具有一定的生命力,但是 Silicon Graphics 已经不再以任何让微软不悦的方式推广 Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。 Direct3D 目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是 Mesa 项目)一直致力于为任何类型的计算机(无论它们是否使用微软
17、的操作系统)提供 Open GL支持。今年 08 年正式公布 OpenGL3.0 版本。并且得到了, nv 的支持,其官方网站上提供针对 N卡的 sdk 下载 1。 目前,国内的 三维游戏开发技术正处于赶超国外的关键时期,从创意、策划、研究开发与实现,到游戏的运营与维护,都有大量的知识值得学习和摸索。由于 Linux 操作系统平台的大力推广,基于 Linux 的各种应用软件也不断壮大,因此基于跨平台图形库的跨平台三维游戏开发也越来越受重视。 OpenGL(open graphics library)是一种独立的平台无关的三维图形开发库,在各种语言下进行主框架开发并结合应用 OpenGL 函数都
18、可以开发出三维戏。也正因此,中国的 3D 类游戏事业有着更加巨大的潜力,这也为中国的游戏制作带来了更多 的机遇与挑战。 选择这样一个毕业设计的题目也正是鉴于这样的一个环境背景,希望通过这次的毕业设计,学习和实践 3D 类游戏制作的过程以及相关的技术;在巩固已有知识的同时,再掌握一些对 项目 有用的技能,增加一些实战经验,为将来的工作打下一定的基础。 1.2 论文组织结构 本文根 据 OpenGL 的 3D 游戏设计和实现过程中的重点和难点而作,具体介绍其中设计的依据以及实现过程中的相关处理。 第 1章 本文的概论:主要介绍 3D 游戏相关背景等信息。 第 2章 系统的设计:主要介绍开发平台下系
19、统框架的构建、开发模块的划分以及各个模块之间的协调情况等。 第 3章 系统的 实现:主要详细介绍游戏设计“四步走”过程中的技术要点。 第 4章 系统性能及测试:主要测试游戏 demo 的运行效果同时对系统测试做出说明 第 5章 总结 与展望 第 2章 系统的设计框架 2.1 开发平台 1运行环境要求 硬件环境: P4 2.0GHz 以上、 512mb 内存、支持 OpenGL 显卡、 50mb以上硬盘 软件环境: Windows XP、 OpenGL 2. 开发环境 开发工具: Visual C+、 OpenGL、 3Dmax、 PhotoShop 开发语言: C+ 开发平台: Windows
20、 XP 2.2 开发模块 程序设计部分模块 2: 地图控 制模块:这一模块只负责管理地图库、组建地图,但并不负责 场景模型设计 。 人物管理模块:管理每个人物的信息 和行为控制 (不包括对话信息 )。 音乐管理模块: 管理所有的音乐及其播放,音乐文件使用 wmv格式 。 战斗控制模块:负责站斗控制 以及实现一些智能功能,如人物 的行为方式 、寻路方法 。 剧情控制模块:整体架构模块。管理其它的全部模块,负责整个游戏的剧情 发展。 2.3 游戏程序框架结构 2.3.1 Windows 框架: Demo.cpp 类文件 Windows 框架主要由三个函数构建: WinMain()程序入口 MsgP
21、roc()窗口回 调函数 GameLoop()消息循环 2.3.2 OpenGL 框架: OpenGL.cpp 类文件 OpenGL的基本框架由四个函数组成: SetupPixelFormat(HDChDC)检测安装 OpenGL init(intWidth,intHeight)OpenGL 视口进行变换 CleanUp()清除 OpenGL的连接 Render()OpenGL 图形处理 2.3.3 程序间的相互关系 Windows 程序框架与 OpenGL程序框架的相互关系如下图(参考自 3): 图 2.1 程序间的相互关系 第 3章 系统的实现方法 3.1 天地形 成:场景天空盒实现 游戏
22、必须要有天有地,本节讲解游戏场景控制实现模块功能。 3.1.1 摄像机漫游 功能主要实现在 baiscobj.cpp 类文件 中,其主要 DisplayScene()函数的功能即 是摄像机漫游。 目的是通过操作光标上下左右键,来改变 视点位置,从而达到在场景中漫游的视觉效果 34。 KEY_DOWN(vk_code) 是 取 指 定 键 vk_code 状 态 , 由GetAsyncKeyState(vk_code)这个 Windows 的底层函数宏定义得来,通过键盘按键来控制摄像机视角方向 。 定义浮点数组 g_eye3表示 视点(一组数组)。 其中 g_eye0、 g_eye1、 g_ey
23、e2表示视点的 X、 Y、 Z分量。 定义浮点数组 g_look3表示目标点 。 其中 g_look0、 g_look1、 g_look2表示目标点的 X、 Y、 Z分量。 部分代码如下并做选择性注释: BOOL baiscobj:DisplayScene()/摄像漫游 1 float speed=0.2f;/步长 2 if (KEY_DOWN(VK_SHIFT) speed=speed*4;/按 SHIFT时的加速 3 if (KEY_DOWN(VK_LEFT) g_Angle-=speed;/左转,方位角 - 4 if (KEY_DOWN(VK_RIGHT) g_Angle+=speed;/右转,方位角 + 5 rad_xz=float(3.13149*g_Angle/180.0f);/计算左右旋转角度 6 if (KEY_DOWN(33) g_elev+=speed;/PageUP 键 - 7 if (KEY_DOWN(34) g_elev-=speed;/PageDown键 8 if (KEY_DOWN(VK_UP)/前进 -