Free-as-in-Freedom Game Jamming

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…

3 thoughts on “Free-as-in-Freedom Game Jamming

  1. Dread Knight

    I’m having a hard time as well dealing with Javascript xD
    For anyone else wanting to get into javascript, TheNewBoston on youtube has some nice video tutorials that can get you up and running with a lot of coding languages, including js.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>