What Is raylib and How Do You Start Making Games With It?
raylib is a simple, easy-to-use programming library for making videogames, written for C and usable from C++. It is code-first: there is no fancy interface, no visual helpers, no GUI tools or editors — you build games by writing code. That makes it a good fit if you already know some C or C++ and want direct control without an engine's editor layer, or if you want a small library you can learn from a cheatsheet and a pile of examples. If you want a drag-and-drop scene editor, raylib is deliberately not that.
What raylib actually is
raylib is a library, not a game engine. You write a program, call raylib functions for windows, input, graphics, audio, and math, and compile it like any other C program. The project describes itself as "a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no gui tools or editors... just coding in pure spartan-programmers way."
Two consequences follow from that design:
- You learn by reading code. The project states it does not provide the typical API documentation or a big set of tutorials. Instead, it is meant to be learned from a cheatsheet covering the required functionality plus a large collection of examples.
- You bring your own structure. There is no editor to organize scenes, assets, or build settings, so project layout and build steps are yours to set up.
How it differs from Unity or Godot
The practical difference is where the work happens.
| Dimension | raylib | Typical editor-based engine |
|---|---|---|
| Primary workflow | Write C/C++ code | Build scenes in a visual editor, attach scripts |
| Built-in editor | None | Yes |
| Learning material style | Cheatsheet + examples | Docs, tutorials, editor guides |
| Language | C, with C++ support; 60+ bindings for other languages | Usually a fixed set of supported languages |
| Structure provided | Minimal — a template is offered as a starting point | Project/scene structure built in |
Neither column is "better" in the abstract. Choose raylib when you want to write the game as a program and keep the toolchain small. Choose an editor-based engine when you want visual scene assembly, asset pipelines, and a guided project structure.
The recommended learning path
The project points to a specific route rather than a tutorial series:
- Start with the cheatsheet. It lists the functionality you need, so you can see the available calls without reading full API docs.
- Read the examples. The project's stated position is that the best way to learn to code is reading code, and the examples show how each piece of functionality is used.
- Use the raylib game template if the options overwhelm you. It provides some structure and a Makefile that are quick to pick up, which is useful when you want a working layout instead of assembling one yourself.
- Join the Discord community. The project recommends it for staying up to date on raylib news and asking for help. Community-made tutorials also exist outside the official materials.
A concrete first task looks like this: install raylib, open one example that draws something and responds to input, compile and run it unchanged, then modify one value and recompile to confirm your build loop works. That verifies your setup before you write anything original.
Platforms and language bindings
raylib has been tested on multiple target platforms. The project notes that technically any platform supporting the C language and OpenGL graphics (or similar) can run raylib, or can be ported to it fairly easily.
You are not limited to C and C++. There are more than 60 language bindings, so you can use raylib from many other programming languages. If your preferred language is not C, check whether a binding exists before assuming you need to switch languages.
Extending it and what it powers
raylib can be combined with extra libraries for additional functionality. Some of those libraries are already used internally by raylib, while others are provided for you to integrate; most are single-file, header-only, and have no external dependencies — which keeps them easy to drop into a project.
raylib is also the base technology behind the raylib technologies tools: several multiplatform tools have been built with raylib and raygui. That is a useful signal if you want to see what the library looks like at application scale rather than in minimal examples.
Getting started checklist
- Confirm you are comfortable writing and compiling C or C++ (or pick one of the 60+ bindings for a language you already know).
- Accept that there is no editor: your project structure and build configuration are your responsibility.
- Learn from the cheatsheet and the examples rather than expecting full API documentation.
- Use the raylib game template if you want a ready-made structure and Makefile.
- Join the Discord community for news and help.
- Check the extra libraries before writing utility code that may already exist as a single-file dependency.
If that workflow sounds appealing — code, compile, read examples, iterate — raylib is designed exactly for it. If you want a visual editor and a guided project structure, an editor-based engine will get you to a running game with less setup work.