logo资料库

delta3d中文教程.pdf

第1页 / 共135页
第2页 / 共135页
第3页 / 共135页
第4页 / 共135页
第5页 / 共135页
第6页 / 共135页
第7页 / 共135页
第8页 / 共135页
资料共135页,剩余部分请下载后查看
DELTA3D 中文指南 Oman Email : gelu110@sohu.com 转载请注明出处。 前言 该文档内容来源于那份古老的英文教程,中间删除了一些没用的片段以及场 景编辑器、粒子编辑器和 3Dmax 的介绍,只保留了 Delta3D 引擎开发本身的一些 内容。该译文是为个人学习之用,没做过多斟酌和细致处理,难免有纰漏,还请 理解。翻译过程中原文的 actor 本人硬是翻译成了”角色”,本人更喜欢这个词, 各位看官要是不习惯,也就将就着吧。此外,由于原文件是基于 1.3 版本的,本 人没有结合新版本进行纠正一些内容,有时间该部分工作会在今后补上。鉴于本 人英文水平及专业技术水平非常有限,翻译或整理的不当之处还请见谅。 一、特点 Delta3D 是一套可以用在游戏开发、仿真项目开发以及其他三维图像应用开 发方面的开源引擎。该引擎采用模块化设计,集成了著名的 OSG 图形渲染引擎, ODE 物理引擎,CAL3D 动画库,OpenAL 立体音效,Qt,CEGUI,Xerces-C,Producer, 智能感知驱动,HawkNL 网络引擎,以及 GNE 游戏网络引擎。Delta3D 没有采用将 这些第三方引擎或框架屏蔽到底层的方式,而是采用比较简单的方式直接将其集 成在一起,这样以来,用户在需要的时候就可以直接访问这些库的 API,使用起 来更加灵活。 Delta3D 的主要目的就是提供一套可以在游戏开发以及所有虚拟现实应用开 发方便使用的简单、灵活的 API 库。在这些基础组件的基础上,它还提供了很多 的工具供用户使用,如仿真工具,训练工具,游戏场景编辑器,BSP 编译器,粒 子编辑器,模型浏览器,HLA 浏览器等。此外,它还扩展了一些应用开发框架, 比如应用基础类库 dtABC,动态角色层 dtDAL,通过该框架可以在动态情况下处 理角色的角色代理以及角色属性等,直接方法连接的信号/槽(实现系统的消息机 制),用于管理角色的游戏管理器,插件式的地形读取、渲染、装饰工具以及用 于角色之间互相通信的高层消息处理。 dtCore 包含以下基本功能:  输入设备映射 (Keyboard, Mouse, Joystick, Trackers) 1
 运动模型(类似 OSG 的场景漫游器,我们可以用 Delta3D 的这种运动模型 对场景角色施加运动驱动,也可以直接驱动相机,我们也可以直接用 OSG 的场景漫游器) (Fly, UFO, Walk, Orbit, First Person)  环境渲染 (clouds, haze, skyboxes, time of day)  粒子特效 (Smoke, Explosion, Custom)  地形渲染 (Infinite Procedural terrain, Heightfield-based terrain)  文件加载 o .3dc, .3ds, .ac, .dw, .flt, .geo, .ive, .logo, .lwo, .lws , .md2, .obj, .osg, .tgz, .x, .zip o .bmp, .dds, .gif, .jpg, .pic, .png, .pnm, .rgb, .tga, .ti ff, .txp o .wav  相机控制 (Field of View, Tripod)  多相机支持  多窗口支持  物理系统 (Rigid Body, Collision Detection, Auto-bounding shapes)  Open GL 光照  贝塞尔路径节点  OpenGL 2.0 支持  GLSL 顶点、片元着色器 dtAnimation(新版本已废除 dtChar,不知道是删除了 还是被其他库替换了,因为对老版本不清楚,感觉像 是现在的 dtAnimation)  动画混合 dtABC 高层应用开发基础组件. 可以看做是一个应用层框架,方便应用层的开发.  应用程序模板  天气接口 (visibility, cloud coverage)  与 FLTK 的窗口集成  与其他窗口系统集成的控件封装 dtHLA(新版本已废除,统一用 dtNet) dtTerrain 2
实现地形加载、渲染、装饰的地形处理框架。对地形数据的读取、渲染及地形装 饰采用插件式结构。  地形分页分块, 地形图像处理, 地形噪声生成  DTED 数据读取  具有连续层次细节的 SOARX 渲染  程序化的植被布放 – land cover classification (LCC) support  图形覆盖 – GEOTIFF support dtDAL 动态角色层提供了一个创建、访问和操纵场景角色的通用框架,主要包含以下内 容:  角色代理和角色属性  角色插件库管理  角色工程和角色关系图加载  角色属性类型: Sound, Terrain, Character, Texture, Static Mesh, Particle System, Enumeration, Actor, Color, Vec2/3/4, String, Int, Double, and more  角色代理基础引擎 dtGUI 与 CEGUI 结合的 GUI 接口库  UI 元素绘制和渲染  可扩展的界面皮肤接口  默认 GUI dtGame 该库为用户提供了一个创建复杂游戏或仿真训练应用的完整框架。游戏管理器是 一个用于单机或 C/S 网络模式下系统角色或组件之间进行通信的高层基础框架。  游戏角色和代理  GM 组件结构采用插件方式,有默认的消息处理器,规则组件和日志组建;  消息组件结构 – 包含消息和消息工厂  网络诊断 – 支持单机、C/S 网络模式以及回放  用于发送、接收和记录消息的消息流  基础的游戏客户端、服务器管理器 3
dtUtil Delta3D 中使用的基础实用对象功能.  文件日志和 XercesXML 文件操作  纹理、噪声、矩阵、字符串操作  程序库管理  类型安全 dtBSP(新版本已废除) dtAudio 提供高级声音回放功能  2D/3D 音效  完整的音效控制 (gain, pitch, position, play, stop, pause, rewind, etc.)  多普勒音效  声音硬件的高效使用 dtNet 提供用于多玩家网络应用的高层 API  C/S 结构  可靠/非可靠数据包网络传输 dtPython* 提供通过 Python 脚本访问 API 的接口  完整的 API 访问接口 *需要下载 Python 和 Boost STAGE –仿真、训练、游戏场景编辑器 一个完整的可视化的场景编辑器,可以通过该编辑器创建程序场景。 4
 地图编辑 – 工程资源和库(如角色库)管理  角色的可视化创建与操纵  属性编辑器以及角色链接的撤销与重做  单屏多视口  线框光照及纹理模式  可配置的撤销、重做用户接口  角色搜索与全局角色管理  纹理, 网格, 声音和粒子浏览 Tests Delta3D 提供了一系列应用例程测试,通过这些测试可以帮助用户进行快速熟悉 Delta3D 的使用以及应用开发。  几乎覆盖了 Delta3D 各个方面的几十个实验例程  几千行的测试单元代码 Cross Platform Supports Windows and Linux (Fedora Core 4) binary and compilation.  MS Visual Studio 2003 solutions and projects  Complete SCons scripts Utilities  图形化的粒子特效编辑器  模型浏览器  BSP Compiler (已废除)  HLA 图像化的行为浏览器 二、 三、GM Tutorial Parts 1.GM Tutorial Parts 1 and 2 5
现在让我们开始游戏管理器开发指南之路。该指南的目的就是让新手熟悉在使用 Delta3D 的游戏管理器开发游戏或仿真应用时会用到工具。  Part One: 游戏管理器介绍 o 什么是游戏管理器? o 什么是游戏角色? o 什么事游戏管理器组件? o 什么是游戏消息?  Part Two: 游戏角色 o Hover 坦克游戏角色 o Hover 坦克游戏角色代理 o 注册我们指南中的游戏角色 o 在场景编辑器中加载我们的 Hover 坦克  Part Three: 用 GameStart 创建一个游戏 o GameStart 和 the GameEntryPoint 库 o 创建 TutorialGameEntryPoint 类  Part Four:消息以及可激活体 o 游戏事件 o 可激活体 (ie. Message Handlers) o 输入组件 o 坦克驱动 1. Part One – Introduction to the Game Manager 这部分介绍游戏管理器的基础结构。包括游戏管理器,游戏角色,游戏组件 以及游戏消息。下图就是这几大部分的一个整体的高层结构图。 6
Figure 1. Game Manager Overview The Game Manager (GM)? 什么是游戏管理器? 如果你看了上面这个图, 你最先应该注意到游戏管理 器拥有所有的游戏角色,普通角色,组件以及消息。具体来说就是它管理你的整 个虚拟世界中存在的所有要素以及角色或组件之间的交互。 Delta3D 给了我们需要的所有的东西:场景管理,物理系统,立体音效,对 象加载,动态角色库,环境特效,光照,地形支持,相机以及角色动画。 但是,有了这些我们怎么将它们放在一起组成个游戏呢?在游戏中谁来维护 游戏中所有对象的列表?还有,如何管理通信?武器装备如何进入游戏并装备玩 家呢? 如何告诉玩家他被射中了?并且,如果你射中了他,你怎么告诉网络上 得其它玩家他受伤了?有很多很多需要我们关注如何管理我们的游戏。幸运的 是,游戏管理器提供了一个核心基础结构来完成这些。 消息,角色及组件! 7
为了管理你的游戏,游戏管理器主要做三件事。第一,也是最重要的就是管理消 息,确切讲就是游戏消息。通过消息,我们就可以在角色、组件以及游戏管理器 之间进行通信。消息可以用于任何事物之间的通信,比如玩家建康指数的更新, 人质营救事件通知,新的玩家进入我们的虚拟世界,甚至是简单的滴答事件。在 系统内部消息在所有的行为以及状态变化之间进行通信,但消息并不发送消息本 身,消息的发送由游戏管理器来处理,游戏管理器接收、路由角色以及组件的消 息。 游戏管理器的第二大工作就是维护系统内部的所有的角色,包括游戏角色以 及以及普通角色。它可以跟踪我们通过代码创建或者从 Map 文件(由场景管理器 创建)加载进来的角色。同喜管理器可以通知角色处理消息,保证它们在合适的 时间进入场景或退出场景,甚至通知它们对滴答事件作出响应。 第三大工作就是提供游戏管理组件功能。你可能要问,什么是游戏组件?一 个游戏组件就是一个和游戏消息一起工作的高层对象。但是,那不是游戏角色的 工作吗?是,也不是。为什么这么说呢?游戏角色的确处理消息,但是,我们在 游戏中往往会有很多的角色实例。而游戏组件处于更高层面。它们处理像网络行 为,游戏规则,日志,航位推测等事务。而游戏角色只是接受它们感兴趣的特定 消息,而游戏组件接受所有的消息。 什么是游戏角色? 希望你对游戏角色和游戏角色代理已经熟悉了。那么,什么是游戏角色呢? 简单说一个游戏角色就是一个被设计成为可以直接和游戏管理器一起工作的一 个角色。如果你对游戏角色布熟悉的话,现在应该花点时间学习一下游戏角色以 及动态角色层的概念。 为什么我们要区分普通角色和游戏角色呢?普通角色或者称之为非游戏角 色一般指那些游戏世界中得静态的物体,比如房子,不移动的灯光,树木或者地 形等。但是游戏中只有静态的物体是很枯燥的,游戏角色是那些给你的游戏带来 生命的东西。游戏角色可以做出滴答响应,可以处理游戏消息并且可以和整个游 戏世界进行交互。 Figure 2. Game Actor Proxy 游戏角色是建立在动态角色层中的角色概念基础上的。所有自然地,一个游戏角 色就需要一个游戏角色代理。事实上,游戏管理器只识别游戏角色代理,不直接 识别游戏角色,这就意味着我们必须使用角色代理。聚焦到角色代理上,游戏管 理器就会变得非常灵活。就想游戏场景管理器一样,对它们来说,游戏管理器的 通用性非常重要。它不必知道一个坦克和一个玩家之间的区别,也不必知道一个 8
分享到:
收藏