10 KiB

Frequently Asked Questions

What is raylib?

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.

What can I do with raylib?

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.

Which kinds of games can I make with raylib?

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.

Can I create non-game applications 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.

How can I learn to use raylib? Is there some official documentation or tutorials?

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 at 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 over 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.

How much does it cost?

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.

What is the raylib license?

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.

What platforms are supported by raylib?

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).

What programming languages can I use with raylib?

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.

Why is it coded in C?

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.

Is raylib a videogames engine?

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.

What does raylib provide that other engines or libraries don't?

I would say "simplicity" and "enjoyment" at a really low level of coding but actually it 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.

How does raylib compare to Unity/Unreal/Godot?

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.

What development tools are required for raylib?

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 advanced configurations with other editors/compilers, raylib Wiki provides plenty of configuration tutorials.

What are raylib's external dependencies?

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 can be found on the raylib Wiki.

Can I use raylib with other technologies or libraries?

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.

What file formats are supported by raylib?

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, M3D
  • Audio: WAV, OGG, MP3, FLAC, XM, MOD, QOA

Does raylib support the Vulkan API?

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.

What could I expect to see in raylib in the future?

The main focus of the library is simplicity. Most of the efforts are invested in maintainability and bug-fixing. Despite new small features being regularly added, it's not the objective for raylib to become a full-featured engine. Personally I prefer to keep it small and enjoyable.

Who are the raylib developers?

The main raylib developer and maintainer is Ramon Santamaria but there are 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.