One Game A Week
September 7, 2015
I participated recently in the 33rd edition of Ludum Dare, an online simultaneous game compo and game jam. This was the second time I entered, first time being for the 25th edition, and as chance would have it the themes were very similar. Nr. 25 was You are the Villain and Nr. 33 was You are the Monster. This meant that for both editions the effective overall theme was "role-reversal". You play as an enemy and the normal player characters in the games are AI controlled.
My entry followed that trend as I couldn't come up with anything better in the morning. In Pinky's Nightmare you play as Pinky the ghost of Pac-man fame. Pinky is trapped in the pac maze and he's locked out of the ghost base and has to find keys to open it up while being chased by undead Pac-abominations. You can play it online in any recent browser. Just be warned that these Jam games tend to be less accessible than what you may be used to.
So, while not the most original of ideas, one of the main goals of LD is to create a game that has a beginning, middle and end in a very short amount of time (3 days in this case) and, while they recommend not learning new things, I took both times as an opportunity to at least use some kind of technology I hadn't used before. This time that was WebGL.
After learning and reading about "normal" OpenGL 4 APIs, using WebGL is kind of refreshing. Based off the OpenGL ES 2 spec, there's really not that much there. While this precludes using more advanced techniques it's also interesting as you don't have to worry about which "optimal" combination of APIs to use as there really is only one way to do many things. Like Metal and Vulkan, WebGL removes a lot of esoteric features, but unlike those other APIs, you don't get anything in return :) And of course, since you run in a browser context, you are more removed from the hardware than in any native GL implementation. But it sure is easy to to work with. Once you have some core code in place it is great for quick prototypes.
The whole process reminded me again of the importance of shipping, so for the next several weeks I'm going to build one small game or app each week, each time revolving around some (technical) theme of my choosing. I'll decide upon the exact theme at the beginning of each week, but they will very likely include one or more of the following, in no particular order:
- Deferred Rendering
- Global Illumination
- 3D Modelling
- Procedural Generation
- Outdoor Environments / Terrain
- Audio Synthesis
- First-person Viewpoint
- Arcade Racing
Etcetera. Basically, a framework or technology combined with a game theme each time. Native and web. I might repeat one or more themes if I feel like it, but I will have a functional thing ready at the end of each week. Some might suck and some might be interesting enough to pursue in more detail. It's all about gaining experience and having fun.
For this first week I'm starting off with WebGL and Arcade Racing. Once I've got some info or pages up I'll post those here and on my Twitter.
Reply @zenmumbler to discuss this article.