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 change the licence at any time or mistakes could exist on this page, so ensure you verify a library's licence before use.
Most 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.
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,
| Agar (graphics toolkit for SDL and OpenGL) BSD |
| AgateLib (.NET library) MPL |
| Alchemist's Game Library (2D game engine) [1] |
| Allegro giftware |
| Amaltheia (game programming API) LGPL |
| ArcLib (2D game programming system for the D programming language) 'free, BSD-like' |
| Basic Game Library (Docs in Spanish?) CC |
| IKA (generic gaming engine) 'free' |
| ClanLib LGPL |
| CRM32Pro multimedia SDK GPL |
| Game Incubator free |
| GLFW ZLIB |
| Goblin 2D+ Engine [1] |
| Golden T Game Engine (Java) [2] |
| Gosu (2D engine for C++ amd Ruby) Free |
| KJAPI [1] |
| MASI-CiX 2D sprite-based game platform [1] |
| OpenTK Game development library for .Net/Mono MIT |
| PLIB General purpose library. LGPL |
| Popcap 2D library with extras. Popcap |
| Proyecto dx_lib32 Spanish language. VB6. Free |
| Pure Power Tactical Engine (RTS engine) LGPL |
| Realmforge (in C#) LGPL |
| SDL LGPL |
| SDL.NET LGPL |
| SFML (Simple and Fast Multimedia Library) ZLIB |
| SpriteCraft Freeware |
| Stratagus (RTS engine) GPL |
| SxDL 2D, 3D, audio, etc.GPL |
| The Tao Framework (various libs ported to .Net) Various |
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 |
| Apocalyx GPL |
| Axiom (OGRE in C#) LGPL |
| Crystal Space LGPL |
| Cube slightly modified zlib |
| Delta3D LGPL |
| Fly3D GPL |
| G3D BSD |
| Genesis3D similar to GPL |
| Heretic/Hexen [1] |
| Irrlicht ZLIB |
| LightFeather ZLIB |
| The Nebula Device free license |
| NeoEngine MPL |
| OGRE 3D LGPL |
| Panda 3D free |
| QuakeForge GPL |
| XEngine ZLIB |
| 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.
| Dirac MPL |
| FFmpeg 'open source' |
| Theora 'BSD-like' |
| XviD GPL |
Libraries in this section handle the loading and setup of graphics formats, whether simple bitmap images or vector formats commonly used for fonts/typefaces.
| CImg CeCill |
| Corona ZLIB |
| CxImage ZLIB |
| DevIL LGPL |
| FreeImage GPL, FIPL |
| 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 |
| BFont LGPL |
| FTGL (fonts in OpenGL) LGPL |
| GLFT_Font ZLIB |
| Glyph Keeper [4] |
| SFont LGPL or GPL |
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 (?) | |
| 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.
| 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 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 |
| Dyconnect ZLIB |
| Enet free |
| Etwork MIT |
| HawkNL LGPL |
| libCURL (URL transfer) Curl license |
| Lidgren.Library.Network (.NET/C#) BSD |
| Pegasus (part of PLIB) LGPL |
| SDL_net LGPL |
| Game Network Engine LGPL |
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 |
| Trimeshloader 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.
| ezXML MIT |
| libXML MIT |
| TinyXML zlib |
| 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 |
| Crypto++ [3] |
| SDL_Config LGPL |
| SQLite public domain |
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' |
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 ? |
This section contains libraries helping with complex mathematics, such as calculating object physics, checking for collisions, generating random numbers, and more.
| Box2D ZLIB |
| Bullet ZLIB |
| 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] |
| ColDet LGPL |
| GImpact LGPL /BSD-like |
| Opcode free usage |
| PMask Public domain |
| Rapid [1] |
| Solid LGPL |
| V-Collide [1] |
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 |
| 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 |
Random...
| GDAL - Geospatial Data Abstraction Library MIT |
| AdVantage Terrain - 'easily add support for huge terrains' [1] |
Anything to say or contribute? Contact me at gdlibs@blahghtsembrace.com. Gamedev.net users can also send me a private message.
© Ben Sizer 2004-2008. Last update 4th April 2008.
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.