Difference between revisions of "Ogre"

From Ghoulwiki
Jump to: navigation, search
(why ogre)
 
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
this is about the opensource 3d engine  http://ogre3d.org
 +
 
== why ogre ==
 
== why ogre ==
  
* used by many successful projects [http://www.ogre3d.org/index.php?set_albumName=album07&option=com_gallery&Itemid=55&include=view_album.php gallery] [http://www.ogre3d.org/phpBB2/viewforum.php?f=11 showcase]
+
* currently the most successful and popular opensource engine
** used in several commercial applications ([http://www.ankh-game.com/ ankh],[http://www.pacific-storm.de/home.php pacific storm],... , non-gaming applications...)
+
** used by many successful projects : [http://www.ogre3d.org/gallery/ gallery] [http://www.ogre3d.org/phpBB2/viewforum.php?f=11 showcase]
* big,helpful community irc://irc.freenode.net/Ogre3D [http://www.ogre3d.org/phpBB2/ forum] [http://www.ogre3d.org/wiki/index.php/Main_Page wiki]
+
** used in several commercial applications ([http://www.torchlightgame.com/ torchlight],[http://www.book-of-unwritten-tales.de/ book-of-unwritten-tales],[http://www.ankh-game.com/ ankh],[http://www.pacificstorm.net/ pacific storm],... , non-gaming applications...)
** has repeatedly taken part in [http://code.google.com/soc/2007 google summer of code]
+
** featured in several popular books ( [http://www.amazon.com/gp/product/0136152503?ie=UTF8&tag=ogre-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0136152503 C++ How To Program, 6th Edition] [http://www.ogre3d.org/ogrebookredirectlink.php Pro Ogre 3D Programming ] )
 +
** has repeatedly taken part in [http://code.google.com/soc/2007 google summer of code]  
 +
* big, helpful and experienced community : [http://www.ogre3d.org/phpBB2/ forum] ( 190.000+ articles, 13.000+ registered users) [http://www.ogre3d.org/wiki/index.php/Main_Page wiki] irc://irc.freenode.net/Ogre3D
 
* [http://www.ogre3d.org/index.php?option=com_content&task=view&id=13&Itemid=128 features] superior to almost any other engine
 
* [http://www.ogre3d.org/index.php?option=com_content&task=view&id=13&Itemid=128 features] superior to almost any other engine
 +
** facial anim support
 +
** hardware accelerated skeletal anim, anim blending
 +
** support for threaded background loading
 +
** support for post-processing effects
 
** mesh LOD, material LOD, various shadow techniques, shader-support for cg,hlsl and glsl  
 
** mesh LOD, material LOD, various shadow techniques, shader-support for cg,hlsl and glsl  
 
** material scripting, particle scripting
 
** material scripting, particle scripting
** hardware accelerated skeletal anim, anim blending, facial anim support
+
* many powerful [http://www.ogre3d.org/index.php?option=com_content&task=view&id=17&Itemid=141 addons] with dedicated [http://www.ogre3d.org/phpBB2addons/ addon-forums]
** support for threaded background loading
+
* focused on good code-design, see [http://www.ogre3d.org/index.php?option=com_content&task=view&id=19&Itemid=105 about] or the quote below
* many powerful [http://www.ogre3d.org/index.php?option=com_content&task=view&id=17&Itemid=141 addons]
+
* well documented : [http://www.ogre3d.org/docs/manual/manual_toc.html#SEC_Contents manual] [http://www.ogre3d.org/docs/api/html/ api]
 
* opensource, LGPL
 
* opensource, LGPL
  
Line 17: Line 25:
 
We've used it for both iris2 (3d ultima online client) and sfz (spacegame), but with lua instead of python, and are very happy with it. It is even used by several commercial application (possible with lgpl license), such as pacific storm and ankh, and some non-gaming applications as well.
 
We've used it for both iris2 (3d ultima online client) and sfz (spacegame), but with lua instead of python, and are very happy with it. It is even used by several commercial application (possible with lgpl license), such as pacific storm and ankh, and some non-gaming applications as well.
 
There is a book soley about ogre, and since recently also features in the popular "C++ How To Program" series of books (since 6th edition, see ogre hp)
 
There is a book soley about ogre, and since recently also features in the popular "C++ How To Program" series of books (since 6th edition, see ogre hp)
 +
 +
=== quote from ogre about page ===
 +
 +
[http://www.ogre3d.org/index.php?option=com_content&task=view&id=19&Itemid=105 about ogre]
 +
 +
Why should I consider using OGRE (rather than the other zillion 3D engines out there)?
 +
Many other engines, whilst technically impressive, lack the cohesive design and the consistent documentation to allow them to be used effectively. Many of them have long features lists, but have the feel of a bunch of tech demos lashed together with twine, with no clear vision to hold them together. Like any other software system this becomes their downfall as they become larger. Most other engines are also designed for one particular style of game or demo (e.g. first-person shooters, terrain roamers).
 +
 +
OGRE is different. OGRE is design-led rather than feature-led. Every feature that goes into OGRE is considered throughly and slotted into the overall design as elegantly as possible and is always fully documented, meaning that the features which are there always feel part of a cohesive whole. Quality is favoured over quantity, because quantity can come later - quality can never be added in retrospect. OGRE uses sound design principles learned, tried and tested many times in commercial-grade software - the object-orientation mentioned in it's moniker is just one of those approaches - frequent use of design patterns is another. The core development team is kept deliberately small, and all of its members are veteren software engineers with many years of real-world experience. Patches are welcomed from community, but they undergo a strict review for both quality and cohesion with the Ogre philosophy before being accepted.
 +
 +
OGRE does not assume what type of game or demo you want to make. It uses a flexible class hierarchy allowing you to design plugins to specialise the scene organisation approach taken to allow you to make any kind of scene you like. Want to render indoor levels fast? Fine, use the BSP/PVS plugin scene manager which has already been written. Want an outdoor landscape? Again, use another plugin scene manager. The rest of the engine continues to function exactly as before.
  
 
== libs ==
 
== libs ==
  
 +
addons . https://ogreaddons.svn.sourceforge.net/svnroot/ogreaddons/trunk
 
* collision detection and physics :  (most phys engines also have collision detection)
 
* collision detection and physics :  (most phys engines also have collision detection)
** ogre-addon : ogreode : http://ode.org ogre-binding for ode
 
 
** gangsta wrapper http://sourceforge.net/projects/gangsta  ogre binding for several phys libs
 
** gangsta wrapper http://sourceforge.net/projects/gangsta  ogre binding for several phys libs
 
** ogre-Novodex binding http://nxogre.betajaen.com/  (see also ogre-addons for another binding)
 
** ogre-Novodex binding http://nxogre.betajaen.com/  (see also ogre-addons for another binding)
 +
** ogre-addon : ogreode : http://ode.org ogre-binding for ode
 
** ogre-addon : ogrebullet : http://www.continuousphysics.com/Bullet/ bullet phys engine
 
** ogre-addon : ogrebullet : http://www.continuousphysics.com/Bullet/ bullet phys engine
 
** ogre-addon : ogreopcode : http://www.codercorner.com/Opcode.htm  binding for Opcode (collision detection only)
 
** ogre-addon : ogreopcode : http://www.codercorner.com/Opcode.htm  binding for Opcode (collision detection only)
** ogre-addon : ogrenewt : http://www.newtondynamics.com/ binding binding for newtondynamics
+
** ogre-addon : ogrenewt : http://www.newtondynamics.com/ binding for newtondynamics
** ogre-addon : ogretokamak : http://www.tokamakphysics.com/ binding binding for tokamak
+
** ogre-addon : ogretokamak : http://www.tokamakphysics.com/ binding for tokamak
 
* sound :  
 
* sound :  
 
** openal http://openal.org/  
 
** openal http://openal.org/  
 
** fmod http://fmod.org/ (free for noncommercial)
 
** fmod http://fmod.org/ (free for noncommercial)
 +
** SDL http://libsdl.org/ SDL-mixer http://www.libsdl.org/projects/SDL_mixer/
 
* networking :  
 
* networking :  
** enet http://enet.cubik.org/  
+
** enet http://enet.bespin.org/ ([http://enet.cubik.org/ old url])
** sdl-net    http://www.libsdl.org/projects/SDL_net/
+
** SDL-net    http://www.libsdl.org/projects/SDL_net/
 
** raknet http://www.rakkarsoft.com/
 
** raknet http://www.rakkarsoft.com/
 
* user interface :  
 
* user interface :  
Line 40: Line 61:
 
** betagui http://www.ogre3d.org/phpBB2/viewtopic.php?t=25853
 
** betagui http://www.ogre3d.org/phpBB2/viewtopic.php?t=25853
 
** quickgui http://www.ogre3d.org/phpBB2/viewtopic.php?t=30547
 
** quickgui http://www.ogre3d.org/phpBB2/viewtopic.php?t=30547
 +
** mygui http://www.ogre3d.org/phpBB2/viewtopic.php?t=36096
 
** guichan http://guichan.sourceforge.net/   
 
** guichan http://guichan.sourceforge.net/   
 
** opengui http://opengui.rightbracket.com/
 
** opengui http://opengui.rightbracket.com/
 +
** RBGui http://www.rightbraingames.com/tech/ [http://ogre3d.org/phpBB2/viewtopic.php?t=32929&highlight= ogre forum thread]
 
* input handling   
 
* input handling   
 
** OIS    http://www.ogre3d.org/wiki/index.php/OIS (ogre default)
 
** OIS    http://www.ogre3d.org/wiki/index.php/OIS (ogre default)
** SDL    http://www.libsdl.org/
+
** SDL    http://www.libsdl.org/  
 
* artificial intelligence and pathfinding   
 
* artificial intelligence and pathfinding   
 
** you'll probably have to code an ai according to the rules of your game yourself, but hare are a few links :
 
** you'll probably have to code an ai according to the rules of your game yourself, but hare are a few links :
** worldmind http://play.zapto.org/wmdb/main.php
+
** worldmind http://play.zapto.org/wmdb/main.php ([[User:Ghoulsblade|Ghoulsblade]] 19:16, 22 September 2007 (CEST) : currently down, i hope this is just temporary)
 
** http://www-cs-students.stanford.edu/~amitp/gameprog.html#ai
 
** http://www-cs-students.stanford.edu/~amitp/gameprog.html#ai
 
** pathfinding lib : http://www.grinninglizard.com/MicroPather/
 
** pathfinding lib : http://www.grinninglizard.com/MicroPather/
Line 55: Line 78:
 
** yake : http://www.yake.org/
 
** yake : http://www.yake.org/
 
** goof : http://www.ogre3d.org/wiki/index.php/Game_Object_Oriented_Framework
 
** goof : http://www.ogre3d.org/wiki/index.php/Game_Object_Oriented_Framework
 +
** zen engine : http://www.indiezen.org/
 +
 +
other possibly interesting libs :
 +
* http://plib.sourceforge.net/whats_inside.html
 +
* http://allegro.cc/  popular gamedev lib
 +
* http://www.fxpression.com/GalleryParticleUniverse.html particle system plugin
 +
* particle editor : http://www.ogre3d.org/forums/viewtopic.php?f=11&t=61559#p410457
  
 
== python + ogre ==
 
== python + ogre ==
  
it seems to be a bit hidden inside the ogre forums and wiki, but here are a few links to get you started : http://www.ogre3d.org/phpBB2addons/viewforum.php?f=3
+
it seems to be a bit hidden inside the ogre forums and wiki, but here are a few links to get you started :  
http://www.ogre3d.org/wiki/index.php/Introduction_to_pyogre
+
* http://www.ogre3d.org/phpBB2addons/viewforum.php?f=3
http://www.ogre3d.org/wiki/index.php/pyogre_Beginner_Tutoria l_1
+
* http://www.ogre3d.org/wiki/index.php/Introduction_to_pyogre
http://www.ogre3d.org/wiki/index.php/pyogre_Beginner_Tutoria l_2
+
* http://www.ogre3d.org/wiki/index.php/PyOgre_Beginner_Tutorial_1
...
+
* http://www.ogre3d.org/wiki/index.php/PyOgre_Beginner_Tutorial_2
http://www.ogre3d.org/wiki/index.php/pyogre_Tutorial1
+
* ...
http://www.ogre3d.org/wiki/index.php/pyogre_Tutorial2
+
* http://www.ogre3d.org/wiki/index.php/PyOgre_Tutorial1
...
+
* http://www.ogre3d.org/wiki/index.php/PyOgre_Tutorial2
 +
* ...
  
 
it's available with the rest of the ogreaddons from cvs :
 
it's available with the rest of the ogreaddons from cvs :
http://www.ogre3d.org/index.php?option=com_content&task= view&id=17&Itemid=141
+
* http://www.ogre3d.org/developers/addons
 +
 
 +
== lua + ogre ==
 +
 
 +
* http://www.lua.org/
 +
* http://lugre.sourceforge.net/  gamedev framework, used in [http://sfz.sf.net sfz] and [http://iris2.de iris2]
 +
* http://luaforge.net/projects/luasdl/ lua SDL wrapper
 +
* http://www.tecgraf.puc-rio.br/~celes/tolua/ tolua
 +
* http://www.codenix.com/~tolua/ tolua++
 +
 
 +
== ogre in game engines ==
 +
 
 +
* neoaxis (.net based) http://www.neoaxisgroup.com/
 +
* yake (.net based) http://www.yake.org/
 +
* ege http://www.e-challengegames.com/ege/ ([http://www.ogre3d.org/phpBB2/viewtopic.php?t=37437 ogre forum thread])  (5.12.2009:site down, project dead?)
 +
* echo http://sourceforge.net/projects/echo-plugin/  (just in planning so far..)
 +
 
 +
== things you might want to consider before deciding on an engine ==
 +
 
 +
* are there more screenshots anywhere ?
 +
* are there a FEW (not only one) big projects using it ?
 +
* is there an irc channel to get instant help ?
 +
* is there an active forum to get long-time help ?
 +
* are there community-developed addons/plugins ?
 +
* if there is a custom model format, are there exporters for all mayor modelling apps ? (blender,3dsmax,maya,wings3d)
 +
* is skeletal animation supported ?
 +
* is blending of multiple animations supported ? (shooting while running)
 +
* what shader dialects/languages are supported ? (cg,hlsl,glsl)
 +
* is rendering to texture supported (rtt) ?
 +
* is there support for particle effects and can they be scripted ?
 +
* is there a material script format, or are all materials hardcoded or in meshes ?
 +
* is there a LOD (level of detail) system for materials ?
 +
* is there a LOD (level of detail) system for terrain ?
 +
* is there a LOD (level of detail) system for meshes ?
 +
* is there support for background (threaded) loading of meshes/materials/world geometry ?
 +
* is there support for unicode fonts and input ?
 +
* is post-processing supported ? (full-screen effects like drunken...)
 +
* are realtime textures like video feed supported ?
 +
* is hardware-accelerated skinning supported for skeletal animations ?
 +
* is there support for facial animation ?
 +
* is there some automated sorting for transparent objects ? (transparency is tricky, can't just use zbuffer as usual)
 +
* is there support for batching geometry ?
 +
 
 +
 
 +
(with "is there support" i don't mean just "it is technically possible", since all of this is "technically possible" with raw opengl, but the sense of an engine is making these things EASIER)

Latest revision as of 13:06, 2 January 2011

this is about the opensource 3d engine http://ogre3d.org

why ogre

IMHO ogre3d is currently the most powerful opensource 3d engine. it might not be that easy to learn as more limited engines, but its design is good and it is definitely a good choice in the long run. We've used it for both iris2 (3d ultima online client) and sfz (spacegame), but with lua instead of python, and are very happy with it. It is even used by several commercial application (possible with lgpl license), such as pacific storm and ankh, and some non-gaming applications as well. There is a book soley about ogre, and since recently also features in the popular "C++ How To Program" series of books (since 6th edition, see ogre hp)

quote from ogre about page

about ogre

Why should I consider using OGRE (rather than the other zillion 3D engines out there)? Many other engines, whilst technically impressive, lack the cohesive design and the consistent documentation to allow them to be used effectively. Many of them have long features lists, but have the feel of a bunch of tech demos lashed together with twine, with no clear vision to hold them together. Like any other software system this becomes their downfall as they become larger. Most other engines are also designed for one particular style of game or demo (e.g. first-person shooters, terrain roamers).

OGRE is different. OGRE is design-led rather than feature-led. Every feature that goes into OGRE is considered throughly and slotted into the overall design as elegantly as possible and is always fully documented, meaning that the features which are there always feel part of a cohesive whole. Quality is favoured over quantity, because quantity can come later - quality can never be added in retrospect. OGRE uses sound design principles learned, tried and tested many times in commercial-grade software - the object-orientation mentioned in it's moniker is just one of those approaches - frequent use of design patterns is another. The core development team is kept deliberately small, and all of its members are veteren software engineers with many years of real-world experience. Patches are welcomed from community, but they undergo a strict review for both quality and cohesion with the Ogre philosophy before being accepted.

OGRE does not assume what type of game or demo you want to make. It uses a flexible class hierarchy allowing you to design plugins to specialise the scene organisation approach taken to allow you to make any kind of scene you like. Want to render indoor levels fast? Fine, use the BSP/PVS plugin scene manager which has already been written. Want an outdoor landscape? Again, use another plugin scene manager. The rest of the engine continues to function exactly as before.

libs

addons . https://ogreaddons.svn.sourceforge.net/svnroot/ogreaddons/trunk

there are also game engines embedding ogre :

other possibly interesting libs :

python + ogre

it seems to be a bit hidden inside the ogre forums and wiki, but here are a few links to get you started :

it's available with the rest of the ogreaddons from cvs :

lua + ogre

ogre in game engines

things you might want to consider before deciding on an engine

  • are there more screenshots anywhere ?
  • are there a FEW (not only one) big projects using it ?
  • is there an irc channel to get instant help ?
  • is there an active forum to get long-time help ?
  • are there community-developed addons/plugins ?
  • if there is a custom model format, are there exporters for all mayor modelling apps ? (blender,3dsmax,maya,wings3d)
  • is skeletal animation supported ?
  • is blending of multiple animations supported ? (shooting while running)
  • what shader dialects/languages are supported ? (cg,hlsl,glsl)
  • is rendering to texture supported (rtt) ?
  • is there support for particle effects and can they be scripted ?
  • is there a material script format, or are all materials hardcoded or in meshes ?
  • is there a LOD (level of detail) system for materials ?
  • is there a LOD (level of detail) system for terrain ?
  • is there a LOD (level of detail) system for meshes ?
  • is there support for background (threaded) loading of meshes/materials/world geometry ?
  • is there support for unicode fonts and input ?
  • is post-processing supported ? (full-screen effects like drunken...)
  • are realtime textures like video feed supported ?
  • is hardware-accelerated skinning supported for skeletal animations ?
  • is there support for facial animation ?
  • is there some automated sorting for transparent objects ? (transparency is tricky, can't just use zbuffer as usual)
  • is there support for batching geometry ?


(with "is there support" i don't mean just "it is technically possible", since all of this is "technically possible" with raw opengl, but the sense of an engine is making these things EASIER)