We recorded this before Pieter levels took over the internet of
his flying game, but more people are building games and to build games
you typically need a game engine.
So I went scouring Reddit to see what's out there and one game engine
kept coming up again and again.
Raylib is exactly what you're looking for,
OP
not enough people have heard of Raylib.
Fantastic wrapper over OpenGL and really simple to use.
Raylib has everything: features, supports, portability, awesome community.
On top of that, Ramon is a genuinely great guy.
Today we're interviewing Ramon, creator of Raylib.
And yes, he is a great guy.
As of February, 2025, Raylib is the second most popular open
source game engine behind Godot.
It has 25,000 GitHub stars, 13,000 discord community members, and more
than 8,000 people in his subreddit.
Alongside his open source work, Ramon has built several paid Raylib tools.
And they're quickly replacing his income from lecturing and consulting.
In this episode, we'll find out how Raylib started as a teaching project.
I wanted to teach actual programming, tried several tools,
and none of them was easy enough.
So I decided to create a small library,
and why not making assumptions about previous knowledge
can be a huge advantage.
They just want to put things on the screen as fast as possible
and as simple as possible.
For the first time, we get an excuse to watch someone playing games.
So let's see a game that was built with Raylib Cat and Onion.
And by the way, this bit is best for video, so if you don't have video, I'm
sorry, maybe skip to the first eight minutes and you won't miss that much.
At some point.
You, you travel with a flying Onion that it's kind of Yeah, yeah.
The, the, the game itself.
It's, it's, uh.
Interesting.
Wait, so how does the Onion come into play?
Like the Flying Onion?
The Onion
actually
it, it's one of the friends of the, of the cat.
Oh, okay.
Of course.
Yeah.
That's brilliant.
You can, you can talk with the inanimated, uh, objects that you, can you find in
the game, like Yeah, like these three.
And you, you keep talking with different objects that you find in
the game, like they were all the characters and Yeah, it's, it's
an interesting, interesting story.
So would they use Raylib for like the dialogue there?
Yeah, well actually they use, uh, Raylib for, for everything, for the,
to manage the inputs, the drawing, uh, draw the sprites, uh, draw the
text, draw the trial, the dialogues.
Um, yeah, raylib, it's a, it's a, it's a C library that allows
you to put graphics on a screen.
But also, uh, manage the, the inputs and also manage the audio in the game.
They use raylib as the base technology to do the drawing.
And then over it, they implemented all the game logic for, for
everything that need to be done.
Like, uh, for example, for the dialogues, they probably implemented, um, their own
dialogue system where you manage the text.
At the end, you end up drawing that tab on the screen inside
the box with some colors.
And that's, uh, where Raylib comes into play to simplify that process.
So if they're drawing on the screen you, like in Raylib, you just give
like the points that you want it...
yeah.
In Raylib
you, you got, for example, a, a function that is called draw text,
and you just provide the text that wants to be drawn, the position on the
screen, the, the color of the text.
You have another function that is draw rectangle.
When you load, for example, for the cut, you load the text tool and then
you have a load text tool, and then you have a function that it's draw
text tool, and you can define, uh, where in which position it's drawn.
How it's drawn.
Okay.
Super, super cool.
I wanted to show just one funny thing this game, if anyone's
watching, rather than listening.
Okay.
Actually, you got some achievements that you have to, as I remember,
you have to find some pictures.
Oh, oh, it's, it's flying on the onion.
That was a bit where like it just pops up with like a picture of a real cat.
I don't know I I can find it again.
Yeah, if it was in this video.
Yeah.
It's flying in the onion.
Oh wait, it is flying.
Oh wait, that's the onion.
Hey, here, here, here.
That, that was the point.
Yeah.
Okay.
Wow.
Oh wow.
It's like a rocket ship Onion.
Yeah.
The, the onion, it's like a rocket ship.
Yeah.
Okay.
So, and Ray Lib is powering this rocket ship onion.
That's what you do.
Kind enough.
Actually, it helps to draw the sprite for the onion, and it also
helps drawing the, the sprite for the, the fire in the rocket.
Uh, now look, now it's, it's, uh, drawing the sprite, the text, yeah.
Raylib, uh, helps the developer, uh, to draw everything that needs to
be drawn in a, in a very easy way.
Okay, cool.
What, what is the hardest bit about game development, typically?
if you're trying to do 3D games, uh, it's, it's a bit harder because usually you
need to deal with some math for the, uh, position in the space of the elements.
And some, you have to do math to calculate distance and, uh, to calculate
for example, if it's a, a shooting game and you shoot, you have to
cast a ray, a mathematical ray that it's aligned in a direction and you
have to calculate all the math how that ray collisions with a plane.
To calculate well, where the, the bullet hits and these kind of things.
Usually in a 3D game, complexity, it's, it's a bit higher.
But in this, uh, in this small game that it's actually a very small game
and, and it's quite, and it's really nice and ..., uh, uh, the level of
complexity is not that high actually.
Uh mm-hmm.
One person in just a couple of months can make and release this, this game.
Starting from zero, well, just picking up probably to draw graphics on the
screen and just one person can create all the logic for the game, all the
mini games, all the, all the features required, all the graphics that,
that's a game made by one person, one person in just a few months.
And it has been released, uh, on Steam, actually, I play it
on my steam deck and it works.
Uh, it was super, super good.
Um, it's a short game.
It's just about a couple of hours, but it, it's a very fun
game and, and, and very nice.
And it has a, a nice story and yeah, I really enjoy it.
I, I, yeah, we recommend it.
That's amazing.
Okay, so cat and onion, everyone go play Cat and Onion.
This episode is brought to you by Work os.
If you're building a dev tool, at some point your customers are gonna start
asking you for enterprise features.
Work OS offers you single sign-on skim provisioning and audit logs out the box.
Work OS is trusted by perplexity and Vercel, as well as Workbrew
a Homebrew management startup that I recently interviewed.
I just told Mike that work OS is the sponsor and this is what mike said,
yeah, so Work os isn't paying me any money for this.
I, I pay work os money for this, but Work os is like one of the best
developer tools I've like ever used.
It's, it's the documentation and the experience with building
with 'em is so, so good.
Like, I initially was almost like, okay.
This seems expensive.
But then I built an integration with them in about 20 minutes that I had spent
two days banging my head off the wall, trying to build it directly with Okta.
And then with Work West, I then have like many, many SSO providers
like supported instead of just one.
So yeah, like for me, work OS is one of the nicest developer
experiences I've encountered in the last like five years probably.
Um, and it's not surprising 'cause a bunch of the developer team are ex GitHub
and therefore very good at their job.
Go to work os.com to learn more.
So you started Raylib, like, um, it was like 12 years ago now, right?
Like something like that?
11 years and a half,
11 years ago.
11 years and a half.
Yeah.
But you were a lecturer at the time, right?
Or maybe you still are?
Yeah, at the, at the moment I'm a lecturer.
I, I work at that university at, at this moment.
Raylib initially was for the students, right?
Yeah.
Really initially was created for education.
Actually I had to teach, uh, video games programming to art students.
With no, no knowledge on programming.
Uh, and I decided to create it as a simple tool.
I wanted to teach, uh, actual programming.
I tried several tools and none of them was, uh, easy enough.
So I decided to create a, a small library that was very, very intuitive in the
naming of functions and everything, like draw, rectangle, draw, circle, uh,
escape, press, draw texture, play sound.
This kind of, uh, very natural language naming for everything.
That, reading the names you can, you can guess what that
instruction is actually doing.
Mm-hmm.
And yeah, and it worked.
It worked super good.
Students were very engaged with, with the library.
Actually some students created amazing things in just, uh, one,
one course that the course was like
uh, 40 or 50 class hours.
So I decided to keep improving it and adding more food, more functions, um,
improving the, the existant ones and yeah, and the, in a kind of organic
way, the project, uh, started, uh, growing and growing, improving,
improving, and yeah, and actually at some point I was working almost full
time in, in that, in that project.
Yeah.
So it wasn't intent, you weren't setting out to take on, you know,
unity and all these huge players.
You just were like, I wanna build something simple for.
Students,
uh, actually it, it was part of the syllabus I started with Raylib that
I think it was super good to, to understand the basics, understand
programming, but then the students moved to other, uh, higher level,
uh, engines or tools like Unity.
But with that basic concepts.
When I feel that when they jump into a, a big engine, like a Unity or Unreal,
they have very solid, uh, understanding of how things work in the inside.
Yeah.
In some ways they can be more, more productive and, uh, understand better
how the engine manages things internally.
So they say, oh, okay,
if we do that in that way, if we configure the text tool that has to be
drawn on the screen in this specific way, it will be more efficient, it will
be faster, it will be more performant.
Yeah.
So.
They understand, uh, how things work in the, in the inside because they have
seen a very bare bones library before.
Seeing how those, those things work in the inside
for like Cat and Onion for instance.
Why do they prefer to use Raylib versus Unity when they use Raylib?
Because I think it's very enjoyable
I mean, that's awesome.
Raylib is intended to, to be simple and, and to make a programming and
game development, uh, enjoyable in a way that usually big engines
maybe can do that at the beginning,
but when you go into a big project, uh, you have to track lot of things, you need
a lot of understanding of how things work.
Uh, sometimes the engines do not help the developer in a way that, the developer
thinks like the developer maybe wants to do the things in a way, but as you
are using an engine, you have to do the things in the way the engine is,
is expecting those things to be done.
And you are, you have kind of lots of constraints when
you are using, uh, an engine.
Mm. And sometimes that can be very frustrating for, for developers.
Uh, Raylib in the other side.
It's very small, uh, very low level.
So it just give you the, the bare bones of what you need
to draw things on the screen.
The developer has full control over the game structure, how we
structure things, how to organize the code, how to create things.
And I think it's very enjoyable for some developers, uh, working this way
'cause they have that feeling that they have full control over everything.
And I think that's very appealling for, for many developers.
I don't know much about Unity, but a lot when things have like a lot
of abstractions, it's like when it works, it's great, but then when it
doesn't work, you're just like, I have no idea why this doesn't work.
That's exactly the point.
Uh, the big engines give you a super high level of abstraction.
Um, and also tries to cover a wide range of possible games.
If you're using Unity, uh, maybe you are, you are doing a card game,
racing game, uh, first person shooter.
I mean, they try to cover all the range of possible games and mm-hmm.
Sometimes it adds a, well, a level of abstraction that makes things
more complicated than they could be.
On the other side, if you're using a low level library that
barely gives you anything, gives you somewhat full freedom because
yeah,
you have to build everything over it.
Also, there is another complexity 'cause you have to build over it,
but for many small games you don't have to build that much over it.
Like, like this game Cat and Onion at the end of the day, you are just,
uh, checking inputs, drawing sprite on the screen, playing some sounds.
Managing the change from one screen to another screen or from one state
in the game to another state, that it's something that it's, uh, really
manageable for, for a developer.
So I guess you're focused on like kind of indie game developers right now?
Uh, yeah.
Well, I, I actually when I created Raylib there was not a specific focus.
Maybe the, the focus was, uh, was education.
Yeah.
That, that was the focus at the time.
Um.
But what I've seen in the following years has been, uh, really being used
not only in education, uh, but also for many indie developers, uh, with
more experience or less experience, but also being used for, uh, small
tools development, uh, simulation, uh, kind of investigation to do some
kind of a quick visualization of data.
So it's shown a, a very wide range of, of applications.
It, it's a really versatile in some ways 'cause it's, it does not have
to be focused only on video games.
Uh, Raylib is giving you a tool to draw things on a screen with input.
If you give the input and yeah, mostly that's it.
So you can use it for visualization also for, uh, small tools development
like, uh, audio trackers, uh, emulators.
I saw really being used in, in, in many different ways and, and actually
myself, I've been using Raylib for the last few years for tools development.
So maybe that's a good transition.
Actually the core of Raylib is like an open source project
that's completely free.
That's it.
Um.
And then you sell, you have some tools that you've built like that kind of
help with using Raylib, um, or like kind of related, right, that you sell?
Well, actually the tools are used as a library, as a framework,
Raylib, that is the core technology.
But within the years I've been creating like other technologies
over it, like a set of technologies, libraries, and then with all those
technologies that, those technologies are always free and open source.
I've been building tools and the tools are built using, are built
with Raylib, but are, they have a lot of tools with different intention.
There are tools to do things that are usually required in
the video games development.
For example, one of the tools is for a package, packaging sprites, when you
have for, uh, for example for the cat, all the animations are a set of sprites.
For example, you have like, let's say 20 images.
You want to pack all those images into a single image with all the,
with all the small images packages into a single one in a specific way
and with a specific configuration.
For example, one of the tools I created and I sell is a tool to
package images that lets you not only package the images using a
packaging algorithm, but also a tweak.
Some configurations, like the separation between the images, the
padding, the margin, the spacing.
Another tool, for example, it's an audio generator.
In games, you need to generate sounds for the jump, for the
pickup coins, for the power up.
And this kind of of sounds.
Explosions.
I created a tool that, uh, generates sounds just using parameters, uh,
in a procedural way, modifying the, the, the audio, the sign
wave and these kind of parameters.
So.
In this way, I think, I've think created a, a, a set of tools that, uh, can
help other developers, uh, make games, but that's independent of the engine.
The other developers are using.
Those tools work in the same way.
If they are using Raylib, they are using Unity, Godot, Unreal
or any, any other engine.
The, the tools are standalone, independent, and, and self-contained.
Your brand and the kind of like awareness from raylib engine, you
know, drives traffic essentially to these tools, but they're not,
like, you don't need those tools.
They're just, they can help you.
Uh,
yeah, that's, that's it.
That's exactly it.
I, uh, at some point I saw that Raylib was getting very, very popular and I, I've
always been interested in, in the side of
eh, more that in the side that games development that, that I also love.
I was interested in the tools development, uh, side, and I said, okay, I got that
technology that I think it's, it's quite solid and it gives me a, I know it very
good and it's an in-house technology, so yeah, that's, that's amazing actually.
Why not?
Uh, use it to build a bigger project over it, uh, a bigger
commercial project over it.
Uh, developing small tools while selling them.
And, and then I also thought, okay, I'm, I'm a solo developer at
the moment, so I'm very limited.
Let's try building different small tools focused on the games industry, trying
to put them on the market as fast as possible and see which ones are the
ones that, uh, sell the most and work,
work better.
So the ones that work better, I keep improving them and, and, and
growing them and, and updating them and yeah, that, that's it.
Yeah.
That's super cool.
So you just put them out there.
How do you like launch these?
Do you like send out like.
You, I know you've got a big discord community.
Well act actually, I have to say that I'm not good and I'm not good at,
yeah, I'm, I'm not, I'm not that good.
But the way I, I promote it's, uh, within the rail communities as I also maintain
the rail core project and it keeps growing and it has some big communities around it.
It has a big discord community with other.
Uh, 13,000 people.
A big Reddit community has a YouTube channel.
Well, I have different social networks.
I, every time I release a new tool or an update for the tools, I promote them
within the, the, the Raylib community and all, its, its social networks.
So in some way it keeps well in the tools help growing more the core Raylib project.
But also as the core Raylib project keeps growing, it helps, uh,
increasing the visibility of the tools.
Mm. And I know the Discord community and the community is something that,
when we spoke last time, I think you're quite, you know, proud of.
I think you've put a lot of effort into it.
Yeah.
Um, could you talk a bit about like how you have managed
to cultivate this community?
Yeah, actually in the last, uh, few years, I've kept spending, uh, more and more time
on the, on the social networks actually.
Um, uh, even too much time, probably now, I, now I set in my mobile
phone some, some limits because.
Yeah, yeah, yeah.
It, it's still because I, I was spending like four or five hours
per day, something like that.
And yeah.
So your family, like, why are you on, why are you just always on discord talking...
yeah.
Yeah.
That's it.
Yeah.
Because I, I, especially on Discord, I try to always welcome new members joining
and I try to be always around 'cause that, Raylib discord, uh, it, it's.
A very important part, eh, keeping the, maintaining the community
and, and being with the community and helping the community.
And I spent a lot of time on this course trying to welcome people,
help people answer questions, even creating engagement.
Eh, like everyone, Hey, look at that.
What's happened?
Hey, and actually got a note that, that, eh, if you are joining the
Discord, be aware that here, there are, uh, everyone talks now and then
Oh yeah.
Be warned about that.
You will get pinged.
Some people like, like it, some people don't like it that much.
But yeah.
Yeah.
I try to create all the time this kind of, of engagement
with the, with the community.
'cause I, I, I think it's very important.
And actually there are many people that get very surprised.
When they, they, they, they see me on the, on the discord welcoming
them or helping them, like, wow, you are the creator and you are here,
uh, helping me or, or welcoming me.
That's, that's incredible.
That's, I haven't seen that before anywhere.
So yeah, I think that you create a kind of connection with the community.
It's important and makes the, the project.
Uh, grow in, in many ways.
Yeah.
One, one thing that really impresses me about you is that, I
mean, lots of things, but you are a solo, you know, founder here.
You've had maybe periods where you were spending a lot, most of your time on
it, but like primarily you've been doing lots of other things at the same time.
Yeah.
And you do the whole thing yourself.
You write all the code, you do the community, you do the
marketing, you create the tools.
You, you manage the core engine.
You know, how, how do you, how do you manage to do all that?
Um.
Well, it's, it's easy.
Jack.
I don't sleep at night so
you don't sleep at night.
I'm not kidding.
I'm busy.
Are you, are you just created by Raylib?
You're actually, you're not a human being.
You're like, you're, you're a sprite created by Raylib.
Yeah, I could be, it would be easier.
Complex sprite!
No, I, yeah, it, it, it, it's a, it's a, it's a, it's a lot of work, Jack.
It's a lot of work.
And, and actually.
For the last year or so, ha ha.
Everything has grown to a point that it became really difficult to, to
manage, eh, from the RileyRaylib side.
I had, I've been very fortunate for the last two years or so that
I got some great contributors that help with maintenance and help with
improvements, uh, and really help a lot, uh, improving the, the core library.
Uh, really.
Also, as I said, um, I feel lucky or.
Or, or, or not lucky, but uh, yeah.
So we're lucky that the community Raylib community, it's a great, great community.
I hardly ever had any, any problem.
Uh, there is only one moderator, uh, uh, he helps everyone all the time.
He is, it's super great there, other people helping in there.
So it's a very great community that does not give problem.
Uh, but then for example, for the side of the tools.
At the moment, I got, uh, 11 tools published.
I got another, uh, four tools that I would like to publish at, at, at some moment.
But yeah, I, I, I feel that this is going out of hand because, uh, the
amount of work, it's, it's super big.
And as you said, I, I'm not doing that, uh, full time because I am out of
financing myself in on, in other ways.
To be able to keep doing it.
So, uh, at the moment I am lecturing at, at university and I'm, I
am, I'm actually teaching duty.
I only, but that's it.
And
that's terrible.
I'm gonna teach you it, but you should use instead.
I also do, uh, some consulting work.
I collaborate with some, uh, with some companies here, here in Barcelona
for, I usually do consulting to, in the, uh, startup companies.
Mm-hmm.
It's difficult to manage everything.
It's, it's very difficult to manage, to manage everything.
Uh.
Do you, do you
have any tips?
Do you have any tips for anyone else that's like, uh,
I, I'm very organized.
I am, I'm very organized.
For example, I got my.
Uh, you see, I got always my, my notebook with, with everything.
I, I love working on paper and I try to keep note on everything and, and I, I
try to keep a very good organization.
That's, that's one point.
Another point is that I also spent a lot of time into automating
everything that can be automated.
Mm-hmm.
So, uh, for example, for Raylib, every time that you do a commit or
you add some change in the library, there is an automated system that
builds the libraries, the library for multiple platforms in multiple
configurations and verifies that everything at least, uh, builds okay?
And there are no errors.
When, for the tools, for example, I got a template that I use for that.
I keep updating, but I use for all the tools.
And when I have to create a new tool, I use that template.
And it already sets up a full structure for me to start working as soon as
possible on the, on the project.
I also got tools to help me build other tools.
Mm-hmm.
Like imagine like a Figma, something like that.
That helped me place all the UI elements and everything and helps me, uh, actually
those tools are also built with Raylib.
Wow.
Yeah.
For example, I've got another tool that helped me build all the imagery
for, for the, for the tools publishing like banner banners, icons, uh, images,
screenshots, uh, set up some templates.
Also, I got a list of procedures to follow.
Every time that I have to publish an update or, or anything, I
got a checklist that I follow.
Like, okay, update the description.
Update the, read me, update the license, update the, the, that publish in that
network publish in that network, uh, promote in Reddit, promote there.
I got a, a checklist that I try to follow on everything that that should be done.
So a actually, it, it could be more.
Uh, point of methodology, but, and, and when I and I, I sleep at night, obviously.
One thing I wanted to ask is like, I dunno if you know, but I
think Postgres was like originally
the, the database?
Uh,
yeah, but it, I think it was like originally like a university
project or something, or like it came out of a university.
It does seem like that's actually like a great way to develop something
that's like very easy to use and stuff.
If you're focusing on students when you're not assuming any
knowledge, I guess you are like trying to explain the whole thing.
That's something that I've seen or I, I saw in the past with many
libraries that many other game dev libraries or tools assume, uh,
previous knowledge from the users.
Mm-hmm.
They assume.
Oh, okay.
Yeah, the user will be a programmer.
And yeah, we will know everything about programming and will build, uh, will
know the naming, the specific naming for, uh, graphics device, uh, input system,
different names that sometimes, uh, people that start, uh, from, from scratch, uh, do
not know that all, all that information.
They just want to put things on the screen as fast as possible
and as simple as possible.
And, assuming that you, when you create, when you develop a new a new product,
starting in the base, assuming that the user could not have previous knowledge,
um, in my opinion it's a good solution.
Maybe it would be more difficult for you, uh, to develop the product.
Hmm.
But at the same time, it would be more accessible to more people.
I mean, the simplicity is key.
Is key.
Yeah.
And I, I feel like a lot of people, when they learn, they like to stick with
the first thing they learn in a way.
Right?
Like if you really understand Raylib, when you go to build a project, yeah,
later on, When you have more knowledge, you may still go back
to Raylib because that was the one that you learned really well.
And
yeah, and, and not, not only is the one 'cause you can get a lot of more
knowledge, but at the end, if you want to do something for, for fun or for profit,
going for the simple, simpler option, it's usually the most appealing one.
I mean,
when I mean yeah, you, you, you, you can go for complex alternatives and
everything, but going for a complex alternative, just, just from the starting
point is like, wow, okay, let's, let's try, let's try and let's see what happens.
I what?
I need to read all the documentation first, and I need
to go into the, the forums to ask.
Okay.
Like it, it's just that feeling, that anxiety that Okay, that will be hard.
Yeah.
If you go to something that, you know, it's simple.
Okay.
Yeah.
Maybe at some point it would be hard, but at the beginning it would be simple.
Yeah.
So I think it helps to start, uh, to, to that first step.
I think it's, it's super important.
If you have one piece of advice for someone else who's like working on
an open source project, thinking of building a tool, what would it be?
Well, uh, um, I, I would recommend starting simple.
Starting simple.
And.
Keep growing it.
But yeah, another point important, eh, enjoy, enjoy working on it.
When you start, uh, an open source project or when you start working
actually in any project, you have to really enjoy what you are doing.
Trying to not, not looking to, um, getting to milestones or
shipping it or making money.
I mean, I Okay it, it's okay to have those objectives in mind in, in a
future, but I would recommend starting with a project 'cause you truly enjoy
mm-hmm that, that project because, uh, it could be easier to, to keep
growing it, keep working on it, facing the issues that would come in the way.
Uh, and then maybe at, at some, at some point, uh, uh, you ship it, or,
or not, or, uh, you, well, it's, if it's open source, uh, you just release
and see what happens, but, uh, it, it, it should be enjoyable and, and
I think that that's super important.
Yeah, maybe we should close out with your, what's the, uh, slogan on Raylib?
Again, a simple,
a simple and easy to use library to enjoy video games programming.
That's amazing.
Well, thank you so much for joining.
Thanks to your time.
It was a pleasure.
Thank you very much.
Thanks everyone for listening.