Skip to content

Instantly share code, notes, and snippets.

@raysan5
Last active December 4, 2023 12:53
Show Gist options
  • Save raysan5/04a2daf02aa2a6e79010331f77bf983f to your computer and use it in GitHub Desktop.
Save raysan5/04a2daf02aa2a6e79010331f77bf983f to your computer and use it in GitHub Desktop.
raylib: 6 years of fun

raylib_6years_of_fun

raylib: 6 years of fun

raylib has been in development for more than six years now, it has been an adventure! I decided to resume how it was my personal experience working in this free and open source project for such a long time. Just note that the following article explains raylib from a personal point of view, independently of the technical aspects and focusing on the personal adventure; for technical details on raylib evolution, just check raylib history and raylib changelog.

raylib inceptum

Summer 2012 was ending, I had been working hard on my brand new startup emegeme for about 9 months, developing videogames. I was trying to find my blue-ocean, so, I developed and published two games for Windows Phone platform using the amazing XNA framework.

Sales were terrible but I learned a lot about XNA library and games development during that time. I was running out of money when, by coincidence, while attending Gamelab videogames conference, I got an offer for a full-time gamedev professor position for a new course that was just starting by mid-September in Barcelona. I decided to take the job, I thought it would give me some time and some money to keep working on my games. I was wrong.

I early discovered I was enrolling in a new games-development course, never taught before and with zero class materials to start teaching. It was a really tough year preparing lots of subjects and teaching materials. The main subject I taught was videogames programming and most of my students were young people that had just finished high-school, most of them with art profiles and without any coding knowledge.

I had around 50 hours to teach some videogames coding basics, it was a challenge. I decided to start with C and just develop a text-based adventure game, I thought it was not possible to go further than that... but after some classes, one student showed me a simple graphics library: WinBGI, the API was simple and quite easy-to-use, so I decided to give it a try. It worked very well and students were really engaged with the subject, being able to put some graphics on the screen was really motivating for them! I realized that was the path to follow.

The course finished in June 2013 and I decided to create something similar to WinBGI but with a more XNA-stylished API and hardware accelerated. I dusted off some of my old OpenGL code and I started creating some functions for that weekend-project-library, I called it raylib. My objective was clear, make it simple and easy-to-use. I had already struggled in the past with other game libraries dependencies hell, so, I decided to focus my efforts on that part.

raylib origins

By November 2013, raylib 1.0 was released, just in time to start using it in my classes (after the C language introduction and the basic text-adventure game). raylib included only around 80 functions and some data structures but that was enough to become a complete success among students. They were very engaged with the library and since day one they started giving feedback about functions naming, required parameters, desired features... I had to improve it!

By that time I had already saved some money and I was able to rent a cowork office to work on my game projects after my classes. Soon my other projects were left in stand-by and raylib started taking all of my time, I was working on it 5-6 hours per day after my course, even more on the weekends!

In June 2014 I started showing raylib to the world; Barcelona has a very big indie games scene, with lots of meetups and events... and I usually attend most of them. From day one I started receiving very positive feedback about raylib! Additionally, some of my students went to those events and they used to talk very well about raylib among other students and professionals.

raylib growing

In September 2014 I rented a bigger office in another cowork and I re-activated my startup, emegeme. My students needed to do internship work in some company to get their degrees so I proposed to some of them working with me on new games and raylib new features. I used to teach 6 hours a day and then I went to the office for 5-6 more hours (where most of the time I was also teaching my interns), it was quite an intensive year!

We were working in three projects: porting one of my previous games (FLIPS) to PSVita Mobile, improving raylib library with new features and creating a small raylib game.

By July 2015 we had published FLIPS on PSVita Mobile, just in time for the closing of that market. As expected, sales were terrible (again) but I learnt a lot from the PlayStation Mobile SDK, knowledge that I could port to raylib. We also developed Koala Seasons, a raylib game for Android that was never published, and, finally, we improved raylib a lot!

By that time I had also been teaching Unity and I got some ideas from it to be ported to raylib, especially the immediate-mode-gui system, it was the main reference for raygui.

During the summer I reviewed all the raylib code written along the previous year and, in September 2015, a new raylib version was ready for the new course!

raylib expansion

From September 2015 to July 2016 I kept working on raylib on a daily basis, reviewing code, improving the library, adding features... By that time I was teaching games programming and a bunch of other gamedev subjects: Project Management, Scrum, GitHub, Data/assets Management, Game Design... That course I also had a couple of students helping with raylib development.

In July 2016 I officially closed emegeme, I was not making a cent.

By that time raylib was already quite popular and some education institutions and Universities in Barcelona were including raylib in their courses, some used raylib for gamedev and graphics teaching, others used it for projects development and others for tools development. It was that last field that started calling my attention.

In November 2016, I moved to another cowork office to keep working on raylib, this time only on my own. Again, an intensive course teaching and developing, working lots of hours per day... I needed some change in my life, to try something new... again!

By September 2017 I asked for a reduction in my working hours in the education center I was and, on January 2018, I moved to a new cowork to start a new project: raylib technologies.

raylib technologies

With raylib technologies I decided to explore a new field: tools development. I had already developed several tools using raylib along the previous years (tools I used in my classes to teach) and I thought it could be interesting. I had also created raygui some years ago and I wanted to work further on it.

As usual, looking for my blue-ocean, I decided to create handmade software; software carefully handcrafted, focusing on performance, low memory footprint, reliable, portable, multiplatform, sustainable... Obviously, my base technologies were raylib and raygui. Soon I realized that it would take me way more work than expected; tools require lots of elements: Great UX, nice UI, CLI, Drag & Drop, Modal Dialogs, Custom Data Formats, Build Pipelines, Custom Configurations, Custom Styles, Custom Icons...

In July 2018 I quit my job as a professor to focus on raylib technologies. I had some savings to work on it for some time and I decided to give it a shot.

2019 has been an amazing year! I have created and published up to 7 tools and improved a lot my base open-source technologies: raylib and raygui. I also created a processes pipeline to be able to create new tools in a very short amount of time, like described in this article.

raylib has become very popular and an amazing community has grown around it, I was also awarded by Google Open Source Peer Bonus in April and I was presenting raylib and the tools in Handmade Seattle Conference on November 2019. raylib was also accepted for the early-access of GitHub Sponsors program.

Right now, multiple Universities around the world are using raylib and people has created bindings for raylib to more than 40 different programming languages.

raylib future

To be written... ;)

@ianyepan
Copy link

Very inspiring story! I just stumbled upon raylib this week and can't get over how amazingly simple it is! Thanks for sharing your story with us @raysan5.

@raysan5
Copy link
Author

raysan5 commented Sep 23, 2020

@ianpan870102 thanks for reading! :)

@arydevy
Copy link

arydevy commented Oct 26, 2020

waw nice

@RodrigoDornelles
Copy link

I loved your story, I was even excited to continue working more with this lib. in brazil i am a raylib evangelizer, while the courses use bad didactics and poorly explained artifices, i try to show how simple it is to program the game with this lib!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment