Libraries

From Ogre Wiki

Jump to: navigation, search
Image:Libraries.png

Libraries

This section is for libraries that are usually assembled when developing OGRE applications, being either complete application frameworks, or specific APIs for Physics, Collision Detection, Artificial Intelligence, Networking, Audio, Scripting, GUI, Input, etc.


Contents


Application Frameworks

An alternative to assembling all of these libraries yourself is to use an existing application framework.

Active

  • NeoAxis Engine: is an all-purpose, modern 3D graphics engine for 3D simulations, visualizations and games. Includes many editors for scenes, physics, materials, particles etc. Uses C# for scripting. Non-commerical free licence as well as commerical licences available.
  • OGE - Open Game Engine: Cross-platform, Only LGPL for now, multithreaded game-engine for multi-genre.

Semi Active

  • The YAKE Engine: Cross-platform, LGPL licensed VR and game engine. Genre-independent with a rich feature set. Also available for multiple-licenses, if LGPL does not fit your needs (similar to GarageGame's OpenTnL). (Recent release 0.8 in may 09)
  • WGE: Wreckedgames Engine - From the creator of TheoraVideo pluging and OIS, comes WGE. A script (Squirrel) driven engine. It is licensed under the GPL, alternative license will be availiable. Early development (was dead for a while, but since 15th September 2008 in more active development).
  • SagaEngine: multi-platform game engine. No releases since 2006, however SVN is infrequently updated.

Inactive / No Releases in a Year

  • Solar Framework: A framework for working with Ogre. It does not depend on any libraries other than Ogre and CEGUI, thus consider it a framework instead of an engine (sound, net, physics, etc). (Not updated since 2005)
  • Game Object Oriented Framework: The Game Object Oriented Framework (GOOF) provides generic object handling functionality, extending Ogre's existing systems. (Officially canceled until further notice)
  • Shattered Ruby (formerly: shattered.hastilymade.com): A MVC-based framework designed for fast development of games. Inspired by Ruby on Rails. (So dead the domain has expired and has been taken over by link farmers)
  • OASIS: A framework to tie together multiple game engine systems into a more integrated whole. (SVN not updated since 2004)


Physics

Games or simulations normally follow some consistent model of the physical universe. Physical laws dictate that balls bounce when they hit the ground or that a arrows arc upwards then down when fired into the air. More recently, ragdoll physics has become popular as a way of animating characters according to physical models, for example, enabling realistic animation of a person falling after being shot.

If anyone knows enough about these engines to compare them, please do so!

  • Ode: Windows, Mac, *nix ; Free under the LGPL and BSD style license. The Open Dynamics Engine (ODE) is by far the most popular tool for programming physics with Ogre. ODE can be used via the OgreODE addon. Some screenshots and AVI's involving OgreODE can be seen in this thread.
  • NovodeX/PhysX: Windows, Mac, *nix; Windows version free for non-commercial use. This SDK has been widely used, including in the Unreal Engine. Two Physics wrappers are available NxOgre and Nogredex (an Ogre addon). It has been used in at least one Ogre project. It is probably one of the easiest physics engines to use. From version 2.6.0 of the PhysX SDK and up, the license has changed to enable use in commercial projects. See the Ageia developer site for details.
  • Newton Game Dynamics: Windows, Mac, Linux(x86); Free with minimal restrictions (License). You can integrate Newton Game Dynamics into your projects with ease. With our technology you only need to know basic physics principles to produce realistic physics behavior. Tuning time is reduced to a minimum because you don't need to wrestle the targeted hardware nor set up esoteric parameters to get the correct timing for your simulation. Newton physics engine behaves naturally. This has been used in at least one Ogre project (Stunt Playground). The OgreNewt library makes it easy to integrate the Newton physics into your Ogre application (OgreNewt Library).
  • True Axis Physics SDK: Windows, Linux (x86), more; The True Axis Physics SDK is a fast and solid real world physics simulation system designed for demanding games and virtual interactive environments. The SDK is designed from a games developer's perspective. It aims to avoid common issues present in most physics and collision implementations. It aims to give developers the control they need over the way objects behave. Fast physics for games - free for non-commercial use.
  • DynaMo - Windows, Sun ; GNU Library General Public License. Dynamic Motion library, another physics engine. Last Update: January 16th, 2004.
  • The Gangsta Wrapper - An abstraction layer allowing the use of different physics libraries through a consistent API.
  • OPAL - Open Physics Abstraction Layer, high-level API on top of Ode. Documented and actively developed.
  • Bullet - Windows, Mac, *nix ; Free open source under the Zlib style license. Under active development, includes COLLADA Physics support, GJK general convex collision detection and specialising in continuous collision detection. Some handy resources and sourcecode on the site.

To get a comparison of the user bases for each of these physics engines, check out this poll.


Artificial intelligence

There has been little standardization yet as to what an AI engine might contain. But there are enough common AI problems in games, such as pathfinding, that seem to need writing over and over again. Most Ogre projects use custom-built AI libraries.

  • OpenAI: Windows, Mac, *nix. OpenAI or the Open-source Artificial Intelligence library aims to be for AI what OpenGL is for graphics. That said, it is not so good for use in DirectX but integrates seamlessly and without trouble into OpenGL. The library has many features. Is written in Java. Note: Development halted April 5, 2003.
  • FEAR: Windows, Mac, *nix. FEAR is an AI library whose status is unclear. There is, however a book by FEAR's lead developer which is based on FEAR. Author of the library do not think his library is ready for real-time or games application, it's under construction, but meanwhile have an education purpose and wish people can help him. Testing and use of the library does needs Quake 2. (or you won't be able to test your code and the demos.). If you buy the book you get mores Bots sources and demo. Very good for education purpose on neural nets, FSM, Fuzzy logic. Note: Developer states he has moved on to a new project, the last FEAR release v0.4.0 on March 23, 2005 does not appear to be ready for production use.
  • OpenSteer: Windows, Mac, *nix; MIT License OpenSteer is a C++ library to help construct steering behaviors for autonomous characters in games and animation. In addition to the library, OpenSteer provides an OpenGL-based application called OpenSteerDemo which displays predefined demonstrations of steering behaviors. The user can quickly prototype, visualize, annotate and debug new steering behaviors by writing a plug-in for OpenSteerDemo.
  • A* Tactical Pathfinding: Windows. Free (needs copyright notice) Described in the "Game Programming Gems III book". A tactical path deviates from the shortest path to achieve increased concealment and cover from threats. The simple way to create tactical paths is adding a new cost to the A* cost function. These new costs reflect exposure to enemy observation and fire at each point in the terrain.(on the same page, from "AI Game Programming Wisdom" book, there's also the Path Lookup Tables explorer.) Also see here for an Ogre implementation of various A* pathfinding with source
  • PathLib: Windows; Free A C++ A* pathfinding, fast and robust, along with a windows demo, that allows path testing and map editing. ( supports Group pathfinding) Also see here for an Ogre implementation of various A* pathfinding with source
  • Garfixia AI Repository: This site contains an open-source library of AI techniques, written in C++. Excellent material - appears to be Open Domain - not production quality, but an invaluable starting point. FSM, fuzzy, learning trees, etc. Good Stuff!
  • MicroPather Windows, Mac, Linux; zlib/libpng License. From the webpage: "MicroPather is a path finder and A* solver (astar or a-star) written in platform independent C++ that can be easily integrated into existing code. MicroPather focuses on being a path finding engine for video games but is a generic A* solver."
  • Boost Graph Library platform independent. This library can perform A* searches.
  • FANN Platform independent; GNU Library General Public License (LGPL). From the webpage: "Fast Artificial Neural Network Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks. Cross-platform execution in both fixed and floating point are supported. It includes a framework for easy handling of training data sets. It is easy to use, versatile, well documented, and fast. PHP, C++, .NET, Python, Delphi, Octave, Ruby, Pure Data and Mathematica bindings are available. A reference manual accompanies the library with examples and recommendations on how to use the library. A graphical user interface is also available for the library."
  • OpenSkyNet Windows; GNU Library General Public License (LGPL). A* pathfinding lib with a user-settable option to determine the number of seconds alloted for pathfinding each call and batch pathfinding, such that multiple objects can use the same grid. Written in C++.


Networking

Effective use of the network is important to multiuser games. To support games played over the Internet, it is necessary to deal with problems of network performance, fault-tolerance, concurrency control and security. Most Ogre projects are based on custom networking libraries. The following libraries, however, have been found useful by some Ogre users.

  • RakNet: Windows, *nix; Free under Creative Commons Attribution - NonCommercial 2.5 license (commercial use $100-$4000) Used in quite a number of Ogre projects. From the web page: "RakNet is a networking API that is a wrapper for reliable UDP and higher level functionality on Windows, Linux, and Unix. It allows any application to communicate with other applications on the same computer, over a LAN, or over the internet. Although it could be used for any networked application, it was developed specifically for rapid development of online games and the addition of multiplayer to single player games."
  • OpenTNL: Windows, Mac, Linux; GPL or Commercial License. From the web page: "The Torque Network Library is a robust, secure, easy to use cross-platform C++ networking API designed for high performance simulations and games."
  • Zoidcom: Windows, Linux; Free or Commercial License. From the web page: "Zoidcom is a high-level, UDP based networking library providing features for automatic replication of gameobjects and synchronization of their states over a network connection in a highly bandwidth efficient manner. This is achieved by multiplexing and demultiplexing object information from and into bitstreams, which make it easily possible to avoid sending redundant data. Bools only take one single bit, integers and floats are stripped down to as many bits as needed."
  • HawkNL: Windows, Mac, Linux; GNU Library General Public License (LGPL). From the webpage: "Game oriented network API HawkNL (NL) is a fairly low level API, a wrapper over Berkeley/Unix Sockets and Winsock. But NL also provides other features including support for many OSs, groups of sockets, socket statistics, high accuracy timer, CRC functions, macros to read and write data to packets with endian conversion, and support for multiple network transports (version 2.0 is beta)."
  • ENet: Windows, Linux; MIT-style License. From the webpage: "ENet's purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol). The primary feature it provides is optional reliable, in-order delivery of packets."
  • ZIGE Game Engine: Windows, Mac, Linux; GNU Library General Public License (LGPL). From the webpage: "ZIG is a free, LGPL licensed, extendable client-server game engine. Besides networking, it provides support for other features like: logging, an interactive debug console, timing control (for client framerates and server packet rates), automatic downloading of game files from server to client, etc. From the standpoint of ZIG, the graphics renderer, the sound engine and the input handler are all extensions you must provide. You will be able to plug your Allegro, SDL, DirectX, OpenGL etc. stuff into ZIG with ease. ZIG is a cross-platform C/C++ library which depends on HawkNL and Pthreads (POSIX Threads)."
  • SDL_net Windows, Mac, Linux; GNU Library General Public License (LGPL). From the webpage: "SDL_net is a small sample cross-platform networking library [that] runs on all platforms supported by SDL."
  • OgreSocks Windows; GNU Lesser General Public License (LGPL). OgreSocks is an OO wrapper around winsock, and is the first networking library targetted at Ogre developers. You will be able to integrate client and server TCP sockets with minimal code. (tutorials here)


Audio

Games and simulations rely greatly on sound and music to provide atmosphere. While we often focus on graphics as programmers, sound is at least as important to developing an immersive atmosphere.

  • FMOD: Windows, Mac, Linux, WinCE, PS2, XBox, GameCube; Commercial, but free for non-commercial use. From their web page: "FMOD supports 3d sound, midi, mods, mp3, ogg vorbis, wma, aiff, recording, obstruction/occlusion, cd playback (analog or digital), cd ripping, mmx, internet streaming, dsp effects, spectrum analysis, user created samples and streams, synchronization support, ASIO, EAX 2&3, C/C++/VB/Delphi and more."
  • OpenAL: Windows, Mac, Linux, PS2, XBox, GameCube; Mainly free under LGPL but commercial for some platforms. From the web page: "OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications." The two OGRE wrappers are 'OgreOggSound' (most active) and OgreAL.
  • BASS: Windows; Commercial, but free for non-commercial use. From the web page: "BASS is an audio library for use in Windows software. It's purpose is to provide developers with the most powerful and efficient (yet easy to use), sample, stream (MP3, MP2, MP1, OGG, WAV, custom generated, and more via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs), and recording functions. All in a tiny DLL, under 100KB in size."
  • Audiere: Windows, *nix; Free "Audiere is a high-level audio API. It can play Ogg Vorbis, MP3, FLAC, uncompressed WAV, AIFF, MOD, S3M, XM, and IT files. For audio output, Audiere supports DirectSound or WinMM in Windows, OSS on Linux and Cygwin, and SGI AL on IRIX." Featuring a Braindead easy API . (Doesn't support 3D positioning of sound (perhaps)
  • irrKlang: Windows, Linux, Mac; Commercial, but free for non-commercial use. From their web page: "2D and 3D cross platform audio library which plays WAV, MP3, OGG, MOD, XM, IT, S3M and more file formats, usable in C++ and all .NET languages such as C#, VisualBasic.NET".


Scripting

3D applications are often organized so that the performance-critical parts are written in C++ while the application itself is written in a so-called scripting language. Scripting languages are typically interpreted allowing a tighter code/execution cycle, and are usually easier to debug than C++. This allows more rapid application development while retaining good performance.

Alternatively, the application can be structured where scripts are embedded within a C++ application.

  • Lua: Windows, *nix; Free under MIT License. Lua is a library that can be called from Ogre, allowing scripts to be called from within a C++ main application. From the web page: "Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, interpreted from bytecodes, and has automatic memory management with garbage collection, making it ideal for configuration, scripting, and rapid prototyping." Lua programs can in turn make calls/callbacks into Ogre (and other C++ libraries) via luabind (free under the MIT License). See also our wiki entry.
  • LuaPlus: Lua C++ oriented fork with debugging facilities (visual studio plugins), optimisations.
  • Java: Windows, *nix, Mac; Free. Java is a type-safe byte-code interpreted object-oriented language. Java programs can use Ogre via the ogre4j Ogre add-on.
  • Python: Windows, *nix, Mac; Free. Python is a dynamically-typed, byte-code interpreted, object-oriented language. Python programs can use Ogre via the PyOgre Ogre add-on. There is also a work-in-progress library for embedding Python scripts in C++ Ogre applications. For more performance there is also a Python JIT (just in time compiler), psyco.
  • Ruby: Windows, *nix, Mac; Free. Ruby has received a fair bit of positive press lately as a structured OO language with the power of Perl. Ruby has its own C++ interface, as well as a SWIG interface.
  • Squirrel: Windows, *nix; Free. Squirrel is a high level imperative/OO programming language, designed to be a powerful scripting tool that fits in the size, memory bandwidth, and real-time requirements of applications like games. Squirrel's syntax is similar to C/C++/Java, but the language has a very dynamic nature like python/Lua. It's API is very much like Lua, too. See also our wiki entry.
  • AngelScript: Windows, *nix; Free. AngelScript is a high level programming language which has the familiare syntaxes of C/C++. Its designed to be modulative, light-weight, efficient and highly-configurable. It features Run-Time bytecode compilation and ability save/load bytecode on demand. AngelScript is offered on the ZLib license.
  • GameMonkey: Windows, *nix; Free. GameMonkey is a high level embedded scripting language, similar to Lua and AngelScript. It has a C style syntax, supports threading and focuses on having a light footprint. GameMonkey is offered under the MIT license.


Input

  • OIS: OIS is a library for input management: (joystick, mouse, keyboard, wiimote, wheels). OIS is easy to use, multiplatform and is used by all the OGRE demos. The input devices can be polled in your frameListener, or can send events when an action occurs (mouse moved, or button pressed, etc). It can manage the keyboards from different countries (AZERTY/QWERTY). OIS has its own wiki pages here (for instance this page, using OIS with OGRE) (see also http://www.wreckedgames.com/). P.S. : OIS is already included in Ogre as of Ogre 1.4.5
  • SDL: MS Windows, Linux, BeOS, Solaris, IRIX, FreeBSD, MacOS; Free under the GNU LGPL. From the web page: " Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer." Look at this page to learn how to use SDL with OGRE.
  • LibGII: MS Windows, Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Darwin/MacOSX, IRIX, AIX; Free under the MIT license. From the web page: "LibGII is intended to be to input what our LibGGI library is to graphics. The goal of LibGII is to provide a single easy to use, but yet powerful, API for all possible input sources.". See also this page on integrating libGII into your OGRE program.
  • OpenInput: Linux, Windows OpenInput is a cross-platform, easy-to-use, portable input handler library, written in C.


GUI

  • Navi is a webpage renderer for OGRE. It supports flash and uses the Chromium webkit web rendering engine. Simply made gui's using existing editors and ideas.
  • Hikari is a flash player for OGRE. It uses the actual flash player internally so will do anything flash can do.
  • Cegui Layout Editor a GUI editor for Crazy Eddie GUI (an ogre demos dependency), works for versions 0.5.x i.e. Ogre 1.4 Eihort and above.
  • Open GUI: Windows, Mac, *nix ; Free under the BSD license. Easy to use and easy to extend GUI framework for use in 3D applications.


Other tools

  • Libnoise: Windows, *nix; Free under LGPL. libnoise is a portable C++ library that is used to generate coherent noise, a type of smoothly-changing noise. libnoise can generate Perlin noise, ridged multifractal noise, and other types of coherent-noise. Coherent noise is often used by graphics programmers to generate natural-looking textures, planetary terrain, and other things.
  • OgreMP: A cross-platform threading library designed specifically for use with Ogre
  • SimpleFileWatcher: A library for getting callbacks on file / folder changes in a cross-platform way
Personal tools
administration