Skip to content

criptych/gamelibs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game Development Libraries and Tools

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.

About this list

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.

Sources

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.

Corrections & Suggestions

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.)


Summary

Group Library Language License
Base Libraries SDL2 C C P zlib
SFML C++ C zlib
GLFW C C zlib
Graphics OpenGL C API only
GLAD C/C++ C MIT
GLEW C C BSD
GLLoadGen C/C++ P MIT
Audio FMOD Studio C++ Prop.
OpenAL C API only
OpenAL-Soft C C LGPL
Lyd C A ISC
Physics Box2D C++ C P zlib
Bullet C++ C P zlib
Chipmunk2D C C MIT
Math GLM C++ C MIT
Graphene C A MIT
Serialization Jansson C C MIT
MessagePack C C Boost
TinyXML2 C++ C zlib
YAML C C MIT
Scripting Lua C C MIT
LuaJIT C C MIT
MoonScript Lua A MIT
Python C A PSF
Ruby C A BSD
mruby C R MIT
Squirrel C++ A MIT
Networking cURL C C MIT
ENet C C P MIT
AI FANN C C LGPL
MicroPather C++ A zlib
Miscellaneous Catch C++ Boost
Discount C A BSD
ImGui C++ MIT
Open Steamworks C++ M Other
PhysicsFS C C zlib
STB Nothings C M -
Steamworks C++ Prop.
TTVFS C++ C MIT
Tools CMake C++ C BSD
Ninja C++ Apache
Premake Lua P A BSD
SCons Python S MIT

Base Libraries

Input and event handling, windowing, graphics context handling, and sometimes include other common services such as graphics, audio, and resource management.

SDL2

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.

SFML

2D graphics (through OpenGL); buffered and streaming audio playback; support for loading various image, font, and audio file formats.

GLFW

Lightweight base library that provides a minimum of extra features.


Graphics

Render visuals to an on-screen or off-screen surface, including support libraries for using such functionality.

OpenGL

API for accelerated 2D and 3D graphics.

GLAD

Detects and enables OpenGL extensions in a client application.

GLEW

Detects and enables OpenGL extensions in a client application.

GLLoadGen

Detects and enables OpenGL extensions in a client application.


Audio

Render sound effects and music to an audio device, including support libraries for using such functionality.

FMOD Studio

API for high-level audio management and playback.

OpenAL

API for advanced 3D audio.

OpenAL-Soft

Free, open-source software implementation of OpenAL.

Lyd

Realtime audio-synthesis engine.


Physics

Simulate 2D and 3D dynamic physics. Usually geared toward performance over precision, but may also be tunable.

Box2D

2D physics engine.

Bullet

3D physics engine.

Chipmunk2D

2D physics engine.


Math

Provide extra mathematical functions above the standard library, especially vector-matrix math (linear algebra) since it's useful for graphics.

GLM

C++ library of vector and matrix math functions, designed to comply with GLSL types and functions (but does not require OpenGL).

Graphene

C library of vector and matrix math functions.


Serialization

Convert application data to and from a portable representation (usually text).

Jansson

Library for JSON serialization.

MessagePack

Library for compact binary object serialization.

TinyXML2

Library for XML serialization.

yaml

Library for YAML serialization.


Scripting

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).

Lua

Simple but expressive high-level scripting language, designed for embedding.

LuaJIT

Lua implementation with faster VM and JIT-compiler for even more performance.

MoonScript

Ruby-like language that “compiles” to Lua. (Requires Lua.)

Python

Powerful, widely-used scripting language with extensive library support.

Ruby

Concise yet powerful scripting language “with a focus on simplicity”.

mruby

Embeddable standard-compliant version of Ruby.

Squirrel

Sort of a mash-up of C++ and Lua.


Networking

Send and receive data over the internet (or local network) for features like DLC, UGC, and multiplayer.

cURL

Library (and tool) for transparent access to internet resources.

ENet

Reliable UDP network protocol.


Artificial Intelligence

Give enemies, NPCs, player units, etc. the ability to “think” for themselves.

FANN

Fast Automatic Neural Networks, useful for developing and training AIs.

MicroPather

Generic A* solver for pathfinding.


Miscellaneous

Catch

Header-only C++ unit test library.

Discount

Markdown parser with HTML renderer.

ImGui

Light-weight immediate mode GUI.

Open Steamworks

Reverse-engineered Steamworks API library.

PhysicsFS

Virtual filesystem with write-isolation.

STB

Collection of various helpful tools for loading images and fonts, generating Perlin noise, and more.

Steamworks

API for integration with Steam platform.

TTVFS

Virtual filesystem in C++.


Tools

Useful development tools, especially build tools right now.

CMake

Powerful build script generator.

Ninja

Ultra-fast low-level build tool.

Premake

Build script generator based on Lua. (Includes Lua.)

SCons

Fully-integrated build system based on Python. (Requires Python.)


About

Game Development Libraries and Tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published