It’s hard to believe that since the site was working they’ve been two game jams! Here’s a quick recap…
C++
Since abandoning Game Maker and becoming a Free-as-in-Freedom fanatic, I’ve tended to shun platforms like Unity3D and XNA in favour of C++, SDL and OpenGL. That said I was tempted back into Game Maker during last year’s GGJ, mostly because I didn’t have any kind of framework ready in time for the event.
Later, in November 2011, I attended another game jam in Montpellier, this time with a good code-base to fall back on. Even so rapid-development in C++ was like wading through treacle, and it was all the more painful for it being my technology that was slowing us down.
As a result my mind is now set: no more C++ for game jams, not ever again! This is all very well and good, but what’s the alternative?
Java
Java was great for the Art Game Weekend 2 (at least Java for Android was): the integrated documentation and real-time code correction and completion in IDEs like Eclipse and Netbeans makes it a great pleasure to use. Then there’s the garbage collector and lack of direct memory access: you can be half asleep and still write code that runs.
When it comes to games however, Java has its disadvantages. I’m not talking about speed either: for small jam-projects its hardly worth considering. What really puts my hackles up though is how clunky just opening a window and dealing with input is. SDL and SFML have infinitely better direct input APIs. A noteworthy problem I ran into was the key auto-repeat on Linux: exactly the kind of thing you don’t want for a game!
I developed a basic Java game framework in time for the GGJ 2012, but in the end it wasn’t used directly. A few large chunks of code were borrowed from it though.
Java + LWJGL (Light-weight Java Game Library)
I haven’t had the opportunity to experiment too much with LWJGL on its own (see below), but apparently it’s what Notch used for Minecraft, which is one hell of a feather in its cap. LWJGL is an input/output library which basically fixes all the problems that plague Java-proper, but at a cost. OpenGL and OpenAL are used for efficient graphics and sound, but this means linking native libraries, and so a loss of platform independence.
When you’ve figured out how to export a working jar though, with all required libraries in tow, it really does seem like the best of both worlds. I might give pure LWJGL a try during my next game jam.
Java + LWJGL + Slick
As it happens Manu and I used Slick for developing (DJ) Quetzalcoatl during this year’s GGJ:
Slick is a framework,reminiscent of GLUT, built on top of LWJGL. Neither of us had any experience using it, but we had no trouble figuring out the basics (getting the DJ Hero turn-table to work in another matter). I’m not a fan of frameworks and their “Hollywood
principal” generally speaking (I’m a bit of a control freak) but it’s nice to defer responsibility to somebody else when involved in a 48-hour crunch.
Slick is not without its faults however. I ended up rewriting the animation class because the API is lacking in functionality and, in some places, coherence: images can be rotated, for instance, but animations (which implement the same interface) can’t. Slick isn’t too widely-used either, so there aren’t a great deal of resources available. Nothing is faster for getting a game-window open and running though.
—————————————
Edit: Java + LWJGL + Slick-Util
Since writing this I’ve given LWJGL a try on its own: it’s certainly clean, efficient and uncluttered, but you may miss a few things like easy resource-loading (image and sound files) and text-rendering. I’m used to OpenGL inside an SDL or SFML window, and these libraries provide an API for doing such things.
If the prospect of rendering strings to a texture makes you blanch, but you don’t want to go the full-monty and use Slick, you can import a trimmed-down set of utilities called Slick-Util.
—————————————
HTML5 + Javascript
I was really impressed by some of the HTML5 games at the GGJ Paris, so I decided to give it a spin. The advantages are obvious: the game can be run in your browser (Internet
Explorer doesn’t count as a browser) no matter what system you’re on, with no download necessary!
Funnily enough an “HTML5 game” is actually about 99% Javascript. I’d never used Javascript before, and since I’m a C++/Java programmer I found getting my head around dynamic types and closures extremely difficult. After a few days struggling though it just sort of started to make sense, and I have to say there’s something wonderfully Zen about programming in Javascript. When it works…
Here’s my first attempt (still a prototype) at an HTML5 game using canvas2D (thanks to this tutorial). I’m hoping to give WebGL a try soon too, maybe using OSG.JS (written by one of the programmers behind Miop). So much to do, if I only had time!
I’m still having problems with the site, sorry guys :’( It’s about to be moved, so hopefully things will be up and running sooner rather than later…