A collection of useful libraries and tools for game development. The table below highlights each library with its (source and/or API) language and license. Following is a full library listing with brief descriptions and links to downloads and documentation.
The greater part of these libraries are free open-source (FOSS) with various licenses including zlib, BSD, MIT, and GPL; a few have proprietary licenses but are free to use; and at least one (actually a collection in its own right) has been released into the public domain.
I began putting this together for my own use, to have a central repository of
useful libraries (similar to AwesomeC++, among others) from which to choose
rather than continually hunting down each one “in the wild.” I also added most
of the libraries as submodules in order to install/update the whole collection
with just a few commands: git submodule update --init
clones all submodules;
git submodule foreach git pull
updates them to the latest upstream commit.
The libraries in this list were primarily selected for their usefulness in game development, but many are applicable to other types of projects as well.
The source links below reference (where possible) the official/primary source repository for each project, many of which are on GitHub. Additionally, if a project has a mirror on GitHub (or elsewhere for projects whose primary source is GitHub) – even an unofficial one, as long as it is kept reasonably up-to-date – that is also listed.
If you notice an error in the list (wrong language, license, link) or think something needs a new or different category, create an issue or pull request. Likewise, if you know of a library that would fit well on this list – C/C++ API, useful in “multimedia” applications, preferably free and open-source – and you don't see it here, create an issue and I'll check it out. (I'd prefer not to use pull requests for this.)
Group | Library | Language | License | |||
---|---|---|---|---|---|---|
Base Libraries | SDL2 | C | zlib | |||
SFML | C++ | zlib | ||||
GLFW | C | zlib | ||||
Graphics | OpenGL | C | API only | |||
GLAD | C/C++ | MIT | ||||
GLEW | C | BSD | ||||
GLLoadGen | C/C++ | MIT | ||||
Audio | FMOD Studio | C++ | Prop. | |||
OpenAL | C | API only | ||||
OpenAL-Soft | C | LGPL | ||||
Lyd | C | ISC | ||||
Physics | Box2D | C++ | zlib | |||
Bullet | C++ | zlib | ||||
Chipmunk2D | C | MIT | ||||
Math | GLM | C++ | MIT | |||
Graphene | C | MIT | ||||
Serialization | Jansson | C | MIT | |||
MessagePack | C | Boost | ||||
TinyXML2 | C++ | zlib | ||||
YAML | C | MIT | ||||
Scripting | Lua | C | MIT | |||
LuaJIT | C | MIT | ||||
MoonScript | Lua | MIT | ||||
Python | C | PSF | ||||
Ruby | C | BSD | ||||
mruby | C | MIT | ||||
Squirrel | C++ | MIT | ||||
Networking | cURL | C | MIT | |||
ENet | C | MIT | ||||
AI | FANN | C | LGPL | |||
MicroPather | C++ | zlib | ||||
Miscellaneous | Catch | C++ | Boost | |||
Discount | C | BSD | ||||
ImGui | C++ | MIT | ||||
Open Steamworks | C++ | Other | ||||
PhysicsFS | C | zlib | ||||
STB Nothings | C | - | ||||
Steamworks | C++ | Prop. | ||||
TTVFS | C++ | MIT | ||||
Tools | CMake | C++ | BSD | |||
Ninja | C++ | Apache | ||||
Premake | Lua | BSD | ||||
SCons | Python | MIT |
Input and event handling, windowing, graphics context handling, and sometimes include other common services such as graphics, audio, and resource management.
2D graphics (software or hardware-accelerated); OpenGL support if requested; basic audio playback; basic I/O support. Additional features can be added through a selection of support libraries.
- Website: http://libsdl.org/
- License: zlib
- Source: Website
- Mirror: GitHub
2D graphics (through OpenGL); buffered and streaming audio playback; support for loading various image, font, and audio file formats.
- Website: http://sfml-dev.org/
- License: zlib
- Source: GitHub
Lightweight base library that provides a minimum of extra features.
- Website: http://www.glfw.org/
- License: zlib
- Source: GitHub
Render visuals to an on-screen or off-screen surface, including support libraries for using such functionality.
API for accelerated 2D and 3D graphics.
- Website: https://www.opengl.org/
- License: None (API only)
- Source: Registry
Detects and enables OpenGL extensions in a client application.
- Website: http://glad.dav1d.de/
- License: MIT
- Source: GitHub
Detects and enables OpenGL extensions in a client application.
- Website: http://glew.sourceforge.net/
- License: BSD
- Source: GitHub
- Mirror: SourceForge
Detects and enables OpenGL extensions in a client application.
- Website: https://bitbucket.org/alfonse/glloadgen/src
- License: MIT
- Source: BitBucket
Render sound effects and music to an audio device, including support libraries for using such functionality.
API for high-level audio management and playback.
- Website: http://www.fmod.org/
- License: Proprietary
- Source: None
API for advanced 3D audio.
- Website: https://www.openal.org/
- License: None? (API only)
- Source: None
Free, open-source software implementation of OpenAL.
- Website: http://openal-soft.org/
- License: LGPL
- Source: GitHub
Realtime audio-synthesis engine.
- Website: http://pippin.gimp.org/lyd/
- License: ISC
- Source: Website
- Mirror: GitHub
Simulate 2D and 3D dynamic physics. Usually geared toward performance over precision, but may also be tunable.
2D physics engine.
- Website: http://box2d.org/
- License: zlib
- Source: GitHub
3D physics engine.
- Website: http://bulletphysics.org/
- License: zlib
- Source: GitHub
2D physics engine.
- Website: http://chipmunk-physics.net/
- License: MIT
- Source: GitHub
Provide extra mathematical functions above the standard library, especially vector-matrix math (linear algebra) since it's useful for graphics.
C++ library of vector and matrix math functions, designed to comply with GLSL types and functions (but does not require OpenGL).
- Website: http://glm.g-truc.net/
- License: MIT/“Happy Bunny”
- Source: GitHub
C library of vector and matrix math functions.
- Website: https://ebassi.github.io/graphene/
- License: MIT
- Source: GitHub
Convert application data to and from a portable representation (usually text).
Library for JSON serialization.
- Website: http://www.digip.org/jansson/
- License: MIT
- Source: GitHub
Library for compact binary object serialization.
- Website: http://msgpack.org/
- License: Boost
- Source: GitHub
Library for XML serialization.
- Website: http://www.grinninglizard.com/tinyxml2/
- License: zlib
- Source: GitHub
Library for YAML serialization.
- Website: http://www.yaml.org/
- License: MIT
- Source: BitBucket
- Mirror: GitHub
Enable scripting (by e.g. end users, non-programmers) to modify and extend a program without recompiling, whether during testing to reduce development cycle time, or after deployment to reduce the size of updates (often only a single script needs to be updated, not the entire application).
Simple but expressive high-level scripting language, designed for embedding.
- Website: http://www.lua.org/
- License: MIT
- Source: Website
- Mirror: GitHub
Lua implementation with faster VM and JIT-compiler for even more performance.
- Website: http://luajit.org/
- License: MIT
- Source: Website
- Mirror: GitHub
Ruby-like language that “compiles” to Lua. (Requires Lua.)
- Website: https://github.com/leafo/moonscript
- License: MIT
- Source: GitHub
Powerful, widely-used scripting language with extensive library support.
- Website: http://python.org/
- License: PSF
- Source: Website
- Mirror: GitHub
Concise yet powerful scripting language “with a focus on simplicity”.
- Website: https://www.ruby-lang.org/
- License: BSD
- Source: GitHub
Embeddable standard-compliant version of Ruby.
- Website: http://www.mruby.org/
- License: MIT
- Source: GitHub
Sort of a mash-up of C++ and Lua.
- Website: http://squirrel-lang.org/
- License: MIT
- Source: SourceForge
- Mirror: GitHub
Send and receive data over the internet (or local network) for features like DLC, UGC, and multiplayer.
Library (and tool) for transparent access to internet resources.
- Website: http://curl.haxx.se
- License: MIT
- Source: GitHub
Reliable UDP network protocol.
- Website: http://enet.bespin.org/
- License: MIT
- Source: GitHub
Give enemies, NPCs, player units, etc. the ability to “think” for themselves.
Fast Automatic Neural Networks, useful for developing and training AIs.
- Website: http://leenissen.dk/fann/
- License: LGPL
- Source: GitHub
Generic A* solver for pathfinding.
- Website: http://www.grinninglizard.com/MicroPather/
- License: zlib
- Source: GitHub
Header-only C++ unit test library.
- Website: https://github.com/philsquared/Catch
- License: Boost
- Source: GitHub
Markdown parser with HTML renderer.
- Website: http://www.pell.portland.or.us/~orc/Code/discount/
- License: BSD
- Source: Website
- Mirror: GitHub
Light-weight immediate mode GUI.
- Website: http://www.patreon.com/imgui
- License: MIT
- Source: GitHub
Reverse-engineered Steamworks API library.
- Website: https://github.com/SteamRE/open-steamworks
- License: Unknown
- Source: GitHub
Virtual filesystem with write-isolation.
- Website: https://icculus.org/physfs/
- License: zlib
- Source: Website
Collection of various helpful tools for loading images and fonts, generating Perlin noise, and more.
- Website: https://github.com/nothings/stb
- License: Public domain
- Source: GitHub
API for integration with Steam platform.
- Website: https://partner.steamgames.com/
- License: Proprietary
- Source: None
Virtual filesystem in C++.
- Website: https://github.com/fgenesis/ttvfs
- License: MIT
- Source: GitHub
Useful development tools, especially build tools right now.
Powerful build script generator.
- Website: https://cmake.org/
- License: BSD
- Source: Website
- Mirror: GitHub
Ultra-fast low-level build tool.
- Website: https://ninja-build.org/
- License: Apache
- Source: GitHub
Build script generator based on Lua. (Includes Lua.)
- Website: https://premake.github.io/
- License: BSD
- Source: GitHub
Fully-integrated build system based on Python. (Requires Python.)
- Website: http://www.scons.org/
- License: MIT
- Source: BitBucket