[游戏开发]天龙八部技术分析报告.pdf
《[游戏开发]天龙八部技术分析报告.pdf》由会员分享,可在线阅读,更多相关《[游戏开发]天龙八部技术分析报告.pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 天 龙 八 部 技 术 分 析 刘 报 洋 告 通过一段时间对天龙八部这款游戏进行分析研究,主要从客户端入手,从技术角度学习天龙八部游戏中各种实现机制。最终写成此文,献给搜狐游戏,以表敬意。本文主要分为三个部分,分别是 1 天龙八部基本技术实现技术分析,天龙八部基本技术实现技术分析,2 天龙八部天龙八部中使用的资源文件分析中使用的资源文件分析 3 天龙八部中出现的问题及改进意见天龙八部中出现的问题及改进意见。本报告实属本人分析总结,其中必定会有很多错漏之处,望给予指正。一:一:天龙八部的基本实现技术:天龙八部的基本实现技术:所用所用图形图形引擎引擎:Ogre OGRE(Object-Orie
2、nted Graphics Rendering Engine,即:面向对象图形渲染引擎)是一个用 C+开发的面向场景、非常灵活的 3D 引擎,它旨在让开发人员更容易、更直接地利用硬件加速的 3D 图形系统开发应用。这个类库隐藏了底层系统库(如:Direct3D 和 OpenGL)的所有细节,提供了一个基于世界对象和其他直观类的接口。在研究使用 ogre 之前,我一直在学习 torque 引擎,并用它做出了一款 mmorpg游戏 盘古 online,但在考察其内部结构过程中发现其过于复杂且耦合性很高,还有很多冗余代码。这使得项目在发布之后做进一步深入时遇到瓶颈,使得我不得不暂时放置它,来寻求新的
3、解决方案。在研究 ogre 的过程中,我被他清晰的结构所折服,更为他 API 级别的调用接口和插件设计而高兴,这样的设计可以使研究者在引擎学习过程中直接通过底层 API 调用,并且在积累一定程度后可以通过自己写插件来扩充引擎的功能。除此之外他还和 cegui 界面库,ODE 物理库,python、lua 脚本语言有方便的结合接口。这无疑是研究引擎和自主研发引擎的一个很好的入手点,自主开发引擎一直是我一个理想,我慢慢努力,向这个目标迈进。所用物理引擎所用物理引擎:自主研发 我通过游戏中的观察,发现没有实现非常复杂的物理机制,碰撞是使用包围盒的方式实现的。在 bin 文件夹中寻找,没有找到所知的物
4、理库的 dll。故推测物理方面是自主研发的。所用网络层所用网络层:自主研发 据我所知中国拿 ogre 做引擎的人很多,不过网络部分基本都是自己开发的,在国外有 Realm Crafter,Multiverse,Project Darkstar 比较好的网络引擎包,相信在国内也有很多人在用吧。使用的界面库使用的界面库:cegui 这是一套强大的界面库,里面包含了大量游戏中所需要的控件,并且可以自由定制。可以使用辅助工具来图形化设计控件的属性,十分方便。最关键的 cegui 是完全免费的。使用脚本语言使用脚本语言:lua Lua 是与 python 齐名的脚本语言,最早了解他是因为他是著名游戏博德
5、之门的脚本语言,之后在游戏界影响最大的当属应用于 WOW 中。之前用过一段时间 python语言,其以本身的易用性和大量扩展的库而闻名。Lua 和他有很明显的区别,他非常小巧而且更加高效,他所需的库是直接依赖与宿主语言实现的。比如 C/C+。这就决定了他作为游戏脚本语言的先天优势,据我所知现在很多游戏公司在自己的引擎中使用 lua 语言。二天龙八部中使用的资源文件分析二天龙八部中使用的资源文件分析 模型格式模型格式:.mesh 这是 ogre 的标准格式,是二进制格式保存了模型网格的相关信息,如顶点坐标,贴图坐标、顶点法线等。骨骼格式骨骼格式:.skeleton 这是 ogre 的标准骨骼动画
6、文件,是二进制格式,保存了骨骼动画中关键帧信息。贴图文件贴图文件:.jpg、.tga、.dds 文件 不同格式的图片文件,其中 tga 和 dds 拥有 alpha 通道,dds 是可以硬件加速的图形文件。配置文件配置文件:.txt 普通文本文件 文件打包格式文件打包格式:.axp 这是天龙八部特有的文件打包格式。天龙八部目录结构:天龙八部目录结构:Accounts:是记载在本机登录天龙时,登录服务器和用户等信息,根据不同的用户建立不同的文件夹。Bin:天龙八部可执行的.exe 文件和众多需要引用的.dll 动态链接库。DirectX9:微软多媒体应用库,主要使用里面 d3d 部分和 dsou
7、nd 的 API 接口。Helper:保存了众多游戏里面应用到的帮助文件,以 HTML 形式提供。Patch:升级补丁包的存放位置。Lanch.exe 天龙八部游戏引导窗体。Data:游戏所使用所有资源的存放地,下面仔细分析其内部结构。Data 包文件结构:包文件结构:Data/sound.axp:天龙八部中使用的声效文件。其中包括了众多的.wav 波形文件。这种文件与.midi 不用,他在播放时是需要耗 费系统资源的,他保存了原始的声音对应的数字波形信息,在播放时需要 CPU处理,将处理后的结果输送给声卡。MIDI 则可以直接交给声卡播放。Data/brushes.axp:保存了绘制场景地形
8、所需的图片资源。分为 Jpg 和 tga 两种。(比如说无量山的地表纹理贴图)Data/config:保存了各种角色的行为属性和事件任务,通过脚本定义实现。其中包括每种怪物的 ActionSet,各种事件 event 定义(比如说师门任务)等。Data/effect.axp:保存了游戏中所有的技能和装备的效果文件,主要是定义粒子相关的发射器,效果器等属性。(比如一个法杖在镶嵌了不同的宝石后会有什么样的粒子效果)Data/interface.axp:保存了各种界面元素的配置文件,用以标识各种窗口、界面的位置,大小等信息。主要以 cegui 的配置文件.layout、xml 文件,lua 脚本文件
9、为主。Data/LanchSkin.axp:保存了登录引导界面的图片文件,比如背景图片文件,按钮图片等。Data/Material.axp:保存了各种模型贴图和河流等部分环境场景贴图文件以.dds 格式存储。Data/model.axp:保存了游戏中所用到的所有场景模型、角色模型的 mesh 文件,和 skeleton 骨骼动画文件。Data/scene.axp 中资源:为具体场景的地形资源,其中包括如下几类 1.Esd:记载着该场景声音信息的文本文件,具体格式如下:ID 声音 ID 声源位置 X 声源位置 Z 有效距离 连播次数 间隔时间(ms)下一次连播间隔时间(ms)0 387 128
10、128 512 1 360 21 37 15 2 360 10 53 15 示例中只定义了声音的 ID,生源位置的 X 和 Z 坐标和听到声音的有效距离。2.Gridinfo:地形网格的属性 3.heightmap:地形高度图,用于生成地形网格高度 4.lightmap:地形光照贴图,用于生成地形阴影。5.path:记载地图中的路径信息(可能是怪物的路径点集合)6.rangion:文件属性未知 7.scene:保存场景中 enviroment、light、StaticEntity、Model 等实例的信息。用 XML 格式保存。示例:7.Terrain:保存地形网格的贴图信息,包括高度图信息,
11、光照贴图信息,网格信息,所用到的贴图列表索引,地形信息,名字、每块地形大小,相应x,z方向的块数。地形的缩放倍数 地形的中心点位置 高度图 地形网格模型信息 光照贴图 每块贴图对应的绘制面积 地形层次的材质信息 8.WCollision:可能是场景中会发生碰撞的位置标记。(如果这样就像 2D 游戏中的碰撞实现了)。三三 天龙八部中出现的问题及改进意见天龙八部中出现的问题及改进意见 1 场景管理场景管理:出现现象:出现现象:天龙八部使用 ogre 的八叉树室外场景管理技术,地形通过 LOD 提高效率。没有提供室内场景的管理方式,所以在很多应该在室内处理的场景没有实现,例如:洞穴的场景、大型多连通
12、房间内部的场景。原因分析:原因分析:ogre 提供了强大的室外场景管理,但对于室内场景则是使用 quake3 的地形文件,通过 BSP、portal 技术实现的管理,众所周知这是卡马克在 quake 中使用的管理场景的技术,由于使用的年代过早,现在已经比较少在商业引擎中所使用,再者这种格式已经被很多人所了解,如果加密不当,存在安全隐患。改进方案改进方案:结合现有资料,重新写一个室内地形的管理方法,使用 BSP、portal 技术实现的管理是现在成熟可行的选择。2 场景剔除:场景剔除:(NPC 门卫人物裁切前)(NPC 门卫人物裁切后)出现现象:出现现象:天龙八部中使用的第三人称摄像机大体是从上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏开发 游戏 开发 天龙八部 技术 分析 报告
限制150内