Walk before you run


When it comes to starting out with game development, people seem to be divided into three main categories. First, there are the kids who show up on forums with posts along the lines of:

I’m 13 years old, and I have this idea for the next big MMORPG that will topple WoW, but I don’t know any programming or 3D modeling. Where do I start? Would you like to work on it? Help!

Then there are those who will promptly and mercilessly mock the poor kid without offering one word of useful advice. And then there are those who will happily tell you how hard it is to make a MMORPG (hint: it’s really difficult). Or even an apparently simple game. Or just a single encounter. And they’d be right. But that misses the point.

Point is, it’s natural for gamers to want to make their own games. Especially nowadays that the means for doing it are cheap (often free) and information is so accessible. Why, then, are we making it so hard to get started for those who want to try?

In the next paragraphs, I will try to give a few pointers from my own experience. Hopefully you’ll find them useful. But first, a word.

You can’t do anything of value without work

This should be common sense, really. You’ve heard it before, right? Then why do you expect computers to magically make all the hard decisions for you? Because that’s the fundamental difficulty of game development, and generally programming: making all those decisions. Let me give you just one example.

Say the player presses the right arrow key; what should happen? Well, it depends; in a menu, the next option should become focused. During the game, the character should move to the right. But wait: what if it’s next to a wall? Or suspended in the air, during a jump? Or next to an enemy? You need to decide what happens in all these cases, and communicate all these decisions to the computer, somehow. It doesn’t matter how you do it: either by writing code, or drawing a flowchart with the mouse, it has to be done. And that’s just for one keypress.

Oh, you could always use some sort of “game maker” that makes most of these decisions for you in advance. But you’ll still have to draw a map, place NPCs, decide what they do and when, and communicate all of that to the machine, one way or another. And then you’ll have to make sure the game is fun, winnable, neither too easy nor too hard, etc. You’ll need to be patient, persistent, deal with criticism and so on.

And if you don’t want your game to look like all the others created with the same tool, don’t forget about making or otherwise obtaining your own graphics — hundreds of tiles (or 3D models) — sounds (dozens of them), music… Unless you’re making a text-based game, in which case I hope you’re good at writing. And that takes practice.

If you think all of that sounds like too much, you might as well stop here. Sorry. Even with a team, you’d still have to do your part. It would be only a fraction of the total, then, but not any easier. If, on the other hand, you’re willing to work hard to live your dream, read on.

Before you get into programming

We all had to start somewhere, and rest assured that game development involves plenty of work even before you get to programming. Find a game in your favorite genre that has a level editor, and try creating a good level. It may not be exactly what you want, but you need the practice. And you may be surprised at how hard it is to make something that will please even your friends, let alone complete strangers.

Or, if you can do pixel art, 3D models, that kind of stuff, you shouldn’t have much trouble finding a programmer to team up with for creating a game from scratch. Or maybe you can do music and sound effects? I could definitely use some in my own games…

Or, if you have a very definite mental picture of how you want your dream game to work, create a detailed design document; maybe, just maybe it will attract a team that shares your vision. And by design document I mean an account of all the decisions I was mentioning in the previous section. A rough idea just won’t cut it; everyone has plenty of those already.

But I do want to program! I just don’t know how!

Oh, don’t worry, it’s easy enough to get started. All those symbols might seem daunting at first, but they’re much easier than learning a foreign language. Remember, the really hard part is knowing what to program, not how. That second part is merely tedious… usually.

A good first step would be to get a copy of Inform 7 and try to create a small text adventure. I know, it’s probably not the game you want, but you’ll run into the same problems as with any game: design, storytelling, NPC behavior, beta-testing, balance… And you’ll have the luxury of learning the ropes with a programming language that resembles English a lot, with much of the work already done for you by the game engine and various libraries.

Or if your grand dream is to create a MMO, grab TinyMUX and try setting up a text-based prototype first. Again, even if it’s not what you’re actually aiming for, it will be good practice in a relatively sheltered environment. And even a text-based MMO can go pretty far; just look at BatMUD’s interface. Of course, such an interface would have to be custom made, which brings me to my next point.

Of course, sooner or later you’ll want to be able to program any kind of game, in a general purpose programming language. And since you’ve got to start somewhere, try this book called Invent your own computer games with Python. Or better yet, get Eloquent Javascript. It’s not about games, specifically, but it’s really good.

Enough with text! How do I do the fancy stuff?

Okay, so maybe you already know how to program, and just want to learn the specifics. If you’re willing to jump in at the deep end, the NeHe 3D programming tutorials are still unequaled. Oh, you were thinking 2D? Tile-based, maybe? RPGs, by any chance? Check out the articles section at RogueBasin. Yes, I know you’re not making a roguelike. But many of the same principles still apply.

Other types of games, such as scrolling platformers, may be trickier to implement. There are various tutorials out there; seek them out. My own interests are relatively narrow; cultivate your connections.

Things you need to know in order to make most types of games:

As you can see, nothing pertaining to computers per se. And you’ll find this to be a recurring theme in IT: it’s not so much about “knowing computers” as knowing how the real world works. Believe it or not, the same laws apply. There’s no magic, remember?

Show me the money!!!

All this talk of how to get started making games, and I haven’t written one word about how to get hired by a game company, or how to start one. Well, you caught me: I’m an amateur game developer with as much business sense as the little plastic squares I’m banging on to get these words out to you. But in order to make money from games you first need to be able to make the games, and that’s where many people stumble.

Not that my advice is in any way complete; whole books have been written on this topic. Nor is my perspective necessarily the best. Do check what professional game developers have to say about it. But I’m hopefully close enough to a beginner that what I’m saying still makes sense, yet advanced enough that my advice is helpful.

Now go out and start making games.

P.S. Nightwrath reminds me of Peter Norvig’s classic article, Teach Yourself Programming in Ten Years. Thank you! I had forgotten about it. But I would counteract with The first step is to start. The point is not to be discouraged — on the contrary! — but to be ready for real work.

Edit: Of course, there’s always the little issue of Finishing a Game