Saturday, February 18, 2012

How to Make a Game in 72 Hours

What if I told you it was possible to make games in 0 hours?
Crazy, right?  It's actually completely possible, with some stretch of the imagination.  The 0h Game Jam does it by starting development right before daylight savings time changes, and using the extra "turned back" hour to make their game in what would, in fact, be zero hours.

If you can successfully pull that off, stop reading now; you're certainly much more experienced than me and won't benefit much from this.  For the rest of you, here's some tips on how to design a game, from start to finish, in 72 hours.  You'll find that it's actually a generous amount of time.

Quick note: I've included a small list of tools useful for speed-dev at the bottom of the post.  Go check them out, maybe.

1. Know the tools you're using, at least a little.
This is fairly obvious but worth stating.  If you haven't used a language before, you're going to run into quirks.  No exceptions.

As a start, build a platform engine or a shoot-em-up.  Get an idea of how the structure would work.

Some things to know first:


  • Keyboard and mouse input handling
  • Class structure
  • Sprite/image drawing and animation
  • Structure of very basic engines (platformers and top-down are a must)
  • Collisions
This is all basic framework, and you should figure out at least a few of these before trying any serious development.  It's ridiculously hard doing anything with a language you've never used before.

Being able to learn structural programming isn't exactly straightforward.  I can't teach you that.  No one can.  It comes with practice, and brute-force gamedev, really.  Game Maker is a nice tool for prototyping, if you're new.  But really, teaching you the basics of programming is sort of out of the realm of this guide.  Sorry.  It's not very hard though, I promise.

2. Focus on one aspect in particular and cruise through the rest.
You won't have time making a game that looks nice and plays nice and progresses nice.  Take something you want to focus on and emphasis that.

If you're a pixel artist or a professional illustrator that can draw things with one hand tied behind your back, then go for it.  Or if you're a natural storyboard writer and have a fleshed out, complicated story that you really want to pursue, do that.

If you're neither and you're a new fish in the world of speed development, then the easiest thing to do is think of a gimmick that's clever enough on its own to hold your game up.

Above is "I hate myself," made by fysx.  It's nothing technically or graphically impressive, but the concept is genius.

Edit: A small note from the developers of "I Hate Myself":
Thank you for this article and also mentioning our game "I Hate Myself". Please note that this game was not made by just a single person, instead it was joint effort of Jonathan Wehrle, Tilmann Hars, and me (Martin Felis a.k.a. fysx). We were extremely lucky with our team.

And yes, using version control was also extremely helpful. We almost did not have any problems with merges or other issues.

Oh, and not to forget: good food and enough sleep (at least 6 hours)!
Another example is "Fez," by Polytron.  Probably a bad example, because the code behind this must be massive, and the graphics must've taken a while, but this is the sort of idea you want to aim for: simple mindfuckery.

A lot of weight in indie game development rides on originality and execution of the concept.  Which brings me to my next tip...

3. Don't bloody sit there and wait for an idea to hit you!
A lot of newbies fall into the trap of "I only have three days to make a game!  I need to spend every living, breathing second of it working on my game!  Quick, the gods above, bestow greatness and inspiration upon me!"

Go outside.  Talk to people.  Walk around.  Listen to music.  Do anything.  But don't be afraid to waste a chunk of your time being away from the computer.  10 hours spent on the concept is easily worth 30 hours of polish.  In fact, most game developers only spend one-or-two-thirds of their time actually developing.

And once you have a really good idea, act on it.

4. Scrap your game once or twice if you need to.
It sounds ridiculous to restart after having spent 10 or 20 hours on a game, but you're better off for it.  If at any point you realize that your game is heading in a horrible direction, blow it up, restart.  I can't stress this enough-- a poorly-executed but well-thought-out idea is worth more than a polished pile of crap.

For some damage control here, I suggest making a prototype of your game first.  Start with the engine, and temporary "programmer" graphics everywhere, and flesh out the core.  Design a few levels for a quality check.  If it's any good?  Green light, keep at it.  And if it's not?

You know what to do.
(By "scrap," I just mean restart.  Don't literally delete it).

So you've got a nice game going, and you feel great about it, but it's lunchtime and you only have 20 hours left and you're freaking out and you haven't slept in days and and and and a final tip.

5. Eat/Sleep.
Sleep regularly, eat regularly.  It's tempting to go the insomnia route and coffee through three days but it's absolutely detrimental.  I've personally tried it, and then I wake up and find the entire system completely destroyed, duplicated lines everywhere, simple solutions overlooked.  Don't do it.

Congratulations!
Your game sucks.

But don't feel discouraged, it's all about practice.  Sounds cliché?  It is, but it works.  Really.  A lot of game development is just working up the motivation to keep at it.  Nice way to do this?  Talk to other developers.  Comment on their games, listen to their critiques on your own game.  The indie developer scene is full of assholes but there are a lot of great, inspiring people too, and it's really motivating to be a part of that sort of community.

And a small note about timelapsing...
A timelapse is a video made by taking a screenshot every few seconds or so while you're making your game, and compiling it all at the end.  It's really kind of neat.



Send me your timelapses!  I want to see them.  I'll try to feature a few nice ones here.

Some timelapses:
None yet.

And now, some useful tools:
  • Dropbox  - definitely the most useful of the bunch.  Upload files and link to them quickly to share beta versions.  Also excellent for collab projects, because files are synced across computers.
  • GitHub - for version control.  I don't personally use it, but lots of people seem to find it useful.
  • SFXR by DrPetter - great for generating 8-bit sounds quickly.
  • BFXR - a more powerful version of SFXR. Also, it's Flash, so no need for a download.  (Kudos goes to Gigimoi for this one).
  • Audacity - light, open-source sound editor.  (Thanks to orange08 for this).
  • Chronolapse by Keeyai - for timelapses.  Light-weight, easy to use.
Hope you found this useful.  If you didn't, cactus made a great presentation on making games in 4 hours that highlights a number of useful tips.

8 comments:

  1. BFXR is a bit more powerful than SFXR.

    ReplyDelete
  2. Thank you for this article and also mentioning our game "I Hate Myself". Please note that this game was not made by just a single person, instead it was joint effort of Jonathan Wehrle, Tilmann Hars, and me (Martin Felis a.k.a. fysx). We were extremely lucky with our team.

    And yes, using version control was also extremely helpful. We almost did not have any problems with merges or other issues.

    Oh, and not to forget: good food and enough sleep (at least 6 hours)!

    ReplyDelete
    Replies
    1. My pleasure! Was an excellent game.

      Edited the post.

      Delete
  3. It seems like getting away from keyboard, and rethinking the concept is really needed, and I think for beginner really hard thing to do :). I found myself as a beginner always bugging in the middle of a implementation. Whats next, is this good, could it be better implemented? You are right about making a pause, just relaxing and doing other things, coz your brain needs some time to process all ideas and data consciously and subconsciously.
    One thing I never tried is restarting. Somehow I find it intuitive and seems very logical, to me at least.
    Concerning indie game industry, great ideas start right there, and its not all about ideas, there a re really nice implementations, like WorldOfGoo, Trine, Magicka etc. Ok, Magicka was very buggy in start, but the idea is great.
    Anyway, great observation and great post. (like)
    Cheerz!

    ReplyDelete
    Replies
    1. Thanks for the feedback! And don't get me wrong, there's a lot of indie games with excellent implementation, but I find that if you're working in a short timespan, it's extremely hard to get all the execution up to par with what you'd really want it to be.

      The biggest problem for beginners seems to be the "I have only 72 hours and I'll never finish if I don't work every second of it" mentality. You're right in that developers need to take breaks and step away for a bit; absolutely crucial.

      Delete
  4. Audacity is a really good FREE sound editing program as well. I use it all the time for recording and editing sounds I make with my mic. (It doesn't generate sounds like SFXR does, though)

    ReplyDelete
    Replies
    1. Oh, that's a neat one. Added, thanks.

      Delete