Arcade Adventures

January 2019 · 3 minute read

The Arcade Library1 is a fairly new framework for writing games in Python, and I’m currently using it as a tool to learn said language. AL boasts to be very beginner friendly, which I have found to be true. The main developer of the project is the Paul Vincent Craveh, a teacher whom out of frustration in PyGame decided to create his own gaming framework based on Pyglet2.

The method/function names are very verbose which I appreciate as it reduces the amount of time I have to look up what things actually do in the official docs. Which by the way is extensive and provides plenty of short examples and showcases a few playable games. Both have been a very useful resources when I’ve tried to figure out how I can create specific elements in a game and why it should be done in a certain way.

Me and a close friend is currently working on the next big thing: the simulator Aqua Fish3. Its nothing serious really, as you might have guessed from the name, but I’m honestly considering putting it on out of sheer pride. The game spawns a number of fish of different species which interact with each other in various ways, resulting in a tiny ecosystem. Its honesty way more interesting than it sounds and contains some - from my point of view - very advanced physics. All written by my friend, who is way out of my league when it comes to that stuff.

I’ve mostly been working on GUI elements and other smaller features like input and background graphics. Windows can actually be dragged to other places on the screen and I’m very proud to have implemented that feature on my own. I have also spent a lot of time refactoring code which have been a great learning experience.

This is also the first time I have shared a repo with someone else, so I managed to pick up a thing or two about git(hub) as well. E.g. that adding --rebase to git pull is highly recommended and why branches is useful for implementing new features, rather than committing straight to the master.

One of the few downsides with AL is that the performance is somewhat lacking. There are tweaks to increase it in the official docs4, but it’s still not up to what e.g. Löve5 (the only other framework I’ve previously done any development in) is capable of. My best guess is that it has something to do with the speed of lua/luajit when compared to Python, rather than any poor programming by the creator of the Arcade Library.

With that said I highly recommend AL if you want to give game programming a shot and/or want to learn Python. I now feel like I have a good grasp of the pythononic basics, OOP and game programming in general. The development of the Arcade Library is without a doubt active and I’m really curious what changes the, soon to be released, version 2 will bring.