Development tools
Here we discuss basic development tools. Please help fill out this list.
C++ compiler
To work with OGRE, you of course require some kind of C++ compiler. The most
popular are:
- Visual C++ (http://msdn.microsoft.com/vstudio)
(versions 6, 7, 7.1): Windows only; commercial. Visual C++ is part of
Microsoft's Visual Studio, but can be purchased stand-alone too. All variants
(standard, professional and enterprise) are suited for developing Ogre based
applications.
- gcc
(http://gcc.gnu.org/) (version 3.1+): Linux & Windows
(via cygwin
(http://cygwin.com/) or MinGW (http://mingw.org/)); free under GPL
(http://www.gnu.org/copyleft/gpl.html) The standard Linux
compiler, part of almost all Linux distributions. If you want to develop with
Linux this is the way to go. It's also available for Windows as a viable
alternative to the costly Visual C++. However, if you have the money to get
it, it is highly recommended that you purchase Visual C++ for Windows. You
have also 2 free GUI frontend IDE options to the MinGW compiler on Windows.
One is Dev-C++
(http://bloodshed.net/devcpp.html) and the other is Code::Blocks
(http://www.codeblocks.org/).
other C++ compilers
Debuggers
- Debugging
Tools for Windows
(http://www.microsoft.com/whdc/devtools/debugging/default.mspx/):
a very powerfull debugger for all windows applications that is free and makes
an excellent companion to the MSVC
2003 Toolkit
(http://www.microsoft.com/downloads/details.aspx?FamilyId=272BE09D-40BB-49FD-9CB0-4BFA122FA91B&displaylang=en)
that is also free. Included in the toolset is windbg.exe which is a gui front
end to the debugger. The debugger has all the same functionality as the
integrated debugger within the MSVC IDE plus a few more features. If using Code::Blocks
(http://www.codeblocks.org/) as an IDE you will have to launch
windbg.exe externally but you can set up a workspace within windbg to remember
all your settings for debugging a specific project.
Source control
Many OGRE add-ons require you to download code from CVS repositories. CVS is
also the best way to get the bleeding-edge updated version of OGRE. CVS clients
include:
- Tortoise CVS
(http://www.tortoisecvs.org): Windows only; free under
GPL. This is an excellent tool that integrates directly with the Windows
file browser for an easy and intuitive use. Merge tool and diff viewer are
easily integrated.
- CVSGui
(http://www.wincvs.org): Windows/Mac/*nux; free under
GPL. A standalone GUI application. Versions include WinCVS,
MacCVS and gCVS. This project also links to several merging
tools useful for people using CVS for development.
CPU Profiler
When getting towards the end of your development process, it is often
extremely useful to optimize your code and fix the bottlenecks to the best of
your ability. To find these bottlenecks you may use a code profiler to show you
the time and memory usages in each function call. Some of those available are:
- Memory and time profilers
- Valgrind (with or without
Kcachegrind)
(http://kcachegrind.sourceforge.net) (Linux/UN*X - GPL)
- VTune
(http://www.intel.com/software/products/vtune/)
- Glowcode
(http://www.glowcode.com) (Windows / VS2003.Net integration
- commercial)
- OProfile (http://oprofile.sourceforge.net/)
(Linux - GPL)
- CodeAnalyst (http://www.developwithamd.com/)
(Windows, Linux - free as in lunch)
- DevPartner
(http://www.compuware.com/products/devpartner/default.htm)
(Windows / VS200(2|3).Net integration - commercial but with free
community edition)
- Memory profilers
- MemProf (http://www.gnome.org/projects/memprof/)
- Time profilers
- gprof
(http://www.network-theory.co.uk/docs/gccintro/gccintro_66.html)
and here
(http://www.gnu.org/software/binutils/manual/gprof-2.9.1/html_mono/gprof.html)
- LTProf
(http://www.lw-tech.com/help.php?folder=ltprof&topic=AboutLTProf.htm)
(LTProf is a small but powerful CPU profiling tool for Visual C++,
Borland CBuilder, Delphi and VB applications. - commercial but with free
trial edition)
GPU Profiler
Code Editing
- SciTE (http://scintilla.sourceforge.net/SciTEDownload.html)
a good demostration of Scintilla (http://scintilla.sourceforge.net/) which is
a free source code editing component
- Artistic Style is (http://sourceforge.net/projects/astyle/) a
source code indenter and reformatting tool / library for C, C++, C#, or Java
source files.
Object modeling
Games include models of people, monsters, cars and so forth. These models are
almost universally created using a third party tool. Models normally consist of
a polygon mesh that specifies the structure of the model, textures
which are layered over the polygon mesh, and animations. Animations
specify standard motions that the object can perform, such as laughing, waving,
running and so forth.
In theory, it is possible to specify models and their animations directly in
Ogre, but this would be so time-consuming that people use third party modeling
tools instead.
Modeling tools use proprietary formats for the models they generate. However,
many tools provide a plug-in capability, allowing them to be extended to provide
output in the format that Ogre expects.
- 3ds Max
(http://www4.discreet.com/3dsmax): Windows only;
commercial. Among survey respondents, 3ds Max was the unanimous choice of
commercial tool for object modeling with Ogre.
- AC3D
(http://www.ac3d.org): Windows, Mac, Linux. Commercial
but cheap at $59.95. Good for static mesh modelling, doesn't support
animation.
- Blender
(http://www.blender3d.com): Windows, Mac, *nix; free under
GPL. Blender is an open source modeling tool, with many advanced features
and a very active and dedicated community. The GUI need getting used to, but
lends itself to a very efficient work style once learned. The Blender Tools
page describes the many tools available for incorporating blender into your
Ogre content creation process.
- Maya
(http://www.alias.com/eng/products-services/maya/index.shtml):
'Windows, Mac, *nix; commercial.
- MilkShape (http://www.swissquake.ch/chumbalum-soft):
Windows only; commercial but very cheap. MilkShape is quite
straight-forward to use, and supports polygon modeling, texturing and skeletal
animation. At time of writing, MilkShape is offered under a $25 shareware
license.
- SoftImage XSI (http://www.softimage.com/Products/Xsi/v4/):
Windows, Linux; commercial. Another great modelling tool. Part of the
official Ogre development is being done to support this tool.
- Wings 3D
(http://www.wings3d.com): Windows, Mac, *nix; open
source. Wings 3D is a free subdivision modeler inspired by Nendo and Mirai
from Izware.
Dedicated to animation:
- CharacterFX
(http://www.insanesoftware.de/) Create animation easily, with
weighted Bones, and supports many formats, using lua script for import and
export.
- FragMotion
(http://www.fragmosoft.com/) Create animation easily, with
weighted Bones, and supports many formats.
Drawing and painting
Drawing/painting tools are used to create textures for models and landscapes.
Textures are simply bitmap images that are stretched over polygon meshes to make
them look realistic.
- BodyPaint
(http://www.maxon.net/pages/products/bodypaint3d/bp3d_r2/bp3d_2_e.html):
Windows, Mac; Commercial. 3D paint software, allows direct painting on
3D models.
- Displacement Map
Creator
(http://66.70.170.53/Ryan/heightmap/heightmap.html) : A
tool to make displacement maps from normal maps (win32). On same site, check
how to make Normal Map from any Real Subject using a camera, a flash light and
a computer : How to make normal maps
from real surfaces
(http://66.70.170.53/Ryan/nrmphoto/nrmphoto.html).
- Genetica
(http://www.spiralgraphics.biz/gen2tour/index.htm) :
Windows only, commercial. A professional-level seamless texture editor.
Has an innovate node-based interface and comes with more than 500 finished
texture presets.
- GIMP normalmap
plugin
(http://nifelheim.dyndns.org/~cocidius/normalmap/) :
Windows, *NIX, free A plugin to The GIMP which allows for easy creation
of normal maps from heightmaps.
- Microsoft
Paint
(http://www.computerhope.com/software/mspaint.htm): Windows
only; Commercial, but bundled with Windows. Sometimes simplest is best.
And you can't get much simpler than MS Paint.
- Nvidia Texture
Tools
(http://developer.nvidia.com/object/nv_texture_tools.html) :
Windows, free Several texture tools, not bound to NVIDIA cards only.
Amongst them a tool for generating normal maps from heightmaps.
- Paint.NET (http://www.eecs.wsu.edu/paint.net):
Windows 2k/XP; Free under BSD-like license. Less powerful, but much
easier to use than GIMP, this program offers Layers, Filters and a Plug-in
interface. Gui resembles Photoshop.
- Paint Shop Pro
(http://www.jasc.com/products/paintshoppro/): Windows only;
commercial. For some, the best image manipulation software, even better
than Photoshop. Now owned by Corel.
- Photoshop
(http://www.adobe.com/products/photoshop/main.html): Windows,
Mac; Commercial. Photoshop is the premiere product used by professionals.
Photoshop Elements is a stripped down version for less money.
- TATTOO
(http://www.terabit.nildram.co.uk/tattoo/index.htm): Windows,
free freehand tool which allow you to paint your uvmaps in 3D, as
bodypaint3d, but free.
- The GIMP
(http://www.gimp.org): Windows, Mac, *nix; Free under
GPL. The GIMP is a fully-featured image manipulation program. Version 2
included a significant UI overhaul which made the tool much easier to use.
- Texture Maker
(http://www.texturemaker.com/): Windows; Shareware Very
powerful tool to make seamless textures and bump maps. Shareware can only save
textures up to 320x320 pixels. Great if you only need to make textures and
don't plan on using it for anything else.
- Wood Workshop
(http://www.spiralgraphics.biz/ww_overview.htm) :
Windows only, free. Creates everything from wood floors to tree bark.
Likely the best seamless wood texture generator out there.
World design
Worlds normally consist of exterior terrain populated with entities
(trees, houses, monsters, etc.), water, sky and light sources. Very broadly
speaking, there are two problems in creating worlds: creating the terrain, and
populating the terrain with all those other things (entities, water, sky, light
sources.) World design tools help to solve these problems. Some tools deal
exclusively with terrain generation, while others help with laying out the
scene.
This appears to be an area where there's room for contribution to Ogre.
Terrain generation
- Terragen (http://www.planetside.co.uk/terragen):
Windows, Mac; Free for non-commercial use until v1.0 released. Permits
development of gorgeous terrains. Terrains can be read in using the Terrain
scene manager.
- Leveller
(http://www.daylongraphics.com/products/leveller): Windows;
Commercial. Heightfield modeler with a simple interface and a number of
useful plug-ins. At time of writing, $99 for a license. Free demo available.
- Robot Frog 3D
(http://www.robot-frog.com/3d/hills/index.html): Windows,
Mac, *nix; Free. This page presents an algorithm for generating heightmaps
which can be used to render terrains using the Terrain scene manager.
- HME
(http://hme.sourceforge.net): Windows, Linux;
Donationware. Simple heightmap editor with a paint-like interface.
- Freeworld3D
(http://freeworld3d.org): Windows, (Linux in development);
Commercial ($20). A terrain editor, with heightmap editing tools (raise,
lower, smooth, flatten), support for painting texture layers (compatible with
texture-splatting techniques used in PagingLandscapeManager and applicable to
default Ogre Terrain), generating shadows, placing meshes and custom entities,
skyboxes, and more.
- Advanced Landscape Editor
(ALE)
(http://www.dyvision.co.uk/ale.htm): Windows; Commercial
($39.99). A realy nice and easy to use terrain editor. It has a WYSIWYG
interface and makes terrain editting a breeze. Very useful for creating
height- and lightmaps.
- Kashmir3D (http://www.kashmir3d.com/index-e.html):
Windows; Free.
- Using a 3D Program to create your heightmap...You will need a 3D Program
that support muilti UV set and Render to texture function...3DSMax and Maya
include these function.Using 3DSMax to create heightmap 3dsmax_Heightmaps
Full world design
Using exporters available for the following programs allows for export to a
scene format known as DotScene. This can be efficiently optimized using the DotSceneOctree
scene manager, and lends itself well to large outdoor areas.
- 3ds Max
(http://www4.discreet.com/3dsmax): Windows only;
commercial. Among survey respondents, 3ds Max was the unanimous choice of
commercial tool for object modeling with Ogre. The Yake Octopus
(http://www.yake.org/wiki/doku.php?id=octopus:octopus&s=octopus)
exporter allows for easy DotScene export.
- Blender
(http://www.blender3d.com): Windows, Mac, *nix; free under
GPL. Blender is an open source modeling tool, with many advanced features
and a very active and dedicated community. The GUI need getting used to, but
lends itself to a very efficient work style once learned. A scene
exporter and other tools are available for designing in blender.
- Maya
(http://www.alias.com/glb/eng/products-services/family_details.jsp?familyId=3900009):
Windows, Mac, *nix; commercial. The LFA Scene Manager (http://www.lfagames.com/help.htm) exporter
allows for easy DotScene export.
Level design
The term level is normally used to describe the interiors of building,
dungeons or industrial complexes in which many games take place. Levels are
different from exteriors in that they typically consist of regular geometry
(hallways, staircases, etc.) rather than terrain. Level design tools typically
allow the definition of the level's geometry as well as the placement of
entities (furniture, monsters, etc.) and light sources.
While levels can be displayed in any scene manager, Ogre provides the BSP
scene manager which employs BSP culling and collision management to render
levels efficiently. This scene manager is subject to difficult legal
restrictions, however. BSP levels are gnerated from Quake .map files,
created via a map editor. Most (if not all) BSP compilers are proprietary, and
the .map format itself may be proprietary to Id
Software (http://www.idsoftware.com).
For discussion, see this
thread
(http://www.ogre3d.org/phpBB2/viewtopic.php?t=8153&postdays=0&postorder=asc&highlight=bsp+scene+manager&start=0)
on the forums, which also discusses a new work-in-progress BSP compiler for
Ogre.
- 3ds Max
(http://www4.discreet.com/3dsmax): Windows only;
commercial. For those who can afford it, 3ds Max can be used to edit
levels. The Octopus
(http://www.yake.org/index.php?option=content&task=view&id=24)
plugin can be used to make 3ds Max more Ogre-friendly. Exported levels are
rendered at runtime with the DotScene
scene manager.
- Blender
(http://www.blender3d.com): Windows, Mac, *nix; free under
GPL. Blender is a free modeling tool, with many advanced features and a
very active and dedicated community. The GUI need getting used to, but lends
itself to a very efficient work style once learned. A scene
exporter is available as addon project.
- GtkRadiant
(http://www.qeradiant.com/?data=editors/gtk): Windows, Linux;
Licensing murky. To use GtkRadiant with Ogre, you require a copy of Quake
3. The level data can then be used by the BSP
scene manager. This is therefore not a practical tool for most purposes.
- Maya
(http://www.alias.com/glb/eng/products-services/family_details.jsp?familyId=3900009):
Windows, Mac, *nix; commercial. For those who can afford it, Maya can
be used to edit levels. The LFA Scene Manager (http://www.lfagames.com/help.htm) MEL
scripts can be used to make Maya more Ogre-friendly. Exported levels are
rendered at runtime with the DotScene
scene manager.
- QuArK
(http://quark.sourceforge.net/cgi-bin/moin.cgi): Windows; GPL
License. QuArK is another Quake 3-format level editor. Levels are
generated in .map format, which must be compiled to BSP for use in the
BSP
scene manager.
- Worldcraft
(http://www.fileplanet.com/44990/40000/fileinfo/WorldCraft-v3.3)/Hammer
(http://collective.valve-erc.com/index.php?go=hammer):
Windows; Only to develop new levels for Half-Life and other compatible
Valve products. Hammer (called WorldCraft prior to 3.0) was developed as a
modding tool for the Quake and Half-Life games. Licensing of Hammer prevents
its general use, though I believe the restrictions on earlier versions were
weaker (unable to find references at the moment, though I believe WorldCraft
was purchased by Valve and renamed to Hammer). WorldCraft generates MAP models
which must be compiled to BSP form for use in the BSP
scene manager.
Libraries
You can find some code in the web links
section too, along with articles and paper introducing it.
Game Engine
- Yake
(http://www.yake.org) : An alternative to assembling all of
these libraries yourself is to use the Yake (http://www.yake.org) engine. Yake is an
abstracted game engine that can use Ogre for rendering, but also adds support
for audio, networking, physics, scripting and so forth.
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
(http://ode.org/): 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
(http://www.ogre3d.org/phpBB2/viewtopic.php?t=7846).
- NovodeX
(http://www.novodex.com): Windows, Mac, *nix; Windows version
free for non-commercial use. This SDK has been widely used, including in
the Unreal Engine. It has been used in at least
one Ogre project
(http://www.primedgames.com).
- Newton Game Dynamics (http://www.newtondynamics.com): Windows,
Mac, Linux(x86); Free with minimal restrictions (License
(http://newtondynamics.com/SDKLicense.html)). 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
(http://www.ogre3d.org/phpBB2/viewtopic.php?t=9724&start=0)).
The OgreNewt library makes it easy to integrate the Newton physics into your
Ogre application (OgreNewt
Library
(http://www.ogre3d.org/phpBB2/viewtopic.php?t=7857)).
- True Axis Physics SDK (http://www.trueaxis.com/): Windows,
Linux (x86), more
(http://trueaxis.com/forum/viewtopic.php?t=170); 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.
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
(http://openai.sourceforge.net): Windows, Mac, *nix.
OpenAI or the Open-source Artifical Intelligrence 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.
- FEAR
(http://fear.sourceforge.net/index.php): Windows, Mac,
*nix. FEAR is an AI library whose status is unclear. There is, however a
recent book
(http://aigamedev.com) 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.
- OpenSteer (http://opensteer.sourceforge.net/):
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
(http://www.cgf-ai.com/products.html#tacastarexplorer):
Windows. Free (needs copyright notice) Described in the "Game
Programming Gems III book". A tactical path deviates from the shortest path to
achieve increased concealement 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 (http://robertwrose.com/cg) for an Ogre
implementation of various A* pathfinding with source
- PathLib (http://pathlib.hildebrand.cz/pathlib.html):
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
(http://robertwrose.com/cg) for an Ogre implementation of
various A* pathfinding with source
- Garfixia AI Repository (http://62.166.18.36/ai/index.html): 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!
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
prjects are based on custom networking libaries. The following libraries,
however, have been found useful by some Ogre users.
- RakNet (http://freshmeat.net/projects/raknet):
Windows, *nix; Free under GPL (free commerical use with permission)
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
(http://www.opentnl.org): 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
(http://www.zoidcom.com): 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
(http://www.hawksoft.com/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 (vesion 2.0 is
beta)."
- ENet
(http://enet.cubik.org/): Windows, Linux; Free. 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 (http://zige.sourceforge.net/): 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 (http://www.libsdl.org/projects/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."
Sound
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
(http://www.fmod.org): 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
(http://www.openal.org): 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."
- BASS
(http://www.un4seen.com/bass.html): 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
(http://audiere.sourceforge.net/): 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 .
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
(http://www.lua.org): Windows, *nix; Free under MIT License
(http://www.opensource.org/licenses/mit-license.php). 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
(http://luabind.sourceforge.net) (free under the MIT License
(http://www.opensource.org/licenses/mit-license.php)).
- LuaPlus
(http://luaplus.org/tiki-index.php?page=LuaPlus%20Home%20Page):
Lua C++ oriented fork with debugging facilities (visual studio plugins),
optimisations.
- Java
(http://java.sun.com): 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
(http://www.python.org): Windows, *nix, Mac; Free. Python
is an untyped 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
(http://www.ogre3d.org/phpBB2/viewtopic.php?t=8131). For more
performance there is also a Python JIT (just in time compiler), psyco
(http://psyco.sourceforge.net/).
- Ruby
(http://www.ruby-lang.org/en): 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
(http://www.swig.org) interface.
- Squirrel
(http://squirrel.sourceforge.net): 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.
- AngelScript (http://www.angelcode.com/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 (http://www.somedude.net/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
Although OGRE does already provide an input management system, it isn't meant
to be complete and is only there for convenience. For example, it doesn't
provide joystick support, which is quite an important feature for any arcade
game. Success has been reported in the forums with the following input
libraries :
- SDL
(http://www.libsdl.org/): 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
(http://www.ggi-project.org/packages/libgii.html): 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
(http://openinput.dotsrc.org/): Linux, Windows OpenInput
is a cross-platform, easy-to-use, portable input handler library, written in
C.
Project planing/Project Management Tools
- Open Workbench (http://www.openworkbench.org/): A free MS
Project alternative.
Here you get a list of free/open Project Management Tools: http://proj.chbs.dk/
Other tools
This section is for tools that I don't understand well enough to categorize.
Please fill in some details and move these to the appropriate sections.
- Giles
(http://www.frecle.net/giles/home.htm): Commercial but
inexpensive.($40) Gile[s] is a Global Illumination Editor. It
allows you to create a radiosity lightmap for a scene. A lightmap is another
texture layer, that adds light and/or shadow to the underlying texture. The
radiosity lighting technique is far superior compared to any real-time
technique. A Gile[s] plugin that allows exporting Ogre meshes and materials
(contributed by Walaber) is available as source in the ogreaddons and as a
binary distribution on his homepage
(http://walaber.com/).
- Libnoise
(http://libnoise.sourceforge.net): 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.
- TUT: C++ Unit Test
Framework
(http://tut-framework.sourceforge.net/): Test unit framework for
C++ : TUT is a pure C++ application. It heavily uses C++ template
engine to do it's job. Unlike other test unit frameworks for C++, TUT doesn't
use macros, since their usage conceals actual implementation and (what's
worse) can interfere with client application. TUT completely fits into a
single header file. No library compilation is required, thus a lot of
portability problems are avoided and integration with client code is reduced
to including <tut.h> into the test source file. TUT is a free software
and is distributed under the BSD-like License. Needs a modern compiler!