软工课程设计.doc

上传人:壹****1 文档编号:563050483 上传时间:2024-03-03 格式:DOC 页数:13 大小:238.50KB
返回 下载 相关 举报
软工课程设计.doc_第1页
第1页 / 共13页
软工课程设计.doc_第2页
第2页 / 共13页
软工课程设计.doc_第3页
第3页 / 共13页
软工课程设计.doc_第4页
第4页 / 共13页
软工课程设计.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《软工课程设计.doc》由会员分享,可在线阅读,更多相关《软工课程设计.doc(13页珍藏版)》请在金锄头文库上搜索。

1、福建农林大学计算机与信息学院课程设计报告课程名称:软件工程课程设计题目:游戏引擎开发姓 名:戴智亮系:计算机科学与技术系专 业:计算机科学与技术专业年 级:2007学 号:071150062承担角色:主程序员同组组长:戴智亮同组其他成员:张世强、柯跃宗、梁成地实验地点:田家炳楼指导教师:王李进职 称:讲师完成起止日期:2010.12.52011.1.92011年 1月 10日福建农林大学计算机与信息学院课程设计结果评定评价内容评价指标评分权值评定成绩业务水平有扎实的基础理论知识和课程知识;能正确设计实验方案;独立进行实验工作;能运用所学课程知识和技能去发现与解决实际问题0.2设计质量实验正确,

2、分析处理科学;设计结果有应用价值;图纸绘制符合国家标准,质量符合要求;计算及测试结果准确;工作中有创新意识;对前人工作有改进或突破,或有独特见解; 0.4工作量、工作态度按期完成规定的任务,工作量饱满,难度较大;工作努力,遵守纪律;工作作风严谨务实0.2报告质量文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;0.2合 计1.0指导教师签字:评定日期:目录1课程设计概述12项目的可行性研究与需求分析23项目设计的基本原理和采用的主要方法与技术33.1系统组成33.2模块化分解44本人实现项目的过程与步骤54.1驱动核心模块54.2文本模块54.32D模块54.4界

3、面模块54.5音频模块64.6网络模块74.73D模块74.8脚本模块74.9辅助模块75个人遇到的困难与获得的主要成果86课程设计完成结果分析与个人小结97附录10参考文献10游戏引擎开发1 课程设计概述假想客户(以下简称客户)是具有一定开发能力,从事或试图从事Windows平台的C+游戏开发,但又不想接触复杂死板的DirectX和Win32 API,因此需要一个能提供简单灵活接口的游戏引擎类库。客户对该类库的功能要求大致可归纳为:l 方便重用的驱动核心。包括处理游戏窗口创建、主线程、消息处理等。l 2D图形渲染。能读取并绘制流行图片格式,为了美工方便必须能以贴片形式绘制一张图片的某部分,并

4、且支持图片的旋转缩放通道混合等。l 3D图形渲染。能读取并渲染流行3D建模工具导出的网格模型,并提供网格模型基本的操作如旋转缩放和动画控制等。l 音频处理。能对ogg vorbis进行读取解析播放。l 玩家输入处理。能处理来自于键盘、鼠标的玩家输入。l 网络功能。能将客户机连接到Internet与其他玩家对战。l 文本输入和绘制。能绘制丰富字体的文本,支持接受各种输入法的输入。l 方便自定义的UI框架。提供一个UI框架,客户可根据需要改变界面方案为自己的游戏创建独一无二的UI界面。l 脚本集成。集成一种强大而简单的脚本。2 项目的可行性研究与需求分析针对客户所提出的要求,结合各方所能提供的AP

5、I,对各项功能进行逐一分析,初步将引擎分为几大模块,各模块之间相互独立,可单独使用:l 驱动核心。处理窗口创建、主线程、消息处理。l 音频模块。对DirectX和 Ogg vorbis的音频处理API,提供加载播放ogg音频的接口。l 2D模块。封装了DirectX的纹理绘制API,可绘制2D图形图像。l 文本绘制模块。封装了DirectX的字体绘制API,满足游戏中的文本绘制需求。l 界面模块。界面绘制基于2D模块,模拟微软MFC框架及其消息机制的一个界面框架,可为游戏提供灵活的交互界面。l 网络模块。封装Winsock提供的网络API为游戏提供网络功能。l 3D模块。对DirectX的3D

6、接口进行封装,包含了.X文件解析,网格控制等。l 脚本模块。集成了Lua脚本语言,为有剧情发展的游戏提供便利的脚本处理功能。l 辅助模块。提供其他便于游戏开发的工具类。3 项目设计的基本原理和采用的主要方法与技术3.1 系统组成游戏引擎的核心部分是驱动核心,包含主线程和消息处理,以及供用户扩展成自定义游戏的初始化、逻辑、渲染、释放等接口,用户的游戏开发主要在驱动核心的接口里调用其他功能模块进行。游戏引擎业务流程的活动图如下图:3.2 模块化分解如下图,系统根据功能分为9个模块,其中驱动核心作为核心部分必不可少,其他模块可根据实际开发的游戏需要进行选择。除界面模块必须用到2D模块以及网络模块需要

7、用到界面模块外,其他各模块之间没有任何联系,均可单独使用。4 本人实现项目的过程与步骤开发采用原型模型,先快速开发出预期系统的一个可执行版本,交付客户试用并收集反馈,然后对原型进行改正扩展,追加新模块后再次交付客户,循环整个过程直至系统最终完成。为了符合原型模型开发的需要,模块设计顺序按照:驱动核心基本功能模块高级功能模块的顺序进行。我作为主程序员负责各模块的初期设计,并对实现难点进行攻克。4.1 驱动核心模块该模块包扩一个引擎类和一个用户自定义的扩展文件构成。引擎类GameEngine类以单例实现,主要用于处理Windows处理过程,包括注册窗口类,创建应用程序窗口和主线程,消息循环,并提供

8、共用户自定义游戏用的接口。扩展文件DirectxGE则实现了引擎类提供的自定义接口,客户可在扩展类里调用其他模块来开发自己的游戏。4.2 文本模块该模块仅有一个类DxFont类。 该类封装一个ID3DXFont COM对象,对外提供创建字体,绘制文字,获取字体信息等方法。注意ID3DXFont的绘制要求初始化LPD3DXSPRITE,驱动核心模块里已事先对其进行初始化。4.3 2D模块该模块仅有一个类DxTile类。该类封装一个DirectX纹理,并增加了贴片性能,实现纹理、贴片数据的读取,以及贴片的绘制,支持旋转缩放等。注意DirectX纹理的绘制要求初始化LPD3DXSPRITE。4.4

9、界面模块界面模块模拟微软MFC框架及其消息机制构建一个界面框架,可为游戏提供灵活的自定义交互界面。用户还可以根据需要自行对其控件扩充。该模块的绘图依赖于2D模块。DxCmdTarget类:作为消息基类,向所有子类派发消息。DxWnd类:派生自DxCmdTarget,作为窗口控件基类。DxFrameWnd类:派生自DxWnd类,窗口类基类。DxBoxWnd类:派生自DxWnd类,容器类,可容纳其他控件。DxComboBox类:派生自DxBoxWnd类,组合框类。DxEditBox类:派生自DxWnd类,文本输入框类。DxButton类:派生自DxWnd类,按钮类。DxTextButton类:派生

10、自DxButton类,文本控件。整个模块的类图如下:4.5 音频模块该模块由负责播放长时音乐的DxSound类以及对短时效果音进行强化的派生类DxSoundEffect类组成。4.6 网络模块该模块由一个网络消息处理类MMsgManager类作为处理网络消息的核心,以及封装了Socket的SocketProxy类及其子类来处理服务器和客户端的行为。4.7 3D模块该模块主要封装了Direct3D的相关COM对象,为游戏提供3D开发的支持。包括.X文件解析类CAllocateHierarchy类、骨骼蒙皮网格模型类CSkinMesh类、3D角色类D3dChara类。4.8 脚本模块该模块集成了L

11、ua脚本语言,为游戏提供一个强大又易用的脚本。Lua堆栈操作类MLua类封装了Lua脚本语言的相关堆栈操作的API;脚本类MScript类包含一个Mlua类对象,扩展了作为游戏脚本的基本功能。4.9 辅助模块该模块只是一些便于游戏开发的类集合,类之间并没有很强的联系。5 个人遇到的困难与获得的主要成果作为组长兼主程序员,负责需求分析体系结构设计,各模块的初期设计,并向成员阐释模块的设计思路,解决成员在工作中遇到的问题,攻克项目开发中的难点。整个项目的一个较大难点在于建立一套灵活的自定义UI,界面模块模拟微软MFC框架及其消息机制构建一个界面框架,可为游戏提供灵活的自定义交互界面。用户还可以根据

12、需要自行对其控件扩充。其中消息基类是整个界面模块的核心和难点,该类由主程序员来负责设计。只要继承该类即可响应消息,所有消息由该基类向子类派发。该类对外必须提供全局初始化、全局渲染、全局消息三个静态函数。子类只要加入全局消息映射网后,相应的初始化、渲染、消息函数都会由DxCmdTarget类调用。派生类所要做的工作很简单,继承该类,在构造函数里调用父构造,用DXUI_ENTRY宏添加映射项,最后用DXUI_LINK宏链接到全局消息映射网。该消息基类内部维持一张全局消息映射网,把系统发给应用程序窗口的消息通过映射网派发给各个子类,由子类去处理各自的消息。该类同时负责在应用程序窗口关闭后,对没有手动

13、释放的子对象进行安全释放。另一个较大的难点在于DirectX开发,负责该模块的小组成员之前没有DirectX开发经验,因此主程序员不得不负责对其指导和监督。而且诸如游戏引擎类,.X蒙皮骨骼模型文件解析,ogg音频解析等重难点部分也由主程序员来设计。最后为了给客户展示类库效果,由主程序员利用类库编写数个演示游戏供客户参考。6 课程设计完成结果分析与个人小结通过这次课程设计,拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素

14、质的复合型人才。对我们计算机专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。7 附录课程设计文件夹(以下为下属文件夹) marineMikuTest文件夹。项目工程及演示程序。 supports文件夹。编译工程所必须的lib和include,请按照同目录下的he

15、lp.txt中的指示安装。同目录下的ReadMe.txt是演示游戏程序的说明。 document文件夹。相关文档。参考文献1. 美Jim Adams著,黄际洲/刘刚译,DirectX角色扮演游戏编程,重庆大学出版社,20062. 美McCuskey著,朱庆生译,游戏音效编程,重庆大学出版社,20053. 美Jim Adams著,刘刚译,DirectX高级动画制作,重庆大学出版社,20054. 美Robert C.Martin著,邓辉译,敏捷软件开发:原则、模式与实践,清华大学出版社,20035. 美ErichGamma等著,李英军等译,设计模式:可复用面向对象软件的基础,机械工业出版社,20056. 美Shari Lawrence Pfleeger等著,杨卫东译,软件工程,人民邮电出版社,200710

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号