This past weekend was quite an interesting one. In the past week of madness at work I managed to get together the arrangements to take part in this very fun jam. It's a move that might have been long overdue, but my cousin and I decided to team up on this one.
We woke up on Saturday morning looking at the theme: One Room. I was not sure how to approach the theme, but after a little thought I was considering an escape the room game using destructible furniture. It was not as much of an appealing idea though so we brainstormed a little and came up with the idea of some maze built using rooms and having a player navigate it one room at a time. We noted some similarities between the old Spy VS Spy game, but ultimately felt this was still original enough to just continue as is.
Looking at the screenshot below from an outside perspective it does not seem that impressive, but it sure did take quite a bit of work from us to achieve what we did there. Having had quite a few people playtest it we've quickly noticed a bunch of stuff that can be improved as well as some hidden potential in this game.
This being our first collaborative jam in a little over a year has provides us both with a lot of insight on how to better structure our projects so that we can work on them together without causing too many big issues for the other. One instance of this was me going off and figuring out how we can model moving about between rooms in the building, basic item interaction as well as some basic fighting mechanics. The basis of it was a nice data-structure that provided all the information required to figure out which players are in which rooms, the items available to be picked up in a room, the item that's currently being carried by the player as well as a way to use an item (like a gun or your fists) and to then figure out what that item would do in relation to another player.
Matt on the other hand had started putting together a very basic game where players can run around in a small room, pick up some of the items in the room as well as use the items in the room. This had allowed him to work on all the movement and finer details around what exactly constitutes a single room as well as ensure that the interactions are still fun. He had some interesting challenges especially with regards to figuring out how to use multiple Xbox 360 controllers for player input.
This still left us with two fundamentally different pieces of the game that had to be hooked up and without the hook-up it would likely not have made it farther than what we had there.
Once we then each had our own bits of functionality we proceeded to start and hook up everything in quite a spectacular fashion quickly managing movement between rooms as well as being able to fight each other. We could then start focussing on making it an actual game as well as ensuring that there is enough feedback to the player so that they understand what's going on.
From the little I do remember today the more and more complex we made some of the bits we the more issues we had integrating it, but we still had a game that was a lot more stable than most of our other previous entries. Our goto way of achieving this was to just use C# events (basically the observer pattern) to propagate changes in the building to our UI. It wasn't very pretty but it got the job done in a very reasonable time.
We probably should have given more thought to how we'd approach the actual menus and end-game states since some of that was still driven through horrible singletons that because of their complex nature turned out to be very difficult to reset. Every so often you'd start a game with less players than before and end up with a game where one player is controlling more than one on screen character. This had caused us quite a bit of headache when demoing to large groups of people all eager to play no suddenly having to wait so that we can kill the game and restart it from scratch.
One other thing that also likely caused unnecessary headache was the use of C# events. While it can quickly and easily get you set up to start propagating events around your game it starts to become a web of things happening, sometimes even chain reactions of things going wrong/right. We've been exploring other ways of synchronizing our game state back to the UI that has allowed us to reason about some stuff a lot better, but we haven't yet found a full solution to help us achieve this yet. I'll admit this might be us trying to over-engineer our games and I have decompiled some games out there that has some very ugly code, but being a software engineer first that's the type of stuff I focus on first so that I don't end up hating past me over some stupid stuff I've done that could have easily been prevented by an extra 5 minutes of thought. The thing we still have to keep in mind though is that a working game is much better than a well designed one that's unfinished.
The Good Stuff
This was one of the jams that I had enjoyed a lot more since we ended up with something that just made a lot more sense to my unexperienced mind. I've found that Matt having about 10 years experience on me has allowed his mind to more easily be able to follow and understand a hacky solution which tends to just cause me to shut down. I also really like some of the small touches he put in the game like drawing a little avatar for each of us.
This game we made also has a lot more potential that we'll have to dig out, one being that I'd like to spend some time recording some silly sounds to give the game a bit more feel. Other things like more feedback would also be great as we've found most play testers getting a tad confused if all the characters onscreen look the same. We also did not really have enough feedback on what item a player is currently in possession of, but that should be an easy fix.
This was a really fun jam for me and it's set us on a path of being able to build more complex games in a lot less time. I'm really excited at the thought of us doing some more stuff together so that we can just complete something for once. For those of you interested at seeing what our game is like head on over to our game page on the Ludum Dare website, just keep in mind that you'll require some Xbox 360 controllers if you want to have a nice 4 player game.