Fair warning: this, like all my blog entries, is long winded and expressive, cause that’s just how I roll. I hate the wall-of-text approach, so as always (well, from now on), there will be a tl;dr version you can find down the bottom for the lazy / time-constrained among you. But hopefully, there’s enough of an interesting story here that readers spend the 15-20 minutes it will take to get through…
If you haven’t heard of GGJ12, you’ve either been living under a rock.. or have better thnigs to do with your weekends. Either way, you’re missing out ;P . For those who don’t know, GGJ12 is the Global Game Jam 12; a globally participated event in over 40 countries (simultaneously), 7000+ participants making 1000+ games, averaging teams of 5-7 all making a game. In a weekend. That’s 48 hours.
It’s hard to conceive, let alone believe, those kind of statistics happened; especially when you consider most big-budget games cost millions to make, take several years, and require hundreds of people. GGJ makes a laughing stock of conventional process. Plus, you only feel your soul being drained for the last 12 hours of a project, not the last 12 weeks…
The rules are pretty simple. You have 48 hours. You have to make the game from scratch. You can use any editor / framework / platform, so long as you are able to release the source at the end. Ooh, and it must fit a theme. In the past, the theme is usually a word, or phrase. So you can imagine the deafining silence that hit our Melbourne crew when they put this on the screen…
The theme was the Ouroboros… a giant serpant wrapping around like a ring and eating itself. Historically, it is symbolic of cycles and balance; life and death, light and dark, yin and yang, going full circle and beginning again. But that’s not what I saw…
So I participated, joining forces of awesome with Andy Sum (website) and Guy Noble (website), as well as being part of the ‘infamous’ pre-organised conglomerate of 15 developers, now colloquially known as Mouthbirth (NB: original internal name was Jam Crew, but during the midst of 48 hours of game making, people get crazy).
So if you haven’t seen it yet, our (mine, Andy’s and Guy’s) GGJ12 game is available here. Give it a play, and try see what I saw, before you continue reading. It wont take long to download, I promise… Ooh, and there’s a timelapse you can watch from my perspective (I’ll link to Andy’s once he’s done it , and I will add audio eventually).
Now, I hope you played it first. Because now is your last chance. I’m flagging official “spoiler alert”. Baaah, I’m kidding, read on if you want.
So the biggest part of a post mortem is finding cause of death. But Ave Imperator went pretty smoothly. So rather than pick everything that went wrong, I’m just going to highlight the stuff that stuck with me, and the reasons that I will definitely be returning next year.
Now, I’m not one to reflect on myself and performance without rationalisation. So with each item identified, I thought I’d share something learned or some advice I’ve concocted…
So the good stuff:
1. Firstly, we had fun making it, and I think that really showed through. It keeps you interested. The moment the job is tedious, or you question whether it’s worth it, game over man, game over. You will not keep motivated, on something so intense and short. My advice: Find ways to have fun while your developing; it will make those “uuuh… shit, not this again” moments pass by. Making and playing a game that you enjoy… it’s impossible to explain, you have to have done it to understand. There are only a few things in the world I’d rather experience.
2. My first words as we started production were “let’s KISS it, you know, Keep it simple… stupid, well not you Andy, you’re easily the smartest out of us”. This is really important when you have short time, limited effort and potential scope blowout. Polish, polish and polish some more, really make those few key points of your game shine. For me, it was the characters and their animations, so I spent most of my time making them as polished as I could. My advice: just KISS your game, and it will do things for you. Crazy, revolting things that would make your mother ashamed…
3. We had a great engine, which allowed us to have a playable prototype of the core concept withing 3 hours of imagining the idea. This was so important, to confirm or deny the core mechanic. My advice: Validate early, scrap what is shit. There’s a great little saying among game devs; a polished turd is still a turd.
4. We had a great work dynamic, mutual respect among all 3, and this unspoken shared vision for the game.We were all familiar, friends, had jammed informally before… It kept us motivated, helped us express our personalities among one another, kept each other sane and laughing. My advice: do the jam with people you respect, not necessarily your friends. That’s not to say the two don’t cross over, they certainly did with us. But I would have had a hard time working in such an environment with a casual mate I didn’t respect as a fellow developer I could trust and rely on to pull their weight and get shit done.. awesomely.
5. We had single experts for every field, but everyone had knowledge enough in each others to provide feedback or alternate opinions. My advice: don’t double up, unless you’re both going to be focusing on different areas of the field. You don’t have time for logistics, merge conflicts, or technical discussions.
6. No conversation lasted more than 10 minutes. This may be in part to our ability to just “sync”, like some ungodly hivemind.. but we could sense when a conversation was going no where, and we would just say “hey look, this is a waste of time right now, let’s just go with X and review after”. My advice: Time cap your debates. If it’s taking too long to sort, it’s not likely to be worth it.
We worked great as individuals, and shared a sense of accountability that motivated us to pull our weight as field experts. Again, my advice: work with people you know and trust. I know the jam is meant to mash strangers together, but in all honesty you end up relying a lot on luck. Find a crew eager to jam, and just jam. Use weekends, practice prototyping, get familiar with your tools, learn how to work with your teammates and practice failing. It’s like a rockband; practice together in private before the big pressure gig.
7. We hacked what we could, and kept proper architecture for what we should. As an artist, I stuck to the mantra “why make it when you can fake it”. I saw a lot of people fabricating art, or writing engine code. You seriously do not have the time. Focus on the game elements. My advice (to artists): join CGTextures, learn some quick and dirty photoshop techniques, and plan your time early. If you go over an estimate, maybe it’s time to review your scope, or change your approach to something that has a fast rate of delivery. 48 hours disappears very fast, and games are complex systems at their simplest form.
8. We used virgin playtesters where possible, to make sure the game could stand on it’s own. Usability is becoming a huge part of consumer society, and conventions evolve and plateau. One thing I distinctly remember doing wrong last year was making a game that required developers to explain the game rules, strategies, control scheme etc. My advice: Just don’t do this. Spend more time designing ways that the player will just know the game and the intricate mechanics than the mechanics themselves. Trust me, when players feel clever, they like your game more (see Braid, Portal, Prof. Leyton, Cut the Rope etc.) Make the level design or aesthetics so blatantly obvious that players can’t miss it, and make sure they feel like they discovered it themselves. Also, DO NOT BREAK CONVENTION. Don’t make a fps that uses up/down/left/right. Don’t place static objects out in the open by themselves. And for god sake, don’t put yellow text on white background!!
9. We walked around often, and slept when we were tired. Sure, by the end we were completely drained, felt disgusting and in sweaty, but that’s part of doing a 2 day non-stop game making jam in a country where 40 Celsius is a normal summer day… My advice: Make sure your venue has a shower, and bring a towel and change of clothes (I forgot the towel).
10. We played ‘ideaball’; a thought-stimulating activity we used where form a circle and pass a Grid-iron ball around, but first you have to vocalise a game idea. It works particularly well to make people share ideas that they’re self-conscious about, since you passed the ball to the shy kid trying to hide and now that the pressure is on, it’s all they have. My advice: start the jam with an exercise like this. Provoke thought and debate, build on one another’s ideas, and always… ALWAYS… scrap the first 10 ideas. They’re shit, or already done.
Now what went wrong:
1. We spent a long time brooding on ideas before we found one we unanimously liked. While it was in our interest, try narrow what you want to do first, then come up with ideas. My advice: remember how I said we had fun? If you’re taking too long coming up with some awesomely clever, unique and innovative idea, just do something you’ve had on your mind (in this case, I was wanting to do a platformer hack-n-slash for weeks…)
We used an engine only 1 person knew how to use. This wasn’t a huge issue, was offset by their speed and proficiency, and it meant we’d never get file conflicts, but it was a chokepoint for asset implementation and playtesting. My advice: make sure everyone is familiar, even if there’s only 1 expert. Having more of a technical understanding of Multimedia Fusion would have helped me help Andy, and allowed me to add assets when he was doing something else.
2. I wasted a lot of time establishing the aesthetic, but this may just be a necessary stage to wrap one’s head around such a blank canvas. My advice: it’s daunting as hell at first, but when in doubt, fall back on something you know you can do or are familiar with. I’ve done Flash style squiggly-line-work animations before. I’ve done characters with emphasized proportions, and I knew I could do blank faces quickly… and that’s whats most important. Speed. Speed is the name of the game.
3. I drafted animations we didn’t have time to implement. Sometimes, shit just happens, like doing work that doesn’t make it. My advice: do what needs to be done, and get it in. In this case, I did animations in bulk, then started paintovers and implementation. If I just did the workflow for a full asset, instead of trying to combine stages, I would have realised I didn’t have time to do the Centurion, and that what we really needed was another animation
4. We left a really important feature (the kick) until the last hour of the jam. This was mainly because we felt the game didn’t need it till we started virgin playtesting. My advice: get peers and designers to test early on, while it’s skeleton bones; their feedback can help with the nuances you missed on that first prototype. Then, blitz through and have something presentable to a player, and always use fresh meat; this will help you identify confusing shit in your game, like “how much health do I have?” questions, or “i want to do more than just stab” requests. And never forget, be clever with your usability design. Tutorials and HUDs belong in the 90′s people, let’s get with the times!
5. We over-scoped by a tiny fraction. It wasn’t as bad as it could have been, but we needed up missing out on an enemy type, some interactive objects with the level, and some extra little details in the game that really make all the difference… when you have the time. My advice: KISS. We were close with our KISS, but we strayed a little.
6. Last failure was the text. Now I’ll get into it more in a second, but it was a case of the idea was awesome, the reality not so much. A slight oversight that was a lesson learned, and something we’d do different / potentially fix. My advice: if you’re trying be clever with something risky, test it early.
Key points to review:
We rocked our combat system. It was simple, yet effective. It fit the feel we wanted, and allowed the player to learn the “optimal tactics”, such as lining their foes up and avoiding being surrounded. The animations, audio and implementation just gelled together well; you felt the quick jab, the spongy sound of mushed flesh. For 90% of the jam, we were happy with single-move combat. We even discussed additional actions, but kept to our KISS mantra. Not until Conor O’Cane playtested our game, and said “beat-em-ups are all about combos. I’m really wanting to do more, like jump attack or two button combos”.
That hit us. Hard. Andy and I looked at each other. Shit. Worst part was that he was right, and we knew it, but we just keep putting it off because it was extra work we didn’t think added enough value to warrant the effort. But now that Conor, a legend I secretly respect a huge amount, pointed out our flawed design, it went from a small feature we were leaving out to a gaping hole that threatened to swallow every second of work we did over the last 30 odd hours. No one man should have that much power and influence over you, but it really did. By the end, we couldn’t leave it out. We needed a kick. And we had 2 hours to do it.
Luckily, Andy is awesome, and I had the majority of animation frames ready to be tweaked. And Conor wasn’t the only one to point it out, but he was the first and most helpful. Scope wise, we couldn’t do huge combos, or add weapons and powerups. Even narrative wise, combos wouldn’t have fit. The only thing I really wanted that was out of scope was a sweet assassination animation, where the player character grabs a hold of an enemy, Assassin’s Creed style, and slits their throat or holds them hostage. Brutally violent, I know.. but that’s politics bitch!
Suffice to say, we got the kick down, in 2 hours, and it kind of sucked. No one used it, no one understood it, and it just didn’t fit the game. The kick was meant to save you, act as crowd control utility. As much as Conor and others were right, that beat’em’ups need combos, our game didn’t. The kick was kind of cool at the time, but completely gratuitous now. One button still does the trick if you work the AI right…
So that was combat, how about the narrative? Well, the theory was brilliant. The reality was a little different.
It’s 2:00am, Sunday morning. Andy and I stand up from our desk, have a stretch, then walk to the kitchen. I break open two cups of Sweet Chicken and Corn noodles, then toss one to Andy. Like recently turned zombies, we empty the contents and walk to the boiler, filling the noodles to the little mark inside the polystyrene cup with hot water. Grabbing a pair of forks and our steaming cups, we both walk back to the table, stacked with food, and find a seat.
I don’t remeber the exact dialogue, but it went something like this (Andy, correct me if I’m wrong here, it was 2:00am afterall):
“So let’s review where we’re at..” Andy says. “What is there left to do?”
“Well, We need our finish. We need to kill the Emperor, show the steady degradation of Rome, the fall of Rome, try finish the Centurions. Oh and the plot” I reply. “We really need a way to present the plot”.
We both sit in silence, eating mouthfuls of noodles.
“What if it’s like a story book?” I query.
“Yeah, but remember what they said. Don’t use a wall of text” Andy reminds me.
“Nah, nah”, I agree. “It needs to be awesome. Like how Braid did it, a subtle presentation of text”
Then it hits me. It’s pure genius. I do my token fist-pump of excitement, jump up, slam the table and burst out,
“Dude.. what if it’s like reading a book line by line, but each line is part of the level. So, like, you read through as you progress, getting a little more every time as it scrolls across the bottom of the screen”.
I see Andy’s face light up. He knows what I mean.
“Yeah”, he says excitedly, “And then, like, every play through the player does gets a little bit more of the story, as they get further and further.”
“Exactly. It will make players come back, so they can keep reading the story. But only if it’s, like, subtle and vague, really suggestive. Well, if it starts like that, then becomes really obvious; like, this is Rome, slowly burning as each Assassin succeeds the Emperor. Can you do it, like, make it pan with the levels?”
“Yeah man, let’s do it. But we need the story text”
“Sweet, don’t worry we got this.”
**sound of an awesome 2:15am hi-5**
Now, you’ll notice if you play the game that, yes in fact, the story reads down the bottom. Its actually pretty well done, and I try to be as humble as possible when I say that but I am genuinely proud of it. As a concept.
So what went wrong? Just play it, and you’ll notice. It doesn’t actually work that way. Players (myself included) don’t read it, and for good reason; they’re watching the level area. You notice a white blob float underneath, but you don’t think anything of it. It reminds me a bit of Splint Cell: Conviction’s feature of text-in-the-world, except implemented nothing like it. That was our intention. That was my vision; to have players read, then fight, then read, then fight. But, as with so many things in life, concept and reality are never the same first time. This is why we test. And this is why we should have tested earlier.
Don’t misinterpret this, some players got it (a certain TinMan wins that competition), and some players managed to read the whole story (which was AWESOME). But if we started testing the concept with virgins earlier, we would have realised most people don’t notice it, and maybe we could have found a better way to do it. Even if it was better timing in the levels, or putting it on the ground instead of the black bars. Hell, even if we broke the sentences up to be less words, so the player had less to split attention on. The point is, we didn’t, and what was meant to be a core motivational feature turned into an Easter egg for a niche playerbase.
So I hope by now, you’ve played the game so this post mortem didn’t spoil it for you. If not, I’m about to.
You may remember that earlier I mentioned that I didn’t see an Ouroboros. I didn’t see cycles, or balance.
I saw a snake. Eating itself. I saw self-destruction, self-mutilation. The internal collapse of an organism as it implodes on itself. I saw a black hole, devouring everything that came in its path. I saw division in unity, the cause of great, powerful systems falling to inferior threats. I saw the fruit of politics.
I’ll leave the rest to interpretation, as to retain some element of artistic expression. I remember being disgusted at the pretentiousness of some of the world’s leading indie dev’s attitudes to people’s interpretations of their game’s message, and while our 48 hour beat-em-up’s subtext should be obvious, I’m not going to say “no you idiot, you’re wrong, this is what I meant”. Art, to me, is any abstract communication. If there’s a communication breakdown, we still find a way to piece together the message, and that is an amazingly human quality.
And as promised, the tl;dr version. In summary, it went well. We worked well together, held close under pressure, benefited from mutual respect and a sense of accountability to one another. We got a playable prototype early, but I held us up with slow art production (or maybe Andy is just a programming BEAST!!). From the first build, it felt right, so we rolled with it. When it felt wrong, we undid it and tried another approach. When my characters looked shit, I deleted the layer and started again. When the objects in the world confused the player, we took them out. If it wasn’t necessary, we didn’t waste time fixing. Don’t make what you can fake, time management is EVERYTHING, it’s the most valuable resource during a jam. We entered with a team prepared and proven as jammers, based on mutual respect, not just friendship. We made sure everyone was vested in the game, and that everyone understood the vision, and agreed. We dropped the ball on testing, time management and (my department) asset scope.
However, we delivered a game of accessibility, challenge and subtext. Most important, we had fun making the game, and I genuinely mean it. After seeing them excel and then all of us pull together, I now respect Andy and Guy even more than previously (which was a lot to begin with).
In parting, I want to thank IGDA, IGDAM and La Trobe for hosting the Melbourne Jam. I want to thank all the volunteers and organisers, worldwide and in Melbourne, for making it happen, as well as the Melbourne jam sponsors. I know it was a blast, and gave everyone that summer camp high we have to, unfortunately, come down from. But hey, on the bright-side, only 355 sleeps to the next GGJ.