Collection of one-file C/C++ libraries, primarily used for games
C Objective-C C++ Mathematica Makefile PostScript
Latest commit 0de6a11 Feb 19, 2017 @RandyGaul committed on GitHub Update


Various single-file cross-platform C/C++ headers implementing self-contianed libraries.

library description latest version language(s) license
tinysound Load/play/loop/pitch/pan WAV + OGG in mono/stereo, high performance custom mixer 1.06 C/C++ zlib
tinynet * Netcode for multiplayer games, reliable/unreliable packets, send/recieve large chunks reliably, encryption, network simulator, flow control, serialization + data integrity checks, compression 0.0 C/C++ zlib
tinytime Single function to return elapsed time delta in seconds since last call 1.0 C/C++ zlib
tinymemfile Utility for calling fscanf-alike functions on files embedded in memory 1.0 C++ zlib
tinyfiles Directory traversal, both recursive and manual 1.0 C/C++ zlib
tinysid Compile time string hashing via preprocessing; turns strings into integers 1.0 C/C++ zlib
tinymath Professional level 3D vector math via SIMD intrinsics 1.0 C++ zlib
tinydeflate DEFLATE compliant compressor/decompressor, load/save PNG, texture atlas compiler 1.01 C/C++ public domain
tinygl OpenGL wrapper with carefully designed API to foster fast iteration 1.0 C/C++ zlib
tinyc2 2D collision detection routines on primitives, boolean results and/or manifold generation 1.01 C/C++ zlib

* Not yet hit first release

How to Use

Generally these headers do not have dependencies and are intended to be included directly into your source (check each header for specific documentation at the top of the file). Each header has a LIBNAME_IMPLEMENTATION symbol; add this to a single translation unit in your code and include the header right after in order to define library symbols. Just include the header as normal otherwise.

Examples and Tests

Some headers also have example code or demos. In this repo just look for the corresponding examples or tests folders. The example folders are particularly useful for figuring out how to use a particular header.