Minimalist framework in plain C for quick 3D game development.
-
C++. C. -
Fast. Simple. -
Modern. Readable. -
Full featured. Small. -
Royaltie fee. Free and unlicensed.
- Portable: Windows,
Linux and OSX.MSVC,GCC and clang. - Windowing, fullscreen, msaa, cursor handling.
- UI: color3, color4, button, list, slider, checkbox, editbox...
- Math: rand, ease, vec2, vec3, vec4, mat33, mat34, mat44, quat
and quat2. bezier, catmull. - Collisions: ray, line, plane, aabb, sphere, capsule, triangle, poly and frustum.
- Input: keyboard, mouse and gamepads.
- Render: Post-effects (SSAO,FXAA1/3,CRT,Contrast,Grain,Outline,Vignette,...)
and shadertoys. - Render: Cubemaps, panoramas and spherical harmonics.
- Render: 2D Sprites, spritesheets, batching
and 2D Spines. - Render: 3D Debugdraw, batching and vectorial font.
- Render: 3D Anims, skeletal anims and hardware skinning.
- Models: IQM, GLTF/2, FBX, OBJ, DAE, BLEND, MD3, MD5, MS3D, SMD, X, 3DS, BVH, DXF, LWO.
- Audios: WAV, MOD, XM, FLAC, OGG, MP1, MP3, MID
and SFXR. - Images: JPG, PNG, TGA, BMP, PSD, HDR, PIC, PNM
and GIF. - Textures: BCn 1/2/3/
4/5/6/7, DDS, KTX, ETC. - Videos: MPG,
OGV and MP4. - Compressors: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS, PPP
and LZP1. - Local and virtual filesystems: ZIP, PAK, TAR and DIR.
- Network: downloads (http/s and ftp)
and tcp/udp sockets. - Script: Lua, bindings
and FFI. - Integrated asset pipeline.
- Profiler and stats.
- Scene handling.
- Disk cache.
- Level data: JSON5
and XML. - Level objects: volumes, triggers, platforms, streaming.
- Level editor.
c:\fwk> cl test.c && test
Note: Assimp.dll may need this package installed.
The project is released into the public domain (as per this notice).
Also dual-licensed as MIT (No Attribution) for those countries where public domain is a concern (sigh).
Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
- Goblin165cm, for witch 3D model (CC BY 4.0).
- Nanofactory, for kgirls01 3D model (CC BY-NC-ND 4.0).
- Rxi, for sprites & cats demo (MIT).
- Assimp authors, for assimp (BSD3).
- Barerose, for swrap (CC0).
- Camilla Löwy, for glfw3 (Zlib)
- David Herberth, for glad generated code (PD).
- David Reid, for miniaudio (PD).
- Dominik Madarász, for json5 parser (PD).
- Dominic Szablewski, for pl_mpeg (MIT).
- Joonas Pihlajamaa, for JUnzip library (PD).
- Jon Olick, for jo_mp1 and jo_mpeg (PD).
- Joshua Reisenauer, for jar_mod and jar_xm (PD).
- Lee Salzman, for IQM spec & player (PD).
- Lua authors, for Lua language (MIT).
- Mattias Gustavsson, for thread.h (PD).
- Micha Mettke, for nuklear (PD).
- Rich Geldreich, for miniz (PD).
- Sean Barrett, for stb_image, stb_image_write and stb_vorbis (PD).
- Sebastian Steinhauer, for sts_mixer (PD).
- Tomas Pettersson, for sfxr (PD).
- Special thanks to @ands (PD), @barerose (CC0), @datenwolf (WTFPL2), @evanw (CC0), @glampert (PD), @krig (CC0), @sgorsten (Unlicense), @vurtun (PD) for their math libraries.
Looking for alternatives? amulet, aroma, astera, blendelf, bullordengine, candle, cave, chickpea, corange, ejoy2d, exengine, gunslinger, hate, island, juno, l, lgf, limbus, love, lovr, mini3d, mintaro, mio, opensource, pez, pixie, punity, ricotech, rizz, tigr,