# Raylib

Raylib is a free, relatively KISS, portable C (C99) library intended mainly for game development, offering IO handling, 2D and 3D graphics, audio, loading of different image and 3D formats etc., while restraining from a lot of bullshit of "modern" bloated engines/frameworks such as having tons of dependencies and targeting only very fast computing platforms. Raylib is pretty cool and employs many of the LRS/suckless ideas, even though from our strict point of view it is still a bit more complex than it really needs to be, e.g. by using floating point and relying on GPU accelerated 3D graphics. In terms of bloat it can be seen as a mid way between the mainstream (e.g. Godot) and LRS/suckless (e.g. small3dlib).

The following are some features of raylib as of writing this. The good and neutral features seem to be:

- written in C99
- no external software dependencies, all 3rd party libraries are packed with raylib (well, kind of, as specific platforms will require OpenGL implementation, windowing library etc.)
- no COC detected
- supports many systems including GNU/Linux, BSD, Macshit, Winshit, Android, web browser, claims to support even embedded (but probably only the faster, not sure about bare metal due to OpenGL etc.)
- NOT a framework, very bullshit-free
- permissive zlib license
- 2D and 3D support, IO, audio, fonts, math, includes most things you need for games (seems to lack only a physics engine)
- can load many file formats (jpg, png, obj, m3d, ttf, wav, flac, mp3, ogg, ...)
- bindings to 50+ languages (useless as all you need is C of course)
- nice documentation, many examples

And some of the bad features are:

- 150000+ lines of code
- not a header only library, requires building (makefile, optionally with cmake)
- using floating point and OpenGL creates complex dependencies and sends a fuck you to small embedded computers
- even though abstracted, some software dependencies are still needed depending on the platform, e.g. on GNU/Linux you need to install ALSA, Mesa and X11