1、 1 本 科 毕 业 论 文 大型网络游戏系统 文档 A large-scale network game system document 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年 月2 厦门大学软件学院毕业设计(论文)开题报告 学生姓名 班级 软件 1 班 学号 指导教师姓名 职称 助理教授 所在单位 厦门大学 软件学院 毕业设计(论文)题目 大型网络游戏系统 毕业设计(论文)的目标: 【摘要】 实现 一款 大型网络游戏系统的客户端与服务器交互设计,完成 该 大型网路游戏系统的场景设计,玩家交流与任务的分配,角色炫丽的打斗效果, NPC
2、交互效果,物理碰撞检测效果,数据库的设计与实时交互的要求。搭建好 游戏 框架,让学弟们在框架中开发。 【背景】 该游戏 以十七世纪的中国历史为背景,讲述民族英雄郑成功传奇的一生。游戏中穿插明末清初的正史记录,作为游戏的支线任务。游戏中郑成功先后与清军,西 南蛮夷士兵以及荷兰海军作战,最终攻占南京、收复了台湾,成为了民族英雄。本文所介绍的系统主要完成“将领”之间的对战功能,是一个支线任务,也是一个独立的游戏,同时可以对“将领”进行测试。玩家们需要控制各自的将领,在武将战场上杀敌制胜。“武将”战场上会不定时随机出现各种武器装备,补给品,军需用品,和临时技能等武将消耗品,玩家可以依靠这些消耗品配合有
3、利的地形进行伏击和叫阵。但是取得胜利最终的还是要依靠玩家的等级,装备,技能以及团队合作等因素。“将领”们的等级来自常规对战,也就是在主线游戏中培养起来的角色参数。角色参 数依靠玩家的升级,完成主线和支线任务的奖励,以及杀敌时幸运的获得对方掉落的宝物等而增长。 【预期目的】 主要完成下面三个模块: 1 网络通信; 3 2 数据库交互; 3 场景设计。 【 开发环境 配置】 安装内容 安装工具 VC+开发平台 VS2008 sp1 OGRE sdk 1.6 PagedGeometry 1.05 【主要内容】 一 OGRE 介绍: Ogre 是一款开源的图形渲染引擎,它的全名叫( Object-or
4、iented Graphics Rendering Engine),它是由一个核心小组开发并 维护,由于它是一款开源引擎,所以它也像 Linux 一样,被各种不同的团体和组织改造和扩充,并使它能够适应不同的应用领域和拥有更强大的功能。 Ogre 并不倾向于某一种类型的游戏。由于它的设计,它可以用于从飞行模拟器到第一人称射击游戏到 2.5D 游戏等等,总而言之,如果那款游戏要使用 3D, Ogre 就适合开发它。 二 PagedGeometry 介绍: PagedGeometry 是 OGRE 引擎的一个插件,它对(无穷)大区域的海量网格的渲染提供优化策略。它非常适合于稠密的森林和室外场景,那里
5、有海量的树,草,岩石,灌木丛等场景 对象。该类负责加载那些需要立即(或很快)可见的场景几何,而不加载其他的场景以节约内存空间。PagedGeometry 引擎可以通过诸如静态几何, imposters 等方法去显示实体对象( Entities)。这些方法是与实体和场景相机的距离,以及你的配置相关的。对页面的加载是通过用户定义的 PageLoader 来完成的。这样,用户可以编程实现加载页面,无论它是来自硬盘上的文件,程序产生的或是其他地方。 4 实现方法: 语言工具: C+; 游戏引擎: OGRE; 数据库: MySql; 通过 ADO 接口连接关系型数据库 MySql,从而完成服务器与数据库
6、的交互; 通过 socket 编程的方式实现客户端与服务器的交互;使用 Ogre 图像渲染引擎编写游戏客户端代码,进而简化编码;采用设计模式的思想设计游戏架构,从而使搭建好的框架更安全,更简单更利于后来人的编码。 细节实现的技术大致分为以下几种: 1 图形图像学的基础知识; 2 BS 架构的基于套接字的 客户端和服务器的 交互技术; 3 碰撞检测; 4 自动寻路; 5 AI 设计; 6 OGRE 相关技术 的使用技巧; 7 MFC 的相关技术; 8 数据库交互技术; 这些都是待研究的技术。虽然已经具备了其中的一些技术,比如 MFC 使用及OGRE 的使用 以及 PagedGeometry 的使
7、用 , 但是只是停留在调用层次上,依然不能够胜任全部工作,所以接下来的 任务 十分 艰巨。 如果 将上述 8 个技术模块简单的实现 ,那么 基本上能够 完成本系统的设计与实现。 时间进度安排: 收集资料: 2010 年 1 月 14 日 2010 年 2 月 1 日 技术学习: 2010 年 2 月 2 日 2010 年 3 月 15 日 概要设计: 2010 年 3 月 16 日 2010 年 4 月 1 日 详细设计: 2010 年 4 月 1 日 2010 年 5 月 1 日 编 码: 2010 年 5 月 1 日 2010 年 6 月 8 日 5 指导教师审核意见: 指导教师签名: 2
8、010 年 月 日 6 厦门大学软件学院毕业设计(论文) 中期检查 报告 学生姓名 班级 软件 1 班 学号 指导教师姓名 职称 助理教授 所在单位 厦门大学软件学院 毕业设计(论文)题目 大型网络游戏系统 毕业设计(论文)的 目标和主要任务: 【 论文主要任务 】 本系统 主要分为五个主模块,它们分别是地图编辑器,粒子系统编辑器,网络交互模块,人物模型系统和游戏演示。 游戏 整体 组织架构 的设计,如 图 1.1 所示 : 地 图 编 辑 器粒 子 系 统 编 辑 器游 戏 演 示游 戏 架 构高 度 图粒 子 效 果静 态 模 型动 态 模 型声 音高 度 碰 撞 检 测点动 态 粒 子静
9、 态 粒 子物 理 碰 撞 检 测自 动 寻 路 系 统A I 与 控 制 接 口即 时 聊 天 系 统攻 击 效 果 计 算人 物 模 型 系 统换 装 系 统A I 脚 本 系 统地 图 读 取 功 能网 络 交 互 模 块网 络 会 话 基 础网 络 指 令 指 令 序 列 化客 户 端服 务 器数 据 库 模 块数 据 库 交 互 层数 据 库 控 制 层图 1.1: 游戏戏整体的组织架构图 然后论文将从客户端设计,服务器设计展开: 7 1 客户端设计: 1.1 客户端向导 客户端主要由两个模块组成,分别为客户端向导和客户端场景处理。其中客户端向导主要管理玩家登录时的基本信息,和服务器
10、的连接,创建 socket,和启动客户端场景。其操作流程如 图 1.2 所示 : 登 录 ?注 册 ? 退 出否是开 启 注 册 向导否是用 户 名 存 在 ?传 入S o c k e t , 启动 场 景 模 块进 入 游 戏 场景否阅 读 注 册 条例填 写 用 户 基本 信 息用 户 名 存在 ?开 始 注册 ?是否是修 改 用 户名图 1.2:客户端向导注册流程 在客户端向导中,玩家需要选择登陆游戏还是注册用户:当用户选择登录游戏 时,客户端会向服务器发送一个指令,告诉服务器这里有客户端连入,请求确认玩家信息。当服务器发回确认信息后即可进入游戏场景,否则提示玩家 尚 未注册;当用户选择
11、注册用户时,向导将把玩家引入注册向导中。在注册向导中,玩家首先阅读相关条例,同意后方可8 进入注册面板。在注册面板中用户需要填写玩家基本信息,其中包括账号,密码,邮箱等信息。用户填写完毕后点击“注册”按钮,客户端立即向服务器发送注册命令,服务器随即开始在数据库中查找该用户名,如果数据库中不存在该用户名,则立即在基本表中创建相关信息,同时客户端提示用户注册成功;否 则提示注册失败。 1.2 客户端场景 3.3.1客户端游戏创建流程设计 客户端游戏创建部分要考虑到复用性和灵活性,复用性要求已经设计的模块可以在将来被未设计的模块调用;灵活性要求在已经设计的代码中可以轻松加载或嵌套将来设计的模块,同时
12、可以保证将来的模块嵌入或者删除不会影响已有的模块。 下面展示了 客户端游戏的创建 粗略 流程 ,如 图 1.3 所示 : O G R E 数 据初 始 化渲 染 一 帧退 出 ?是否处 理 各 种 消息 和 事 件结 束图 1.3:客户端游戏创建流程(大略) 其中客户端场景详细数据初始化流程 如 图 1.4 所示 : 9 O G R E 创 建 根节 点O G R E 加 载 插件 和 资 源O G R E 关 联W I N D O W S 窗口创 建 主 摄 像机 , 视 口 和 场景创 建 带 缓 冲 的键 盘 鼠 标 设 备管 理 类初 始 化 主 场 景地 形 数 据创 建 加 载 主
13、 角人 物加 载 N P C初 始 化 各 种 离子 效 果创 建 碰 撞 检 测类设 置 显 示 模 式和 底 层 库图 1.4:客户端游戏创建流程(详细) Ogre 中最重要的变量就是根节点指针 Root,它是一切数据的源头,掌管着坐标变换,渲染,关键帧事件,创建其他变量,加载插件和资源等功能。根节点是 Ogre 的核心,采用单件模式,即整个程序中只有一个实例。 这里不再作过多的讲解。 客户端渲染主框架设计 客户端游戏的渲染流程是整个游戏的核心模块。而渲染的 主框架是支持这个核心的骨架。这个主框架是否设计的强壮、灵活,直接关系到其他模块是否能够正常的、灵活的被加载或者卸载。请看客户端游戏主
14、框架类结构图 ,如 图 1.5 所示 : 10 # m _ p S e s s i o n S o c k e t : C S e s s i o n S o c k e tC O g r e O b j e c tC S e s s i o n S o c k e t+ R e n d e r ( )+ U p d a t e F r a m e ( )+ I n i t i a l O g r e ( )+ s e t R o o t A n d S u b S y s t e m ( ) : b o o l+ s e t R e n d e r W i n d o w ( ) : b o
15、 o l+ s e t U p P u g i n s ( )+ l o a d R e s o u r c e ( ) : b o o l+ c h o o s e S c e n e M a n a g e r ( ) : v o i d+ c r e a t e M a i n C a m e r a ( ) : v o i d+ c r e a t e M a i n V i e w p o r t s ( ) : v o i d+ c r e a t e S c e n e ( ) : v o i d+ c r e a t e F r a m e L i s t e n e r (
16、) : v o i d# m _ p R o o t# m _ p O g r e W i n d o w# m _ p S c e n e M g r# m _ p M a i n C a m e r a- m _ p M a i n V i e w P o r tC O g r e B e g i n+ c r e a t e S c e n e ( )+ c r e a t e F r a m e L i s t e n e r ( )# m _ p E v e n t : C O g r e E v e n t# m _ p C u r r e n t S c e n e : C O
17、g r e S c e n e B a s i cC O g r e A p p+ f r a m e S t a r t e d ( )+ f r a m e R e n d e r i n g Q u e u e d ( )+ f r a m e E n d e d ( )+ m o u s e R e l e a s e d ( )+ m o u s e P r e s s e d ( )+ m o u s e M o v e d ( )+ k e y P r e s s e d ( )+ k e y R e l e a s e d ( )# m _ p O g r e A p p :
18、C O g r e O b j e c t- m _ p I n p u t M a n a g e r- m _ p K e y b o a r d- m _ p M o u s e- m _ p C u r M g r- m _ p C u r C a m e r a- m _ f T o g g l e- m _ f R o t a t e- m _ f M o v eC O g r e E v e n t- 结 束 11- 结 束 2*所 有 O g r e 渲 染 类 的 父 类 ,它 掌 管 着 网 络 通 信- m _ p E v e n t*# m _ p O g r e A
19、p p*O g r e 关 键 帧 事 件 ,键 盘 鼠 标 事 件和 C E G U I 事 件- m _ p A p p : C O g r e A p p- m _ p C a m e r a- m _ p C u r S c e n e N o d eC O g r e S c e n e B a s i c*+ S c e n e M o u s e ( )+ S c e n e K e y b o a r d ( )+ S c e n e M o u s e M o v e d ( )+ f r a m S t a r t e d ( )+ f r a m E n d e d (
20、)+ f r a m R e n d e r i n g Q u e u e d ( )C O g r e O b j e c t L i s t e n e r图 1.5: 客户端游戏主框架类结构 游戏渲染主程序主要七个类组成,分别是 CSessionSocket, COgreApp,COgreObject,COgreBegin,COgreEvent,COgreObjectListener 和COgreSceneBasic。其中 CSessionSocket 类负责客户端网络通信,它里面包括了接受数据,发送数据,序列化指令等操作; COgreObject 是所有渲染类的父类,它包含了所有渲染
21、类中抽象出来的 公共操作,设计它的目的是为了给所有模块同时增加变量是比价简单。它有一个静态的变量 m_pSessionSocket,是 CSessionSocket 类的指针,因此每一个渲染类都可以很轻易的把数据发送给服务器; COgreBegin 类抽象了渲染的主要流程,封装了最基本的框架。其中使用单件模式声明 OGRE 的根节点 Root , 使 用 了 装 饰 模 式 用 InitialOgre 封装了setRootAndSubSystem,createResource, createSceneMgr, createFrameListener 等虚函数,并实 现了这些函数中的大部分功能,并且把随后工作交给它的子类 COgreApp 类处理。 COgreApp 主要完成两个工作,添加事件监听类 COgreEvent 和创建场景类 COgreSceneBasic。 COgreEvent 主要抓取根节点 Root 在渲染过程
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。