- What is raylib?
- What can I do with raylib?
- Which kinds of games can I make with raylib?
- Can I create non-game applications with raylib?
- How can I learn to use raylib? Is there some official documentation or tutorials?
- How much does it cost?
- What is the raylib license?
- What platforms are supported by raylib?
- What programming languages can I use with raylib?
- Why is it coded in C?
- Is raylib a videogames engine?
- What does raylib provide that other engines or libraries don't?
- How does raylib compare to Unity/Unreal/Godot?
- What development tools are required for raylib?
- Which are raylib external dependencies?
- Can I use raylib with other technologies or libraries?
- What file formats are supported by raylib?
- Does raylib support the Vulkan API?
- What could I expect to see in raylib in the future?
- Who are the raylib developers?
raylib is a C programming library, designed to be simple and easy-to-use. It provides a set of functions intended for graphics/multimedia applications programming.
raylib can be used to create any kind of graphics/multimedia applications: videogames, tools, mobile apps, web applications... Actually it can be used to create any application that requires something to be shown in a display with graphic hardware acceleration (OpenGL); including IoT devices with a graphics display.
With enough time and effort any kind of game/application can be created but small-mid sized 2d videogames are the best fit. The raylib examples/games and raylibtech tools are an example of what can be accomplished with raylib.
Yes, raylib can be used to create any kind of application, not just videogames. For example, it can be used to create desktop/web tools or also applications for an IoT devices like Raspberry Pi.
raylib does not provide a "standard" API reference documentation like other libraries, all of the raylib functionality is exposed in a simple cheatsheet. Most of the functions are self-explanatory and the required parameters are very intuitive. It's also highly recommended to take a look to raylib.h
header file or even the source code, that is very clean and organized, intended for teaching.
raylib also provides a big collection of examples, to showcase the multiple functionality usage (+120 examples). Examples are categorized by the internal module functionality and also define an estimated level of difficulty to guide the users checking them.
There is also a FAQ on the raylib Wiki with common technical questions.
There are also many tutorials on the internet and YouTube created by the growing raylib community along the years.
raylib Discord Community is also a great place to join and ask questions, the community is very friendly and always ready to help.
raylib is free and open source. Anyone can use raylib library for free to create games/tools/apps but also the source code of raylib is open for anyone to check it, modify it, adapt it as required or just learn how it works internally.
raylib source code is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check LICENSE for further details.
raylib source code can be compiled for the following platforms:
- Windows (7, 8.1, 10, 11)
- Linux - Desktop (multiple distributions, X11 and Wayland based)
- Linux - Native (no windowing system, DRM)
- macOS (multiple versions, including ARM64)
- FreeBSD, OpenBSD, NetBSD, DragonFly
- Raspberry Pi (desktop and native)
- Android (multiple API versions and architectures)
- HTML5 (WebAssembly)
- Haiku
raylib code has also been ported to several homebrew platforms: N3DS, Switch, PS4, PSVita.
Also note that raylib is a low-level library that can be easily ported to any platform with OpenGL support (or similar API).
raylib original version is coded in C language (using some C99 features) but it has bindings to +60 programming languages. Check BINDINGS.md for details.
It's a simple language, no high-level code abstractions like OOP, just data types and functions. It's a very enjoyable language to code.
I personally consider raylib a graphics library with some high-level features rather than an engine. The line that separates a library/framework from an engine could be very confusing; raylib provides all the required functionality to create simple games or small applications but it does not provide 3 elements that I personally consider any "engine" should provide: Screen manager, GameObject/Entity manager and Resource Manager. Still, most users do not need those elements or just code simple approaches on their own.
I would say "simplicity" and "enjoyment" at a really low-level of coding but actually is up to the user to discover it, to try it and to see if it fits their needs. raylib is not good for everyone but it's worth a try.
Those engines are usually big and complex to use, providing lot of functionality. They require some time to learn and test, they usually abstract many parts of the game development process and they usually provide a set of tools to assist users on their creations (like a GUI editor).
raylib is a simple programming library, with no integrated tools or editors. It gives full control to users at a very low-level to create graphics applications in a more handmade way.
To develop raylib programs you only need a text editor (with recommended code syntax highlighting) and a compiler.
A raylib Windows Installer package is distributed including the Notepad++ editor and MinGW (GCC) compiler pre-configured for Windows for new users as an starter-pack but for more advance configurations with other editors/compilers, raylib Wiki provides plenty of configuration tutorials.
raylib is self-contained, it has no external dependencies to build it. But internally raylib uses several libraries from other developers, mostly used to load specific file-formats.
A detailed list of raylib dependencies could be found on the raylib Wiki.
Yes, raylib can be used with other libraries that provide specific functionality. There are multiple examples of raylib integrations with libraries like Spine, Tiled, Dear Imgui and several physics engines.
raylib can load data from multiple standard file formats:
- Image/Textures: PNG, BMP, TGA, JPG, GIF, QOI, PSD, DDS, HDR, KTX, ASTC, PKM, PVR
- Fonts: FNT (sprite font), TTF, OTF
- Models/Meshes: OBJ, IQM, GLTF, VOX
- Audio: WAV, OGG, MP3, FLAC, XM, MOD
No, raylib is built on top of OpenGL API, and there are currently no plans to support any other graphics APIs. In any case, raylib uses rlgl as an abstraction layer to support different OpenGL versions. If really required, a Vulkan backend equivalent could be added but creating that abstraction layer would imply a considerable amount of work.
The main focus of the library is simplicity. Most of the efforts are invested in maintainability and bug-fixing. Despite new small features are regularly added, it's not the objective for raylib to become a full-featured engine. Personally I prefer to keep it small and enjoyable.
The main raylib developer and maintainer is Ramon Santamaria but there's 360+ contributors that have helped by adding new features, testing the library and solving issues in the 9+ years life of raylib.
The full list of raylib contributors can be seen on GitHub.