经典3d游戏引擎的设计思想、程序架构和应用行

经典3d游戏引擎的设计思想、程序架构和应用行

发动机名称:

1. 奥格(幽灵)

2. Irrlicht(鬼火),

3.星云

4.klayGE(..)

前言:目前,开源3D游戏引擎已经逼近商业引擎标准。 很多引擎在图形渲染、内存分配、网络通信等方面已经超越了很多商业引擎。 这些开源引擎的共同特点如下:

开源3d软件_开源游戏引擎_开源的3d游戏引擎

(1)引擎框架:大多数3D引擎框架都是树形结构。 最清晰、最经典的游戏引擎是Nebula引擎。 父节点和子节点构成了整个框架的层次结构。 首先,Nebula 有一个名为 nRoot 的类,它是所有对象类的基类。 nRoot中有一个name变量,还有一个parent指针指向它的父节点。

还有一个childlist链表,用来保存它拥有的子节点。 因为节点也是nRoot类,所以所有节点的子节点也可能有子节点。

这就形成了一个树形目录结构。 nRoot 中有一个 nRoot* Find( const char* name) 方法。 功能很简单,就是遍历自己

childlist链表比较每个nRoot节点对象的名称,如果相同则返回指向这些对象的指针。 其他引擎也有类似的框架。 例如orge根节点下的子节点代表各个功能模块。

(2)内存管理:大多采用引用计数方式(引用计数是指每次初始化一个指针,函数运行完毕后自动释放,进程进行计数)。 这样做的好处是保证了项目的可控性。 避免内存泄漏、重命名对象等。但是这个

开源游戏引擎_开源的3d游戏引擎_开源3d软件

(3)图形处理:采用三个比较经典的模块:场景管理器、资源管理器、渲染器。 该师型号最典型的是orge幽灵引擎和irrlicht幽灵消防车。 先进的引擎还配备了专门用于图形编程的脚本语言。 例如,orge有一组内置脚本,可以控制场景管理器和资源管理器的图形参数和图形算法进行编辑。 这样就可以跳过C++繁琐的编程过程和漫长的项目编译时间开源的3d游戏引擎,直接运行就可以看到修改后的程序的效果。 。 当然,这种脚本语言模型有些模仿了目前最著名的商业游戏引擎Unreal 3引擎。 场景的图形算法大多采用八叉树和bsp(二元空间分割)方法来支持大型游戏场景的本地渲染功能。

(4) 跨平台:

本文介绍的四种3D引擎都具备跨平台开发能力,一般可以支持多种操作系统和开发工具,比如windous下的、linux下的codewarrior等。而且像irrilicht这样的引擎还支持多种语言, vc、vb等,但当前版本没有可用的脚本。 这些引擎还支持多种底层图形API,如DX、OpenGL等3D道具,开发者可以自由选择熟悉的3D渲染API来驱动游戏程序。 注:KlayGE是本文唯一选用的国产引擎,但该引擎不支持多api渲染机制,底层图形仅使用opengl实现。

(5)网络部分功能较差:目前提到的引擎在网络方面都不是很强大。 例如著名的orge引擎就是专用的图形引擎,并不具有服务器-客户端网络工作模式。 目前国内引擎中网络方面只有北京涂鸦生产的起点引擎才算优秀。值得一提的是音乐音效,网络方面最受欢迎的商业引擎是BigWorld。 如果使用适当的渲染算法,这个引擎可以轻松支持数百人。

奥莱恩峰

开源的3d游戏引擎_开源3d软件_开源游戏引擎

(6)可以接收多种3D美术资源。 例如,Will-O-Wisp 引擎可以接受 Maya、3DStudio Max、COLLADA、DeleD、Milkshape、Quake 3 级别、Quake2 模型、DirectX、Pulsar、My3DTools、FSRad 和 Cartography Shop 工具导出的资源。 但orge接受的类型更多。

支持两种经典的动画形式:骨骼动画和关键帧动画。

好了,现在我们已经基本了解了市面上著名的3D引擎的基本共性,那么下面我们就来列出它们的特点、优缺点。

1.奥格幽灵:

优点:(1)强大的图形渲染质量。 这个引擎的粒子系统非常强大,产生的光、影、雾效果非常出色。 在图形方面,全面超越了Torque、Jupiter等普通商用引擎的能力。

(2)高效的图形编程机制。 它内置专用脚本语言和可视化编辑工具开源的3d游戏引擎,可以直接修改外部数据并进行内部调试。

缺点:(1)网络部分有空白

(2)高计算量、高精度的渲染模式对内存和显存造成很大压力,程序整体效率不高。 没有用于通过硬件加速调整渲染算法和参数的 API。

2. 鬼火:

优点:(1)发动机架构紧凑,与orge非常相似。

开源的3d游戏引擎_开源3d软件_开源游戏引擎

(2)高质量的图形渲染,虽然不如orge那么优越,但还是比普通商业引擎稍好一些。

(3)清晰且单一的C++语言实现使得引擎无需繁琐且庞大的外部脚本编译器。

(4)支持根据硬件加速来调整渲染模块的参数和算法的机制。 整体程序运行会快速、流畅,但图像质量会有所下降。 为了性能而牺牲图像质量。

缺点:(1)缺乏高效的开发脚本。 不可能像orge那样高质量、高效率地进行图形编程。

(2)与其他游戏引擎相比,Wisp的框架扩展性不太好,设计模式也比较单调和简单。

(3)支持单一图形算法。 例如,具有多个纹理的骨骼动画需要一个非常麻烦的过程。

文章来源:https://blog.csdn.net/pizi0475/article/details/8008049