Sunday, August 14, 2011

Global Game Jam 2011


48 hours have past, very little sleep has been gained, but I have a game to show for it. This was the first time I participated in the Global Game Jam, and I have to say it was quite thrilling.
One of my buddies came up with our games idea; it’s sort of like the impossible game but with extinction as its theme (imposed by the game jam). The name of our game is Dodgecube. Its primary goal is to survive an onslaught of growing walls and dangerous red cubes whilst mating with your fellow cubes to bring your buddies into your game and survive as a team. Our game could be played by up to 6 players, two on the keyboard and 4 Xbox 360 controllers where each player controls two independent cubes simultaneously (which is quite a challenge in its own right).

During the 48 hours, I implemented the main architecture of our game, simple collision detection and resolution, rendering, growing trees, bullet time and a couple other things I can`t really remember due mostly to my eyes glazing over from fatigue.

The collision resolution system was the first time I had the chance to try out something I read from the book Scott Meyers’ Effective C++. The problem was exactly like one stated in the book. To know who is colliding with who can easily be found out using a double dispatch mechanism (the visitor pattern), but where does that code go? Now in his book, out of many solutions he mentioned the visitor pattern to figure out the types, but then when he asked this exact question he used an emulated virtual function table which would find the proper non-member function with respect to the names in the type_info of the objects that collided. Considering, I already had all the information I needed in the double dispatch and that I had access to the code of the classes in question, I found it wiser to simply call my non-member functions (it was in C# so a singletons member functions), which would apply the proper collision handling with respect to both my objects types. By the way, if you haven’t read this book, I would highly recommend it. It was an interesting read through and through, and I think it taught me a lot.

The Game Jam was quite a fun experience as I got the chance to work and manage a team of people that I never had the chance to work with in the past. I instated an agile workflow where we would have stand ups every so often and created a task board to keep track of each other’s tasks. I also spent a lot of time briefing my team mates on the architecture and the threaded screen management and UI library I implemented with Jean-RĂ©mi (the UI lib was a personal project we brought along with us to add some extra polish for very little effort).

All in all it was a lot of fun, I learnt a lot about team building and team management, and got to meet some really cool people.

GGJ11 - Dodge Cube