四大开源3d游戏引擎探究
本人水平有限,只对于长久以来研究的几个经典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)支持图形算法单一,比如骨骼动画多贴图需要很麻烦的过程
ps
开源(Open Source,开放源码)被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。
对游戏编程初哥来说,选择一个好的游戏引擎是一个很头疼的事。市面上鱼目混杂,并且价格不菲。今天我要隆重推出开源游戏引擎五强(严格上说是四个,有一个是图像引擎)。他们不仅被证明是可靠的,而且全部开放源码。
1. Irrlicht http://irrlicht.sourceforge.net/
始于2003,次年即被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API.
优点:容易上手;跨平台;自带XML解析器;大的社区;
缺点:最近开发慢下来了
2. Panda3D http://www.panda3d.org/
由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。
优点:有用的社区;大量功能;定期开发;
缺点:缺乏工具支持;极差的文档;
3. jME (爪哇猴子引擎) http://www.jmonkeyengine.com/
全部由Java实现。最流行的Java游戏引擎之一。
优点:容易上手;活跃的社区;内置物理引擎
缺点:我不太知道,因为没用过
4. OGRE http://www.ogre3d.org/
图像引擎中最好的一个。2000年立的项。推荐使用C++语言。需要非常熟悉编程才行。初学者不宜。
优点:大量功能;优异的文档;大规模的社区;活跃的开发
缺点:不适合初哥;只有图像引擎
5. Crystal Space http://www.crystalspace3d.org/main/Main_Page
1997年发行,用C++编写的开源游戏引擎。推荐使用C++
优点:不错的社区支持;大量功能;
缺点:难学;
转自:http://www.nxist.com/dq/Main/NewsView.asp?ID=354
开源游戏引擎介绍
2D:
Allegro.cc - Main
老牌子了,和SDL同时是很经典两个EG开发组件,最近貌似在和PY进行联合?
ClanLib - ClanLib Game SDK
CLANLIB是以前听过最复杂最丰富的SDK,看看链接
http://www.clanlib.org/docs/clanlib-0.8.0/Reference/html/modules.html
感觉和SDL和ALLEGRO同一个等级,不过自己并没有用过
Crossfire - The Multiplayer Adventure Game
http://crossfire.real-time.com/
感觉比较强大的冒险游戏AVG开发工具,最近也一直在更新
Haaf's Game Engine - Hardware accelerated 2D game engine
就是HGE,很有名,后来开源了,一般大部分人都很喜欢用的EG,另外Y2GE前面版本基本上就是模仿了HGE
http://hge.relishgames.com/downloads.html
The SDL Archives
http://twomix.devolution.com/pipermail/sdl/
是不是SDL的,看过去一堆文件GZIP不知道做啥用的
总之提供一下SDL的主页LINK,这个也是经典:很多游戏都是基于SDL/OPENGE开发的
----------------------
推荐的几个EG辅助工具,都是图片处理的
----------------------
libAfterImage Imaging Library.
http://afterstep.sourceforge.net/afterimage/
主要用来提供图片读取的辅助工具,基本支持常见的图片格式,开放源码:
http://www.afterstep.org/afterimage/getcode.php
The CImg Library - C++ Template Image Processing Library
似乎C++总和模版有关,总之是开源的图像处理LIB,重点突出了需要编写的代码量少,基本上在LIB下面图像
处理只需要100来行以内,在SF上面有:
http://cimg.sourceforge.net/download.shtml
---------------------
比较不错的其他站点,有些LIB其实自己没有看过,可能很不错,虽然不全,但是如果开发小工具反而更加使用
---------------------
. Sekoya etc. . Open-Source Game Dev.
http://sekoya-games.sourceforge.net/
MMORPG,好像是3个学生样的人写的XD
http://sekoya-games.sourceforge.net/en/index.php?pagename=projets.html
Daimonin MMORPG
http://web2.168180.vserver.de/
MMORPG,开源,可以从下载链接处得到
http://www.daimonin.net/index.php?module=htmlpages&func=display&pid=5
freedesktop.org
http://www.freedesktop.org/Software/glitz
Glitz EG,主页介绍比较简单,可以获得原代码
g2 graphical library
算是一个跨语言的EG,支持C和FORTRAN 还有PY PERL,在SF上面有链接
http://sourceforge.net/project/showfiles.php?group_id=2180
Game Maker Pages
很经典的2D游戏开发SDK,可以说和RMXP相媲美
Game Maker Games Home
http://www.gamemakergames.com/
貌似是开发的游戏下载的页面?
Grim 2D API - hardware accelerated 2D graphics
http://grim.10tons.org/downloads.html
首先说明,页面相当精简,加载速度很快,样式感觉和HGE Y2GE很像
好像是BIN的发布版本
http://koti.mbnet.fi/temper/grim/downloads.html
http--www.artofcode.com-libart.html
http://www.artofcode.com/libart.html
感觉页面没有很详细的介绍,罗列一些主要的功能,基本上就是常见的2D EG,不过支持跨平台LINUX
HZ - a real-time action strategy engine
http://pulp.fiction.net/~jeske/Projects/HZ/
比较旧的一个EG,图像处理不错,另外原本用于WINDOWS DDRAW,后来也支持了LINUX
http://www.clearsilver.net/~jeske/Projects/HZ/snapshots/
Intro Page
http://spriteworldx.sourceforge.net/
2D游戏引擎,基于SDL在SF上面有
http://sourceforge.net/projects/spriteworldx/
OHRRPGCE - News
http://hamsterrepublic.com/ohrrpgce/
类似于RM2003样子的RPG开发工具,开放原代码:
http://hamsterrepublic.com/ohrrpgce/index.php/Source.html
OpenRPG Online Virtual Tabletop
急于PYTHON写的RPG,可以免费获得,在SF上面有
http://www.openrpg.com/index.php?page=install
SxDL Game Development Toolkit Latest News
很早以前听过,当时以为是和SDL有关的东西,实际上它是WINDOWS+DX的EG
页面就是SF上的:
http://sourceforge.net/projects/sxdl/
The Cycon Online Gaming (COG) Engine
http://cogengine.sourceforge.net/
从介绍上面来看已经算是比较复杂的一套EG了——不过它的目标是非程序员也能够编写网络视频游戏,
跨平台并且开源,另外也由APPLICATION DEVELOPMENT可以通过UI开发游戏
http://cogengine.sourceforge.net/downloads.html
The Lost Realm of Anoria
从效果上面看不错的3DEG,另外在SF上面有它的下载
https://sourceforge.net/projects/lroa/
The Scrolling Game Development Kit Homepage
http://gamedev.sourceforge.net/
看起来比较清爽的2D游戏开发EG,使用的是DX,可以在SF上面看到下载
http://gamedev.sourceforge.net/download.shtml
The VERGE game creation system free games since 1997.
从介绍上来看引擎好像已经不更新了,最近的版本好像是前年的:
http://www.verge-rpg.com/files/detail.php?id=648&archive=no
不过应该没有死掉,
Tile Studio
http://tilestudio.sourceforge.net/
正如其名称,TILE的作图,感觉一直在更新,曾经用过
原代码和BIN在SF上面:
http://sourceforge.net/project/showfiles.php?group_id=48488
Ultimate 3D Links - 3D Programming DirectX
http://www.mayavistudios.com/3d-programing/directx.htm
提供一堆信息,没有仔细去看了
Underworld - Free Online Multiplayer Game
http://www.dimensionex.net/underworld/
是一个MMORPG的开发,一个人独立完成,源代码在SF上面有提供
http://sourceforge.net/project/showfiles.php?group_id=112169
########
其他一些
########
The Game Development Search Engine
搜索的EG?这里会介绍EG,最近貌似要更新网站?
Planet ZZT++
搜索的EG?
Pcvelocity.com Computer Help Forum
游戏开发论坛?
Shadow Worlds Bruderschaft der Schwerter
http://www.shadowworlds.de/index.jsp
连了好久速度太慢,总之貌似不是一个开源的EG嘛
IsometriX project - free isometric engine
http://www.isometrix.org/project.htm
好像是一个下载游戏的地方?没有看到说的那个引擎
Cyberjoueurs.com Corporate Center
看了好久没有发现究竟是商业的还是免费的,总之没有看到DOWNLOAD XD
BYOND Games!
在线小游戏娱乐的网站?
-----------------
实际上是收费的EG:
-----------------
Wiz2D Game Engine
http://members.shaw.ca/merconconsulting/Wiz2D.htm
Quazal Multiplayer Connectivity
Game engine for Mac os X and Win 32
--------------------
貌似已经失效了的链接:注明,并非说明该EG已经不存在,只是提供的链接无效而已
或许也和自己使用OPERA浏览器有关?
--------------------
YOV408 Technologies - Projects
http://www.yov408.com/html/projects.php?page=3
Rakkarsoft
Ovorp The Worlds Most Powerful 2D Game Engien
http://ovorp.bryanlivingston.com/tiki-index.php
Jarrod Davis Software
http://software.jarroddavis.com/
Gamewiz
CDXLib
Features
http://eclipseeng.sourceforge.net/features.html
Developer's Lair
http://lair.gamedeveloper.net/programming/start.php
DXGame Engine For Visual Basic - 2D Game Engine For Visual Basic - Program your own games using
Visual Basic - The 2D Arcade Game Engine For Visual Basic
crowsoft.net
综合:
Agar - 一个高级图形应用程序框架,用于2D和3D游戏。
Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。
Axiom 引擎 - OGRE的衍生引擎。
Baja 引擎 - 专业品质的图像引擎,用于The Lost Mansion。
Boom - Doom代码的一部分。由TeamTNT开发
Build 引擎 - 一个第一人称射击游戏引擎,用于Duke Nukem 3D。
Havok - 开源物理引擎,广泛应用在各大游戏主机。 ---Havok专注于游戏的仿真技术。其包含的Havok Physics物理引擎是物理模拟计算引擎界的领军者,世界三大物理引擎之首。----比较著名的Havok引擎游戏包括:《星际争霸2》、《暗黑破坏神3》、《战地:叛逆连队2》、《上古卷轴4》、《马克思 佩恩2》、《光晕3》、《半条命2》、《细胞分裂》、《生化危机5》、《F.E.A.R》 、《孤岛惊魂2》、《辐射3》、《阿凡达》、《求生之路》、《正当防卫》、《波斯王子:遗忘之沙》、《孢子》、《争分夺秒》
BYOND - “Build Your Own Net Dream”的所写,支持各种类型的游戏,包括MMORPG。
Ca3D-引擎 - 一个比较成熟的引擎,有自己的SDK,世界编辑器等。
Cadabra 3D 引擎 - 用于快速开发3D游戏。
Catmother - 一个基于BSD授权的引擎,只限个人使用,不能做商业用途。是一家游戏公司的开源引擎。
CheapHack - 一个已经过时的TomazQuake衍生引擎。
Crystal Entity Layer - Crystal Space 3D 引擎的扩充
Crystal Space - 3D应用程序的常规框架。
Cube - Cube2 ──> Sauerbraten
DarkPlaces - 高级开源3D引擎之一。 ----- ---QUAKE1 及其基于 QUAKE1 框架的扩展引擎 DARKPLACES
基于 DARKPLACES 引擎的游戏 —NEXUIZ ,渲染效果极其惊人啊!!!
Delta3d - 整合和其他知名免费引擎,最初由美国军方开发。
DGD - 一个面向对象的MUD引擎。
Doom 引擎 - 现在已经免费的引擎,曾用于Doom和Doom II
DXFramework - 一个简单,带有教学性质的2D/3D引擎,基于DirectX和Visual Studio
DX Studio - 一个专业3D引擎,附带编辑器套件,由Worldweaver公司开发。
Eclipse - 一个2D MMORPG编辑器。
Elysium Source - 2D网络游戏引擎,VB6开发。
Engine 001 - 2D 动作类RPG游戏编辑器。
Epee 引擎 -一个2D/3D开放源代码图像引擎,多平台。
Eternity 引擎 - Doom引擎的改进。
Exult - Ultima VII使用的引擎的开源版。
FIFE - 辐射1和2使用引擎的克隆。
Game Blender - Blender的子项目游戏引擎,用于开发游戏。
Game Maker - 面向对象的软游戏开发平台,支持拖放编辑以及其自己的脚本语言。
GQ - 一个Quake引擎,增添了来自TomazQuake和DarkPlaces的许多新特性。
GZDoom - 基于ZDoom的引擎。
Genesis3D - 用于Windows的3D实时渲染引擎
GemRB - Infinity Engine的一个免费的软件实现。
G3DRuby - 用于高级3D图形。
Haaf's Game Engine - 一个使用硬件加速的2D游戏引擎。
Irrlicht 引擎 - 一个多平台高质量的3D图形引擎。
ioquake3 - 一个基于id Tech 3的引擎
Gosu 2D游戏开发库,用于C++。
Jogre - 一个基于Java的网络游戏引擎。
MRPGe - Visual Basic开发的2D RPG游戏引擎,附带内置的脚本支持,可定制化强,正在开发阶段。
M.U.G.E.N - 2D格斗游戏引擎。
Multiverse Network - 网络游戏开发平台,包含服务端、客户端,以及一些开发工具(对个人免费)
Nebula Device - 由德国的游戏开发工作室开发的实时渲染3D引擎。 --- Nebula2是由德国Radon Lab公司开发的新一代3D游戏引擎。目前市面上有数十款基于Nebula2的商业游戏已经发售
NeL 引擎 - 用于开发网络游戏的引擎。
CAL3D -- 开源骨骼动画引擎.
OctLight - Java游戏引擎,基于OpenGL。
Open Dynamics Engine - 物理引擎
Open Game Engine - 一个开源引擎,包含开发游戏所需的各种组件。
OGRE Engine - 一个非常流行的面向对象图形渲染引擎,亦称OGRE3D。
Online RPG Maker - 一个2D网络游戏引擎,以脚本方式编辑。
Panda3D 引擎 - 基于Python的快速开发游戏引擎。
PlayerWorlds - 一个简洁且广泛使用的2D网络游戏引擎。
PLIB - 包含3D、音效、GUI、窗口管理。支持Linux/Windows/MacOSX。
ProQuake - 更动过的Quake引擎。
Pygame - python游戏引擎,作品见PyWeek
毁灭公爵II引擎 - Quake II的引擎。
毁灭公爵III引擎 - Quake III的引擎。
Reality Factory - 一个开源引擎,面向非程序员开发,基于Genesis3d图形引擎。
Raydium - Maniadrive 使用
RealmForge - 用于微软 .NET Framework的引擎,Visual3D.NET的原始版本。
Sauerbraten - 一个基于Cube引擎的优化版。
Sonic Robo Blast 2 - 深度修改的Doom Legacy引擎
Soya 3D - 基于Python的开源3D引擎
Stratagus - 一个多平台即时战略游戏引擎。
Telejano - Quake引擎的修改版。
Tenebrae - Quake引擎的修改版。
Toi - 一个正在开发的3D游戏引擎,可用于单机和网络游戏开发。
Tomb4 - The engine used to play custom Tomb Raider games built using TRLE (Tomb Raider Level Editor)
vbGORE - 用Visual Basic 6开发的网络游戏引擎(通过3D函数表达2D图形)
Well of Souls - 基于脚本化编辑的2D引擎,附带可视化世界编辑器。
Yake - 组件化,面向对象化的的引擎。
Zak 引擎 - 为业余和专业游戏开发者开发的2D引擎,基于DirectX 8.1和9。支持脚本、贴图地图、音效、粒子系统等。
常见的3D引擎有:Unreal,Quake,Lithtech,OGRE,Nebula,Irrlicht,Truevision3D...等,其中开源免费的有:orge,irrlicht,fly3d, NeoEngine, revolution3d, Nebula2,Genesis3d等。OGRE 在免费、开源的引擎中评价最高,一个原因是作为一个图形渲染引擎,它支持的图形特性最多,所以渲染质量也不错;另一个原因是设计模式的清晰;另外,速度也不错。OGRE 将专注于向一个纯粹的、然而富于协作和扩展性的图形引擎发展,这得益于它的庞大的社群支持,使得很多事情可以通过外挂一些更专业的引擎来实现,物理引擎使用 ODE 、 Tokamak 、 NovodeX ,网络引擎使用 openTNL 、 RakNet 、 eNet ,声音引擎使用 FMod 、 OpenAL ,以及界面引擎使用 CEGUI 。