/gamedev_libraries

A collection of open source c/c++ libraries for gamedev

A Collection of C/C++ libraries for game development

System

Base

Lib Title
bkaradzic/bx Base library
septag/sx Portable base library for C programmers, tailored for performance and simplicity
nothings/stb stb single-file public domain libraries for C/C++
RandyGaul/cute_headers One-file C/C++ libraries with no dependencies, primarily used for games
vurtun/mmx single header libraries for C/C++
zpl-c/zpl Your C99 Powerkit
niklas-ourmachinery/bitsquid-foundation A minimalistic foundation library with functions for memory allocation, basic collections, etc. The library has been written with a data-oriented philosophy: POD structures are preferred over classes, flat arrays are the preferred data structure, etc.

Math

Lib Title
Hypatia Pure C math library 2D/3D graphics. Seeks to be close to C89/C90 compliant for portability.
g-truc/glm OpenGL Mathematics (GLM)
recp/cglm Optimized OpenGL/Graphics Math (glm) for C
google/mathfu C++ math library developed primarily for games focused on simplicity and efficiency.
ferreiradaselva/mathc Pure C math library for 2D and 3D programming
demianmnave/CML The Configurable Math Library http://cmldev.net
sce_vectormath Vector math library
Imath Imath
Handmade-Math A simple math library for games and computer graphics.
felselva/mathc Pure C math library for 2D and 3D programming.
PX4/eigen Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. http://eigen.tuxfamily.org/
laze-lib/blaze Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
sgorsten/linalg linalg.h is a single header public domain linear algebra library for C++11

Windowing/Inputs

Lib Title
SDL Simple DirectMedia Layer
SFML Simple and Fast Multimedia Library
glfw A multi-platform library
gainput C++ input library for games
wgois/OIS Object oriented Input System https://wgois.github.io/OIS/
ziacko/TinyWindow a cross platform (Linux and Windows) OpenGL window library in a single header
nyorain/ny Modern C++ cross-platform window abstraction

Threading

Lib Title
rhoot/sc Cross platform co-routine library exposed through a minimal C API
deboost.context "Deboostified" version of boost.context (coroutines), Plain and simple C API for context switching. Easy build on multiple platforms.
SergeyMakeev/TaskScheduler Multithreaded task scheduler experiments
dougbinks/enkiTS C++ and C multithreading task scheduler
Freeeaky/fiber-job-system Multi-Threaded Job System using Fibers
RichieSams/FiberTaskingLib A library for enabling task-based multi-threading. It allows execution of task graphs with arbitrary dependencies.
JodiTheTigger/sewing Small C API Multiplatform multithreaded fiber based job system
Pithikos/C-Thread-Pool A minimal but powerful thread pool in ANSI C
mbrossard/threadpool A simple C Thread pool implementation
tinycthread/tinycthread Small, portable implementation of the C11 threads API
yohhoy/thread C11 <threads.h> emulation library

Memory Allocators

Lib Title
mtrebi/memory-allocators Custom memory allocators in C++ to improve the performance of dynamic memory allocation
foonathan/memory STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write. http://foonathan.net/doc/memory
SergeyMakeev/smmalloc Blazing fast memory allocator designed for video games
plasma-umass/Mesh A memory allocator that automatically reduces the memory footprint of C/C++ applications.
rampantpixels/rpmalloc Public domain cross platform lock free thread caching 32-byte aligned memory allocator implemented in C
microsoft/mimalloc General purpose allocator with excellent performance characteristics.

SIMD

Lib Title
p12tic/libsimdpp Portable header-only zero-overhead C++ low level SIMD library
VcDevel/Vc SIMD Vector Classes for C++
nemequ/simde Implementations of SIMD instruction sets for systems which don't natively support them.
xtensor-stack/xsimd C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, NEON, AVX512)

Debugging

Lib Title
rxi/log.c A simple logging library implemented in C99
spdlog Fast C++ logging library.
easy_profiler Lightweight profiler library for c++
crosire/blink A tool which allows you to edit source code of any Windows C++ project live at runtime
ddovod/jet-live c++ hot code reload for linux and macos
RRZE-HPC/likwid Performance monitoring and benchmarking suite

Plugin System/Reflection

Lib Title
fungos/cr cr.h: A Simple C Hot Reload Header-only Library
Manu343726/ctti Compile Time Type Information for C++

Serialization

Lib Title
felixguendling/cista Simple C++ Serialization & Reflection. https://cista.rocks
msgpack/msgpack-c MessagePack implementation for C and C++
sheredom/json.h json parser for C and C++

Engine Components

Rendering

Lib Title
bkaradzic/bgfx Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
floooh/sokol minimal cross-platform standalone C headers
DiligentGraphics/DiligentEngine A modern cross-platform low-level 3D graphics library that supports Direct3D11, Direct3D12, OpenGL/GLES, Vulkan and Metal
Kode/Kore Modern low level game library and hardware abstraction
google/filament Filament is a real-time physically based rendering engine for Android, Windows, Linux and macOS
FNA-XNA/FNA3D 3D Graphics Library for FNA
grz0zrg/fbg Lightweight C 2D graphics API agnostic library with parallelism support
cofenberg/unrimp Unified renderer implementation ("Un r imp")
doitsujin/dxvk Vulkan-based D3D11 and D3D10 implementation for Linux / Wine
pplux/px Single header C++ Libraries for Thread Scheduling, Rendering
intel/fastuidraw library that provides a higher performance Canvas interface
V-EZ V-EZ is an open source, cross-platform (Windows and Linux) wrapper intended to alleviate the inherent complexity and application responsibility of using the Vulkan API.
ssloy/tinyrenderer A brief computer graphics / rendering course
nicebyte/nicegraf An abstraction layer for low-level platform-specific graphics APIs.
dr-soft/glbind Single file OpenGL API loader.
dr-soft/vkbind Single file Vulkan API loader.
LukasBanana/LLGL Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
zauonlok/renderer A shader-based software renderer written from scratch in C89
zeux/niagara A Vulkan renderer written from scratch on stream

Audio

Lib Title
openal-soft software implementation of the OpenAL 3D audio API
FNA-XNA/FAudio FAudio - Accuracy-focused XAudio reimplementation for open platforms
soloud Free, easy, portable audio engine for games
BareRose/atomix Portable, single-file, wait-free atomic sound mixing library utilizing SSE-accelerated mixing
dr-soft/miniaudio Single file audio playback and capture library
portaudio PortAudio is a free, cross-platform, open-source, audio I/O library
resonance-audio High fidelity spatial audio at scale.

Networking

Lib Title
librg Pure C99 game networking library
bkaradzic/bnet Message oriented networking library using TCP transport
zeromq/libzmq ZeroMQ core engine in C++, implements ZMTP/3.1 http://www.zeromq.org
rxi/dyad Asynchronous networking for C
lsalzman/enet ENet reliable UDP networking library
jarikomppa/ipc Public domain, cross platform, single header inter-process communication primitives. This is a "stb like" public domain header-only C/C++ library that provides inter process communication functionality, released under unlicense.
ValveSoftware/GameNetworkingSockets Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. Encryption.
jeremycw/httpserver.h Single header library for writing non-blocking HTTP servers in C

Scripting

Lib Title
svaarala/duktape Duktape - embeddable Javascript engine with a focus on portability and compact footprint
GaijinEntertainment/daScript daScript - high-performance statically strong typed scripting language https://daScript.org

UI

Lib Title
ocornut/imgui Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies
vurtun/nuklear A single-header ANSI C gui library
andlabs/libui Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports
rxi/microui Tiny immediate-mode UI library
julianeisel/bWidgets Basic UI widget toolkit designed for Blender
idea4good/GuiLite smallest UI framework for all platform & Docker -- 5k lines code
littlevgl/lvgl Graphics library to create an embedded GUI with easy-to-use graphical elements
wjakob/nanogui Minimalistic GUI library for OpenGL
randrew/layout Single-file library for calculating 2D UI layouts using stacking boxes. Compiles as C99 or C++.
mikke89/RmlUi C++ user interface package based on the HTML and CSS standards

ECS

Lib Title
skypjack/entt A fast and reliable entity-component system (ECS) and much more
redxdev/ECS C++ single-header entity component system library
alecthomas/entityx EntityX - A fast, type-safe C++ Entity-Component system
discoloda/Diana Entity Component system like Artemis implemented in C
SanderMertens/reflecs Multithreaded entity component system written in C99

Animation / Scenegraph

Lib Title
buserror/libc3 Lightweight C Scene Graph Library
guillaumeblanc/ozz-animation Open source c++ skeletal animation library and toolset
google/motive A cross-platform, memory efficient, and performant animation system written in C++

Physics

Lib Title
NVIDIAGameWorks/PhysX NVIDIA PhysX SDK 4
bulletphysics/bullet3 Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.
chriscamacho/bulletCapi C API for Bullet Physics
MADEAPPS/newton-dynamics Newton Dynamics is an integrated solution for real time simulation of physics environments. http://www.newtondynamics.com
erincatto/Box2D Box2D is a 2D physics engine for games http://box2d.org
Chipmunk2D A fast and lightweight 2D game physics library.
gjk.c Gilbert-Johnson-Keerthi (GJK) collision detection algorithm
phyx 2D physics engine with SoA/SIMD optimizations
PlayRho Real-time oriented physics engine and library that's currently best suited for 2D games
PositionBasedDynamics PositionBasedDynamics is a library for the physically-based simulation of rigid bodies, deformable solids and fluids
nudge A small data-oriented and SIMD-optimized 3D rigid body physics library.
ParticleSolver CPU and GPU implementations of a particle-based physics

Pathfinding

Lib Title
jps Jump Point Search, public domain, single .h (Super fast pathfinding on uniform grids)
astar-algorithm-cpp Implementations of the A* algorithm in C++ and C#
MicroPather A* solver (astar or a-star) written in platform independent C++
recastnavigation Navigation-mesh Toolset for Games

Database

Lib Title
symisc/unqlite An Embedded NoSQL, Transactional Database Engine
fnc12/sqlite_orm SQLite ORM light header only library for modern C++

Asset Management

Meshes/Geometry

Processing

Lib Title
libigl Simple C++ geometry processing library
MathGeoLib library for linear algebra and geometry manipulation for computer graphics
sseculling SSE Frustum Culling Demo
Cullminator9000 The fastest culler ever
SeamAwareDecimater Mesh simplification with UV's boundary preserved
zeux/meshoptimizer Mesh optimization library that makes indexed meshes more GPU-friendly
google/draco Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.

Importers/Exporters

Lib Title
assimp Official Open Asset Import Library Repository. Loads 40+ 3D file formats into one unified and clean data structure
nem0/OpenFBX Lightweight open source FBX importer
syoyo/tinyobjloader Tiny but powerful single file wavefront obj loader
syoyo/tinygltf Header only C++ Tiny glTF 2.0 loader.
jkuhlmann/cgltf Single-file glTF 2.0 parser written in C99
microsoft/glTF-SDK glTF-SDK is a C++ Software Development Kit for glTF
facebookincubator/FBX2glTF A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.

Texture Baking/Packing

Lib Title
BinomialLLC/basis_universal Basis Universal GPU Texture Codec
caosdoar/Fornos GPU Texture Baking Tool. A fast and simple tool to bake your high-poly mesh details to textures.
kmkolasinski/AwesomeBump AwesomeBump generate normal, height, specular or ambient occlusion textures from a single image
dariomanesku/cmft Cross-platform open-source command-line cubemap filtering tool
Cheetah-Texture-Packer High efficient and fast 2D bin packing tool
thekla_atlas Atlas Generation Tool
libvips A fast image processing library with low memory needs

Frameworks

Lib Title
GameFoundry/bsf Modern C++14 library for the development of real-time graphical applications https://www.bsframework.io
raylib A simple and easy-to-use library to enjoy videogames programming http://www.raylib.com
floooh/oryol A small, portable and extensible C++ 3D coding framework
ConfettiFX/The-Forge The Forge Cross-Platform Rendering Framework PC, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4
mosra/magnum Lightweight and modular C++11/C++14 graphics middleware for games and data visualization