In Lövely Interviews I interview developers of LÖVE and LÖVE games. And this time we interview slime, who is the biggest contributor of LÖVE, with over 1300 commits.
Tell us a bit about yourself. Who are you and what do you do?
Hello! I’m Alex. I’m a software developer currently working in the games industry in Nova Scotia, Canada. I’ve been contributing to LÖVE’s development in my free time since around the end of 2012. I’ve also made a few games using LÖVE, and I’m a regular contributor to the SDL library, which is used extensively by LÖVE.
How did you learn about LÖVE?
I first heard about LÖVE back in 2010. I believe there was a post on the programming subreddit about LÖVE 0.6.2, which caught my interest because at the time Lua was the only programming language I knew. I had been making Lua addons / scripts for Vendetta Online, an indie space MMORPG.
I actually knew the LÖVE developer bmelts from the Vendetta Online community before I knew about LÖVE, but I didn’t know he was one of LÖVE’s developers until after I joined the LÖVE IRC channel!
I hadn’t done any sort of game development or real programming outside of my Vendetta addons before starting with LÖVE. The first thing I made with it was a Pong clone which wasn’t very visually impressive, but I had a lot of fun learning about the basics of games when making it.
With over 1300 commits you've become the biggest contributor to the LÖVE framework. Why did you start contributing and what kept you going?
I wanted to learn C++ and I had an interest in OpenGL, and I was also very active in the LÖVE IRC channel at the time. I had some ideas about feature and performance improvements that I wanted to see in LÖVE, so I learned bits and pieces of the LÖVE codebase and submitted a few patches and pull requests… and now here we are.
I ended up really enjoying the combination of several things that contributing to LÖVE’s codebase provides: learning and writing code that interacts with system-level APIs such as OpenGL and SDL (and OS APIs since I also contribute to SDL’s development now), designing functionality that fits in with LÖVE’s preexisting philosophy, working with graphics APIs like OpenGL, and working on something which gets feedback and use from a large community.
That last point is probably the most important to me. I definitely would not have put so much time into LÖVE if it weren’t for the community, so, thank you!
When working on LÖVE, was there a bug that you had a special grudge on?
I think bugs inside graphics drivers have been the most frustrating for me, since I have practically no control over when (or if) they’re fixed, I can’t rely on them being fixed on a user’s machine even if a new driver comes out, they’re usually annoying to debug, and they generally require ugly workarounds in LÖVE’s code... if a workaround is possible at all.
Here’s one example of a graphics driver bug which I had to figure out a workaround for.
The issue of stutters when in windowed mode on some systems (especially when using Windows) is also annoying, since I don’t know of a way to solve or work around it in LÖVE’s or SDL’s code. You’re probably seeing a pattern in my frustrations by now. :)
Is there a LÖVE feature that you are extra proud of?
The OpenGL ES 2 graphics backend code I wrote unofficially for 0.9 and officially for 0.10 ended up enabling a lot of other people to port LÖVE to other platforms, which has been really cool to see.
Some examples of LÖVE ports that rely on it are LÖVELINESS (a now-defunct NaCl / Chrome port of 0.8.0 created by a Google employee), fysx’ unofficial Android port of 0.9 which is now part of 0.10, my iOS port of 0.9 which is also now part of 0.10, T-Bone’s port to Metro / WinRT / Windows Phone, and Tanner’s web port of 0.10 via Emscripten.
You seem like a very skilled programmer. Do you have any advice for people who want to become a programmer, or programmers who want to improve?
There are many different ways to learn and improve at programming. I think it’s important to figure out the most enjoyable and best way for you (the reader) to do that, which may be different from someone else’s preferred way. Some people thrive by seeking out information and experimenting completely on their own. Others learn best within the type of environment that schools and universities provide. Or anything in between those two extremes.
A lot of people, myself included, have a hard time committing to and following through on a completely self-developed project - whether it be for learning or otherwise. As I mentioned earlier I started contributing to LÖVE partly to learn, and I think finding an open source project, preferably one you already know about as a user, and figuring out ways you can contribute to that is a very good way to improve your programming skills.
You’ll have an existing codebase written by others you can look to, there will often be plenty of opportunities to tackle small problems in order to get your feet wet, and most importantly an active open source project will have other people who can help you and whose own goals are similar to yours.
All that said, following a self-developed project through to completion is a skill of its own. There is a lot to be learned after the first 90% of a project’s development… when you’ll be doing the final 90%. ;)
Do you expect to see LÖVE 1.0.0 happen in your lifetime?
Personally the “1.0” version tag doesn’t actually mean a whole lot to me, it’s all pretty arbitrary. 0.10.0 could have been labelled 1.0, or 2.0, or 10.0 if we had decided – and maybe a future major release will skip 1.0 entirely and/or change versioning schemes, who knows!
I consider LÖVE to have been ready for use in complex 2D commercial games since around 0.8.0 or so, and 0.10 has been very stable so far. All of the minor (0.X.0) version releases in the past few years have had breaking changes but not complete overhauls of LÖVE at a fundamental level, and I don’t see that changing in the future.
Do you have any plans or hopes for the future of LÖVE?
I have outlined some of my ideas on the forums and on the Bitbucket issue tracker, plus I have some more far-fetched and less fleshed out ideas knocking around in my head – I often think about how various APIs (especially in love.graphics) might be changed to provide better performance or to make them more powerful or more intuitive to use. Only some of those thoughts ever come to fruition or end up being worthwhile ideas, though.
Beyond that, It would be super awesome to see more people contribute to LÖVE’s development. Since I currently have a full-time job in the games industry, I have a lot less free time than I used to that I can spend programming (and I usually split that time between LÖVE and SDL too). I also consider my own thoughts on LÖVE’s features and code pretty limited in terms of perspective, so having more people from different backgrounds working on LÖVE could only improve it in my opinion.
I think LÖVE has already been extremely successful at carving out a niche for itself that isn’t filled to the same degree by anything else, but it still has room to grow and improve and I hope there are more people out there who want to help make that happen.
Anything you would like to tell all lovers (LÖVE users)?
Don’t forget to like, subscribe, and comment… wait a minute.
Seriously though, thank you for using LÖVE and being a part of this community! I hope everyone enjoys using it as much as I enjoy working on it.
The forums are a great place to ask questions and post about what you’re working on. I and many other knowledgeable folks are active in the IRC channel at #love on irc.oftc.net as well - don’t be afraid to hang out there and chat about LÖVE things. I bounce ideas for new features off of other people there all the time!