[声明]
本人水平有限,只对于长久以来研究的几个经典3d游戏引擎的设计思想、程序架构和应用行深入剖析的结果与游戏开发同行分享,文档有不妥之处请指出,期待我们的共同进步。
引擎名称:
1.       orge( 鬼怪)
2.       Irrlicht (鬼火),
3.       Nebula( 星云)
4.       klayGE (。。)

前言:目前,开源3d游戏引擎已经趋近于商业化引擎标准,许多引擎在图形渲染,内存分配,网络通讯方面甚超越了许多商业引擎。这些开源引擎的共同特点是这样的:
(1)引擎框架:多数的3d引擎框架为树形结构。框架最为清晰、经典的游戏引擎是Nebula星云引擎。父子节点构成了整个框架的层次,首先nebula有一个叫nRoot的类,它是所有对象类的基类,nRoot中有一个名字变量,有一个parent指针指向它的父结点 ,
  还有一个childlist链表保存它所拥有的子结点.因为结点也是nRoot类,所有结点的子结点中也可能有子结点 ,
  这样就形成了一个树形目录结构.nRoot中有一个nRoot* Find( const char* name )方法,功能很简单,就是遍历自已的
  childlist链表对比每一个nRoot结点对象的名字,如果相同就返回些对象的指针.。其他引擎也有类似的框架,比如orge的root根节点下面子节点代表每一个功能模块。

(2)内存管理:多数采取引用计数模式(引用计数为每当初始化一个指针,在函数运行完毕后自动释放,并且把这个过程进行计数)这样的好处在于对于项目的可控性很有保障,避免内存泄漏,重命名对象等。但是这种
(3)图形处理:多采取三个经典模块:场景管理器,资源管理器,渲染器。这种划分模式以orge鬼怪引擎和irrlicht鬼火引擎最为典型。先进的引擎还配有一套专门从事对于图形编程的脚本语言。比如orge内置一套脚本,可以控制场景管理器,资源管理器的图形参数及图形算法进行编辑,这样可以跳过c++繁冗的程序编写过程和漫长的项目编译时间而直接运行察看修改后程序的效果。当然,这种脚本语言模式有些效仿目前最著名的商业游戏引擎unreal3虚幻3引擎。关于场景的图形算法大多数采用8叉树与bsp(二叉空间分割)方法,支持大游戏场景的局部渲染功能。
(4)跨平台性:
本文要介绍的4个3d引擎都具有跨平台开发性能,一般可以支持多种操作系统和开发工具,比如windous下的vs.net,linux下的codewarrior等。而且像irrilicht鬼火这种引擎还支持多种语言,vc,vb等,但是目前版本其本身并无脚本可用。这些引擎还支持多种底层图形api,比如dx,opengl等。开发者可以随意选择熟悉的3d渲染api来驱动游戏程序。注意:KlayGE是本文唯一入选的国产引擎,但该引擎没有支持多api渲染机制,底层图形方面只是用opengl实现。
(5)网络部分功能较差:目前说到的几个引擎在网络方面都不是很强大,比如著名的orge引擎就是专注的图形引擎,不具备服务器-客户端的网络工作模式。目前,只有北京涂鸦产的起点引擎在网络方面在国产引擎中可以算是比较出色。值得一提的是在网络方面比较强大的商业引擎目前最火的就是bigworld,如果利用适当的渲染算法该引擎可以轻松支撑上百人
的在线pk。
(6)可接收多种3d美术资源,比如鬼火引擎可以接受Maya,3DStudio Max,COLLADA,DeleD,Milkshape,Quake 3 levels,Quake2 models,DirectX,Pulsar,My3DTools,FSRad以及Cartography Shop工具导出的资源。但是orge可接受的种类要更多。
支持骨骼动画和关键贞动画两种经典动画形式。

好了,目前我们基本了解了市面上著名的 3d引擎的基本共同点,那么下面就列举以下他们的特性及优缺点。
1.Orge鬼怪:
优点:(1)强悍的图形渲染质量。该引擎的粒子系统很强,制作的光影,雾化效果极佳,图形方面全面超过torque,朱比特等普通商业引擎的能力。
(2)高效的图形编程机制。内置的特殊脚本语言,并且具有可视化的编辑工具,可以直接进行外部数据修改,内部调试。
缺点:(1)网络部分的空白
(2)高度计算量和高精度的渲染模式,使得内存和显存的压力都很大,做出的程序整体效率不高。没有相关随着硬件加速调整渲染算法和参数的api。
2.Irrlicht鬼火:
优点:(1)精悍的引擎框架,和orge及其相似。
(2)高质量的图形渲染,虽然没有orge的质量优越,但是比起一般的商业引擎仍然略胜一筹。
(3)清晰单一的c++语言实现使得引擎没有繁冗庞大的外部脚本编译器。
(4)支持根据硬件加速调整渲染模块的参数和算法的机制。整体程序会跑得很快流畅,但是画质降低。牺牲画质来保证性能。
缺点:(1)缺乏高效开发的脚本。无法像orge那样高质量高效率的进行图形编程。
(2)相对其它游戏引擎鬼火的框架可扩展性不强,设计模式相对单调而简洁。
(3)支持图形算法单一,比如骨骼动画多贴图需要很麻烦的过程。

作者:Darren 架构师
下一篇预告《四大开源3d游戏引擎探究(前言下)》
内容概述:1。将继续对于Nebula星云引擎和KlayGE引擎进行性能优缺点对比
2。将对于四大引擎擅长开发的不同种类游戏进行阐述。

[原创]四大开源3d游戏引擎探究(前言上)相关推荐

  1. 基于Java的开源3D游戏引擎jMonkeyEngine

    jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就 ...

  2. 3D游戏 java_基于Java的开源3D游戏引擎jMonkeyEngine

    jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就 ...

  3. 支持树莓派Raspberry Pi的Delphi开源3D游戏引擎CGE:Castle Game Engine

    最近我得到了我的Raspberry Pi 4设备,我对这些可能性感到兴奋(具有全功能Linux的小型便宜设备).我很高兴看到Castle Game Engine在它上面完美运行?以下是在Raspber ...

  4. 原创2D/3D游戏引擎源代码开源

    个人2D.3D游戏引擎开源 早期的作品代码结构较差,对大家造成的误导敬请谅解.我会不断的更新个人作品,请大家始终参考最新的源码.在此感谢热心网友给我提的宝贵意见. (2015.4.12修改:更新了2D ...

  5. 开源Flash游戏引擎PushButton Engine

    介绍开源Flash游戏引擎PushButton Engine  最近,一个开源 的Flash游戏引擎PushButton引擎发布了,与以往的游戏引擎不同的是,这是一个模块化的游戏引擎,也就是说它提供了 ...

  6. 开源Flash游戏引擎

    FFlimation Fflimation 引擎是as3的二维(类似暗黑破坏神)引擎.主要用于游戏开发.这个项目的主要目的是提供一个稳定的开发平台,这样游戏设计师就可以忘记游戏渲染引擎把精力集中在游戏 ...

  7. 棒!使用.NET Core构建3D游戏引擎

    原文地址:https://mellinoe.wordpress.com/2017/01/18/net-core-game-engine/ 作者:ERIC MELLINO 翻译:杨晓东(Savorboa ...

  8. iPhone的2D/3D游戏引擎

    近日在学习iPhone游戏开发,对于2D和3D游戏引擎的使用大费了一番周折.这方面的内容国内网站还很少,只能通过google来查找国外的一些网站资料.还好,总算找到了适合自己和团队学习的引擎. 先对可 ...

  9. 3D游戏引擎架构设计基础 - 学堂在线慕课习题答案

    3D游戏引擎架构设计基础 - 学堂在线慕课习题答案 第一单元 第二单元 上完这门课顺便把课后的习题答案整理出来了 第一单元 问题:关于游戏引擎的正确描述是 答案:设计游戏的独立软件 问题:使用游戏引擎 ...

最新文章

  1. java 7 学习笔记_Java学习笔记7-网络编程
  2. 【任务脚本】更新jd年兽任务脚本,京东淘宝活动任务全自动程序
  3. C++继承机制下的析构函数
  4. (素材源代码) 猫猫学iOS 之UIDynamic重力、弹性碰撞吸附等现象牛逼Demo
  5. java 设置系统参数_Java如何设置系统参数和运行参数
  6. 第五节: EF高级属性(一) 之 本地缓存、立即加载、延迟加载(不含导航属性)
  7. C++智能指针中unique_ptr部分内容的讲解
  8. 笔记本计算机死机后如何启动,电脑戴尔死机如何重新启动的解决方法
  9. stm32 引脚功能重复_STM32的复用时钟何时开启?
  10. 将图片储存在dataset_最新15-16方联体垃圾箱价格图片
  11. 项目方说性能达到百万TPS,如何测试它的可信度?
  12. g标签 怎么设置svg_svg g标签的运用
  13. 我们自研的那些Devops工具
  14. HFSS - GSM 900 单频PIFA天线的设计与仿真
  15. 【MATLAB】MATLAB 2017A 软件安装
  16. 6步解决win7局域网内传输慢的问题
  17. it企业实习_IT公司实习报告总结
  18. java eml 附件_向EML文件追加附件的Java实现
  19. 微信智能机器人助手,基于hook技术,自动聊天机器人
  20. Linux - 权限管理(用户)

热门文章

  1. WinXP系统下Opencms的安装与配置
  2. easyexcel的使用-个人笔记
  3. Attention Is All You Need论文笔记
  4. 万维网互联网计算机网络的区别,互联网、万维网、因特网之间有什么区别?
  5. Jarvis-OJ WEB 多题writeup
  6. 实现自己的日志打印系统
  7. 局域网或外网Nexus私服下载安装仓库使用整理(Linux环境)这一篇足够
  8. maven多模块依赖导入失败以及私服下载包卡死
  9. 1.8-20:反反复复
  10. 易语言EIP永久注入