Global Game Jam 2011 - Finished! - 31/01/2011, 03:38Yesterday around 5 pm, the Global Game Jam in my timezone finished. It was a very exciting 2 days and I'm really satisfied, and as always, impressed with the quality and geniality of the games my fellow teammates, the other teams and I have been able to create.
Here's how it went for me. On Friday, when the GGJ started I didn't have any team - because that's in theory the ideal setting: you go around and meet new people, and connect with them. Although to be honest I think a bit of previous synergy between some of the team members really helps push the project forward. At least that's the way it was for me last year as well. So for instance, joining a small team in which a few people have already worked together is a really good plan, if they're open to fresh ideas which has luckily been the case so far.
So er- on Friday as I got to the site, while most of the teams had been created beforehand I was able to join 2 really cool guys from Sweden - Andreas and Daniel, the first one studying Computer Science, the latter studying Interaction Design/Game Design, of course!
This year's theme was: Extinction - a very important topic in today's world since sadly many fauna and flora are disappearing directly or indirectly due to mankind's activities (although in the end, our game didn't really quite address the issue from this side... hmm! :P)
We started proposing ideas; 3 of them were so we couldn't decide for a long time on which one to implement. Markus, my teammate last year and this year's volunteer organiser though unfortunately not participant, proposed each of us implemented a quick rough prototype.
We then started crackin' and when it was close to midnight we compared our progress and decided to go home. Andreas had partially implemented a game in which you gained animal abilities by killing them. The effect wears off after some time. Of course if you kill too many animals, you might find yourself trapped without the possibility to obtain their powers anymore.
Daniel worked on another definition of Extinction - According to Wiktionary.org: "The absorption or scattering of electromagnetic radiation emitted by astronomical objects by intervening dust and gas before it reaches the observer."
The game's mechanic would be to bend lightrays emanating from a star, so that it reached the surface of a planet without becoming scattered by dust and gas. The light was to be bent by placing objects with enough gravity along the path, as seen on TV. Along the way we thought of a twist that could turn it into something we called "Dinosaur Bowling".
I worked on a prototype for another idea we called "Parallel Stampede" - You have an obstacle course, and you must finish it with at least one male and one female to ensure the survival of your species! An interesting aspect of it (and this is of course inspired by Braid) is that, if you fail with one character, you get to run with another one while you see -and interact- with your previous run. You have a fixed amount of males and females from the species, and you can use one or more of them to cooperate.
What are they all running from? Well, we thought of a wall of fire chasing the player, but that would be cutting it too close to Braid, so instead we thought about a crocodile. Crocodiles are cool, the more they are pissed off, the wider they smile.
But back to the idea: For instance, say there is a really high obstacle that one specimen cannot jump over. So - you control a character all the way there and then "give up" their life. He or she will remain there for all eternity, but on your second run you can jump on this character to clear the obstacle and ensure the survival of the species! (Maybe the stuck specimens will survive, mate and become another species altogether! A happy ending for all! Especially the crocodile who gets to smile wider than ever with all these annoying humanoids around)
Now, the prototype. I tried using my fabulous engine - to disastrous results. I had a lot of problems making it generate a level with obstacles procedurally, and then I found at least 3 new bugs which I will be correcting in the upcoming days/weeks. So when I went home I had a pretty display of boxes but still no playability. I stayed up until 4 o' clock when I finally :rage: quitted and went to sleep with the pride a bit hurt. In the morning I was able to get some actual playability implemented before we met at 9. We met, checked results and to my astonishment, we chose to go with this idea (and in the beginning, my engine). Fortunately Andreas found an XNA code sample for a 2D platformer (I think it might even be the most basic XNA code sample) which we happily started heavily modifying to suit our needs.
A great number of hacks later, we had a partial "recording" system "working" for our game, which we assumed would function nicely by assigning timestamps to changes in the player's controls (more specifically in the effects these controls cause, since we wanted the game to potentially work on Xbox as well..) but we found out pretty soon a few things.
First, passing the action list by reference from the player to its second run (which will from now on be called a "clone") and reusing some of the variables in that list was not the best idea. We had an incredibly funny and somewhat unnerving game in which you spawned clones that partially followed your movements, sometimes precisely, sometimes imprecisely, sometimes they mimicked you immediately, others they just randomly stopped responding, and sometimes they took a life of their own. Super bizarre. Even evil, I would say. And something I'm definitely going to try redoing, this time in a controlled environment.
After we solved the bug by passing a copy of the "recording" to each clone, we found out that the timestamps were not sufficiently precise. Some actions seemed to be too fast for the system to notice and execute them properly. So after some discussion we decided to tie them to frame numbers instead, to near-epic success. We would run into more bugs later, however. Sometimes the last actions would misteriously not be recorded, or they would be altogether skipped on playback. So after much hassle, including the fact that the engine wasn't entirely of our making and had been designed for code clarity rather than extensibility, we finally got something semi-decent going on in the afternoon. More often than not though, fixing in one place would cause bugs in another and it was very hard to fix them both simultaneously so we ended up making quite a number of compromises. For instance, we wanted to ensure previous runs would be immutable no matter what the player did, so we thought it would be OK to "ride" on previous runs - but if you fell and collided you'd be squished dead, just like a real stampede, but unfortunately the game got stuck each time we considered the player to be dead when colliding with other clones and we could never really find out where the problem was. Therefore - no being killed by clones.
We went home after 8 pm; Daniel created a lot of really cool sprites and backgrounds to replace the sample's, and Andreas and I squished some bugs - enemies not restarting when the player died, for instance.
Here's a few character sprites:
We wanted to have some differentiation between the male and the female to further spice up the game:
- The female, being slightly smaller in size than the male, should be able to fit in tight corridors so that switches can be accessed.
- The male should break fragile tiles on the map.
- Having differences in how they jump or move (in the end we didn't do this)
This was implemented mostly by Andreas during the first hours of Sunday, while Daniel made more sprites and I made sure the player could properly ride their clones. It's not trivial even if it looks like it - we tried modifying the player's velocity to match the clone underneath her, but that wasn't enough, then perhaps adding the clone's velocity to the player's but then it was too much - in the end we managed by copying the clone's velocity, then adding the player's velocity, and turning off the drag due to air - all of this only if the player was riding a clone.
After the game was running quite decently and most of the assets redrawn, we were finally able to focus on level design. We discussed a lot about a tutorial level and agreed to have the tutorial level and each do another one - bringing the total to 4. The tutorial level focuses on showing players the switch mechanic and why they need to sacrifice a few clones before reaching the exit. The next level introduces the fragile floor mechanic and having the female go under low ceilings in which the male is too big to fit (and too stupid to crouch), plus an enemy.
The third level further explores these mechanics while the last one requires the player to do something a bit illogical. Let's just say, as a hint, that the male character does not destroy fragile tiles because of his weight.. the last 30 minutes were very tense with each of us designing, playtesting and repairing our levels as fast as we could.
Due to complications and the deadly deadline approaching, the last level was in fact designed, playtested and finished under 10 minutes, then the game was immediately uploaded - you can see it here:
In the end all the teams showed their finished games - all of them very impressive and I believe more than one team pulled an "all-nighter" in the lab.
"Shiva" is a very conceptual game where you transplant nature from one living place to a dead one to give it some life, to irreversible consequences and a really cool ending.
One thing I must say is that I found it very impressive how the team was constantly piching new ideas, redesigning and polishing both the main idea and the engine, and how they managed to coordinate and solve bugs so well for such a large group. Since they were sitting close we could hear their discussions, how they instructed one another and how things progressed. Really cool
"Escape of the DoDo" is a nice android game about a the last dodo on earth, who must escape humans' endless desire for killing things. Along the way he can bump into obstacles, gain a bit of distance by walking over dodo eggs (I prefer to think of it as, maybe he picks them up and stores them under his arguably small wings, thus taking a few steps forward because of him being so proud of saving other dodos and so on), and he can also gain a bit of speed when he hears the female's calling (even if this mythical female is a mere mirage and he will never reach her..)
"Dear god what have I done" is about carving holes in underground caves with fire and lava. The liquid simulation is really nice (and from experience I can say it's not easy at all - not to mention destructible environments don't look easy to simulate either) and they made their game multiplatform in all open source goodness.
It's a pity I never took pictures of the lab mid-development, with all the pizza boxes lying around, as this is also part of the fun.
I'm definitely looking forward to next year's Game Jam.
< Back to blog