Sunday, January 31, 2010

Thoughts on the Global Game Jam

So this weekend I participated in the Global Game Jam, and it was quite the experience. It started Friday evening, when they announced the theme, Deception, and the secondary themes, Maids, Raids, and Trades. We brainstormed, made game pitches, then broke into groups. I ended up in a group with some great people, and I think our game turned out pretty good. Our game’s page on the GGJ website is here. Rather than trying to write a cohesive essay that addresses all my thoughts, I thought I would just share my thoughts in any particular order.

We did the game in C# using the XNA framework. I have only used C# once before, on a project for a class my senior year of college, and I didn’t do any XNA programming at the time. I was a bit nervous, making a game in a day is difficult enough, without having to deal with an unfamiliar language/framework. But it came pretty easy, switching between computer languages typically isn’t too difficult, especially if they have similar syntax like C# and Java. XNA was also pretty easy to get into; there were lots of examples, and some pretty good documentation.

As I was working, I found myself wondering why I didn’t us XNA instead of Torque. It’s pretty easy, very powerful, and it’s free. But then I started running into things I had to do for myself in XNA that Torque always takes care of for me. Like animation and movement, I think I did a pretty good job making my own animated sprites, but I’m glad we didn’t have to do any sort of collision detection, because I hate collision detection. Working with XNA gave me a good appreciation for XNA, and gave me a renewed appreciation for Torque.

We developed the game to run on the Xbox 360, which was a bit intimidating at first. I expected it to be a horrendous process, but it was really simple. We didn’t have to do any weird code tricks to accommodate the 360, it just worked. It was really easy to develop for both windows, and the 360. Although I was surprised by how little room there is on the 360 screen. Developing for a PC gives you a lot more real estate to play with; it felt a little bit restricting at times. Overall, I thought it was really fun to make a game for the 360, and I’m glad that’s the route we took.

Developing the game felt like a whole months-long development cycle compressed into a 24 hour period. It included everything from the initial object oriented design idealism, to the horrible refactoring because your design didn’t account for something, to the bug fixes, to the code base growing large enough that you can’t keep it all in your head, to frantic debugging while trying to add new functionality without breaking anything. There were moments when I would look at a section of code, and even though I had written it only five or six hours previously, it felt the same as it feels at work when I look at code that I haven’t seen in weeks.

You would think by now I would know this, but making a game is a lot of work. I was programming almost non-stop for 24 hours with another guy, working on a rather simple design and we still had to leave a couple of features out. A lot of it was just taking care of small details that you have to take care of if you plan on releasing your program to the public.

Programming at 5:30 am after you haven’t been to bed is a bad idea. There were several times I would run the game to see what needed fixing, see something, go into the code to fix it, and have no idea what it was I was intending to fix. I started having to write down what I saw the game doing so that I could remember what I was looking for sixty seconds later. It was an amusing experience though.

I might post a couple more thoughts as they occur to me, I’m still pretty tired from the event, so I might be thinking better in a couple of days. Overall, I thought it was a great experience, and would recommend anyone who is interested in game development participate in something like this.

Labels: ,