Below is a selection of links to free libraries suitable for use in game development projects.
Licences are listed below next to the libraries to help you make a choice; some may require you to release your source code, others may only be free as long as your release is non-commercial. More esoteric licences may require you contact the author first, send them a copy of your game, or perform some other small task as ‘payment’. Bear in mind that the author may have changed the licence or mistakes could exist on this page, so ensure you verify a library’s licence before you use it.
Most of these libraries are aimed at C++ or C programmers, as the predominant language used by both the industry and hobbyists, but several can be used from other languages.
There’s little attempt to define or limit scope here; some libraries try to provide an entire framework for games, others provide a whole subsystem, whereas still others just simplify a task or tasks within that subsystem. Engines limited to particular types of game are generally excluded, however.
Any dead links, or incorrect entries? Let me know at the address at the bottom of the page. Thanks to those of you who submit corrections and additions, and especially for your patience while waiting for updates.
Contents
- General purpose libraries
- 3D Graphics
- 2D Graphics and GUIs
- Video
- Image and Font Handling
- Sound + Music
- Networking
- Model Handling and Character Animation (3D)
- Filesystems, persistence, and format parsing
- Scripting Languages
- Artificial Intelligence
- Mathematics, Physics and Collision Detection
- Debugging, memory checks, general purpose, etc
- Other Tools
General purpose libraries
These are libraries that tend to encompass several areas of the game, often providing a whole framework to work within. Good for beginners or those more interested in quickly having a finished product as opposed to fine-tuning many individual aspects.
3D Graphics
These libraries primarily deal with rendering of 3D models and scenery. They’ve been split into two fairly arbitrary categories, but in fact there is a continuum from massive feature-rich engines to simple add-in libraries.
‘Engines’
This section contains largely complete systems that – in theory – you can just bolt your game onto. The bias is towards feature completeness.
Antiryad GX Freeware |
Apocalyx GPL |
Axiom (OGRE in C#) LGPL |
Crystal Space LGPL |
Cube slightly modified zlib |
Delta3D LGPL |
Fly3D GPL |
G3D BSD |
Genesis3D similar to GPL |
Grualia Freeware but displays watermark (commercial license available) |
Heretic/Hexen [1] |
Irrlicht ZLIB |
Jolt3D Unknown, free? |
LightFeather ZLIB |
The Nebula Device free license |
NeoEngine MPL |
OGRE 3D LGPL |
Panda 3D free |
QuakeForge GPL |
RET::SDK [2] |
XEngine ZLIB |
Yake LGPL, custom licenses |
‘Libraries’
This section lists self-contained units of functionality relevant to 3D applications. Typically you add these into your games, or they provide a minimal framework which you code your game around. The bias is towards flexibility.
2D Graphics and GUIs
2D graphics libraries typically specialise in rendering sprites and GUI elements. Some may use underlying 3D acceleration functionality, and some may not.
Video
These libraries are for decoding and displaying real-time video, useful for FMV cut scenes and the like.
Dirac MPL |
FFmpeg ‘open source’ |
Theora ‘BSD-like’ |
XviD GPL |
Image and Font Handling
Libraries in this section handle the loading and setup of graphics formats, whether simple bitmap images or vector formats commonly used for fonts/typefaces.
Images
CImg CeCill |
Corona ZLIB |
CxImage ZLIB |
DevIL LGPL |
FreeImage GPL, FIPL |
FreeType GPL or FreeType license (like BSD + giving credit) |
GFL SDK [1] |
GTL (Game Texture Loader) ZLIB |
IJG (jpeg library) free? |
ImageMagick apache-style license |
JpegXX Boost |
libPNG libPNG |
libTiff free? |
LodePNG free? |
Paintlib [2] |
SDL_image LGPL |
SOIL (Simple OpenGL Image Library) public domain |
Titan ZLIB |
Fonts
BFont LGPL |
FTGL (fonts in OpenGL) LGPL |
GLFT_Font ZLIB |
Glyph Keeper [4] |
SFont LGPL or GPL |
Sound + Music
These libraries facilitate the loading and playing of sound and music files within your game.
Audiere LGPL | |
BASS [1] | |
FMOD [1] | |
Hekkus Sound System (For WinCE/Win32/Symbian and .NET.) Credit or donation required | |
IrrKlang ‘Free’ | |
libMikMod LGPL | |
libsndfile LGPL | |
Ogg Vorbis BSD-like | |
OpenAL (?) | |
OpenAL-Soft (?) | |
OpenAL Soft (?) | |
PortAudio essentially free | |
SDL_mixer (requires SDL) LGPL | |
SDL_sound (requires SDL) LGPL |
Networking
Networking libraries exist to facilitate communications between multiple computers, useful for head-to-head or competitive play, communicating high scores to a server, and more.
High-level
High level networking libraries attempt to simplify networking, often by hiding most of the gory details of ensuring reliable transmissions, converting objects to and from data streams, and so on.
Nevrax/NEL GPL? |
Net2 LGPL |
OpenPlay Apple Public Source License |
OpenTNL GPL , or commercial |
RakNet GPL , or free by application |
ReplicaNet [1] |
Zoidcom [1] |
Low level
Low level libraries often require a bit more networking knowledge to use effectively, but can be more scalable to demanding tasks or those with unusual requirements.
http://www.mindcontrol.org/~hplus/etwork/
Unknown
Game Network Engine LGPL |
Model Handling and Character Animation (3D)
Libraries in this section handle the loading of 3D models and their associated animations.
Animadead LGPL |
Cal3D LGPL |
GPUMesh free |
GNU Triangulated Surface Library LGPL |
LibASE LGPL |
lib3DS LGPL |
OpenCTM (Open Compressed Triangle Mesh file format) ZLIB |
Trimeshloader ZLIB |
Filesystems, persistence, and format parsing
These libraries allow you to read generic formats like XML or ZIP files, or to encrypt data, or to use resource files to save space.
XML
ezXML MIT |
libXML MIT |
TinyXML zlib |
Compression and archive formats
bzip2 free |
LZMA (7-Zip compression) LGPL or CPL |
LZO GPL |
PhysFS zlib |
Unrarlib free for non-commercial, otherwise GPL |
ZipArchive GPL or commercial |
zipstream, bzip2stream (iostream wrappers for the zlib and bzip2 libraries) ZLIB |
zlib ZLIB |
zziplib LGPL / MPL |
Encryption
Crypto++ [3] |
Other
SDL_Config LGPL |
SQLite public domain |
Scripting Languages
An in-game scripting language can speed up development and allow non-programmers to help out with game behaviour.
AngelScript ZLIB |
BOO (Reqs .NET/CLI) MIT/BSD style |
CInt (C interpreter) free, reg. required for commercial use |
EosScript LGPL |
GameMonkey MIT |
GS9 Free |
Guile Modified GPL – almost LGPL |
IO BSD |
Javascript Mozilla |
Lua MIT |
Perl Artistic |
Tcl free |
Python free |
Ruby Ruby license |
Small ZLIB |
Squirrel ZLIB |
VBScript ‘license at no charge’ |
Artificial Intelligence
Although AI usually is very game-specific and there are no simple components you can drop in as you might with an image loading library or a 3D renderer, there are some packages that cover certain algorithms and processes that you may use when writing AI for game characters.
See also: http://www.gameai.com/toolkits.html
FEAR GPL , other |
MicroPather zlib |
OpenSteer MIT |
PathLib ? |
Mathematics, Physics and Collision Detection
This section contains libraries helping with complex mathematics, such as calculating object physics, checking for collisions, generating random numbers, and more.
Mathematics
Physics
Box2D ZLIB |
Bullet ZLIB |
Chipmunk MIT |
Flatland (2D physics) BSD |
Newton Game Dynamics Free, but must notify creators |
Novodex [1] |
Open Dynamics Engine (ODE) BSD |
Open Dynamics Framework Free |
OPAL BSD or LGPL – please check |
Physical free |
Plane2D (for ODE) presumably BSD |
Tokamak free |
True Axis [1] |
Collision detection
ColDet LGPL |
GImpact LGPL /BSD-like |
Opcode free usage |
PMask Public domain |
Rapid [1] |
Solid LGPL |
V-Collide [1] |
Debugging, memory checks, general purpose, etc
These libraries are less game-specific but can aid development by improving the robustness of your code.
Boost (C++ smart pointers, parsers, random numbers, quaternions, and more) Boost license |
Chattering Pixels libraries (memory, I/O, sorting, timers) [1] |
ElectricFence GPL |
Fluid Studios Logger free |
Hans Boehm garbage collector for C++ free |
The Image Debugger (Win32 image output) free |
IProf(‘A portable industrial-strength interactive profiler for C++ and C.’) public domain |
LeakTracer Public domain |
MMGR (memory manager/checker) free |
OIS (Object-oriented Input System) ZLIB |
TinyCurses (portable text-based output library) LGPL |
Valgrind (Linux debugging and profiling tool) GPL |
Other Tools
Other tools and add-ons that game developers may find useful.
Doxygen (documentation generator) GPL |
InnoSetup (installer) free |
NaturalDocs (documentation generator) (Requires Perl 5.05.) Free |
NSIS (installer) free |
Synopsis (documentation generator) free |
UPX (executable packer) free |
Random…
GDAL – Geospatial Data Abstraction Library MIT |
AdVantage Terrain – ‘easily add support for huge terrains’ [1] |
License Footnotes
[1] Free for noncommercial usage. Commercial usage will have to be negotiated with the author. Authors may have commercial licences available for purchase.
[2] Free for use, providing the author is credited in your product. Please check the library’s web site to determine the exact nature of the credit required.
[3] Free to use, but note that certain cryptographic algorithms included by this library may not be legal to distribute to or from some countries. Patent issues may also apply.
[4] BSD-like license, but note potential patent issues. Full details here.
Anything to say or contribute? Contact me at gdlibs@twilightsembrace.com. Gamedev.net users can also send me a private message.
© Ben Sizer 2004-2010. Last update 13th February 2010.
Thanks to all the authors who share their code and/or libraries to benefit game developers everywhere.
Special thanks to Sascha Stojanov for many additions.
-
Recent Posts
Recent Comments