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.
- General purpose libraries
- 3D Graphics
- 2D Graphics and GUIs
- Image and Font Handling
- Sound + Music
- 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
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.
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.
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|
|Axiom (OGRE in C#) LGPL|
|Crystal Space LGPL|
|Cube slightly modified zlib|
|Genesis3D similar to GPL|
|Grualia Freeware but displays watermark (commercial license available)|
|Jolt3D Unknown, free?|
|The Nebula Device free license|
|OGRE 3D LGPL|
|Panda 3D free|
|Yake LGPL, custom licenses|
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 libraries typically specialise in rendering sprites and GUI elements. Some may use underlying 3D acceleration functionality, and some may not.
These libraries are for decoding and displaying real-time video, useful for FMV cut scenes and the like.
|FFmpeg ‘open source’|
Libraries in this section handle the loading and setup of graphics formats, whether simple bitmap images or vector formats commonly used for fonts/typefaces.
|FreeImage GPL, FIPL|
|FreeType GPL or FreeType license (like BSD + giving credit)|
|GFL SDK |
|GTL (Game Texture Loader) ZLIB|
|IJG (jpeg library) free?|
|ImageMagick apache-style license|
|SOIL (Simple OpenGL Image Library) public domain|
|FTGL (fonts in OpenGL) LGPL|
|Glyph Keeper |
|SFont LGPL or GPL|
These libraries facilitate the loading and playing of sound and music files within your game.
|Hekkus Sound System (For WinCE/Win32/Symbian and .NET.) Credit or donation required|
|Ogg Vorbis BSD-like|
|OpenAL Soft (?)|
|PortAudio essentially free|
|SDL_mixer (requires SDL) LGPL|
|SDL_sound (requires SDL) LGPL|
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 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.
|OpenPlay Apple Public Source License|
|OpenTNL GPL , or commercial|
|RakNet GPL , or free by application|
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.
|Boost ASIO (part of Boost library) Boost license|
|libCURL (URL transfer) Curl license|
|Lidgren.Library.Network (.NET/C#) BSD|
|Pegasus (part of PLIB) LGPL|
|Game Network Engine LGPL|
Libraries in this section handle the loading of 3D models and their associated animations.
|GNU Triangulated Surface Library LGPL|
|OpenCTM (Open Compressed Triangle Mesh file format) ZLIB|
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.
Compression and archive formats
|LZMA (7-Zip compression) LGPL or CPL|
|Unrarlib free for non-commercial, otherwise GPL|
|ZipArchive GPL or commercial|
|zipstream, bzip2stream (iostream wrappers for the zlib and bzip2 libraries) ZLIB|
|zziplib LGPL / MPL|
|SQLite public domain|
An in-game scripting language can speed up development and allow non-programmers to help out with game behaviour.
|BOO (Reqs .NET/CLI) MIT/BSD style|
|CInt (C interpreter) free, reg. required for commercial use|
|Guile Modified GPL – almost LGPL|
|Ruby Ruby license|
|VBScript ‘license at no charge’|
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|
This section contains libraries helping with complex mathematics, such as calculating object physics, checking for collisions, generating random numbers, and more.
|Flatland (2D physics) BSD|
|Newton Game Dynamics Free, but must notify creators|
|Open Dynamics Engine (ODE) BSD|
|Open Dynamics Framework Free|
|OPAL BSD or LGPL – please check|
|Plane2D (for ODE) presumably BSD|
|True Axis |
|GImpact LGPL /BSD-like|
|Opcode free usage|
|PMask Public domain|
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) |
|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 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|
|GDAL – Geospatial Data Abstraction Library MIT|
|AdVantage Terrain – ‘easily add support for huge terrains’ |
 Free for noncommercial usage. Commercial usage will have to be negotiated with the author. Authors may have commercial licences available for purchase.
 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.
 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.
 BSD-like license, but note potential patent issues. Full details here.
Anything to say or contribute? Contact me at firstname.lastname@example.org. 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.