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.
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:
- how animation works;
- basic trigonometry;
- basic physics — at least how inertia and acceleration work, because
- no motion looks natural without them;
- some notions about the physics of vision; shadows, perspective,
- optical illusions;
- basic probability and statistics.
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…
I think part of the problem when people want to get into game development is that they simply expect that just because they like to play games, it means they will like to make them. Playing games and making games are two completely separate things.
I am a member on several indie development websites and too many times I see people posting the same question as above and get flamed (although, never by me :)). I think part of the reason is because when people post comments like that, it sort of degrades what indie developers do. It sort of makes developers think “People think you can just sit down one day and make the type of games I make? They don’t realize all of the hard work, planning, careful optimization and other hours of work I put into this?”, which is frustrating to think about.
A lot of people think that they’re going to be making a 3D game within a few months of learning a programming language. This is hardly the case. you are going to need to make many 2D games (and I mean many) before you’re going to be ready to make a 3D game. This usually frustrates people because most of the time people want to make the next best first person shooter game, but it’s true. You have to crawl before you can walk.
If you really want to make a game, the very first thing you should do is figure out what part of the development process you will be. Don’t just go around saying “Hey guys I want to make a game! Who wants to help?” That will get you nowhere. You really need to say “Hey guys, I am a great artist, here are some samples of my work! Would anyone be interested in making a game with me?” Making games takes a lot of work, even if you have a huge team. A lot of people get over optimistic and then get really frustrated when things don’t go as fast as they want to. When I make games, the levels are comprised of java.awt.Color.CYAN rectangles until the entire game is done, and then I end up putting the graphics in once the engine is completely done.
Another thing people should realize is that you can really help yourself by making your game engine multipurpose. Once you write an RPG engine, you can make about 10 different RPG games on it without having to really change a lot of stuff in it. Just make new maps, new graphics and maybe add a few new features and voila, you have a new game.
In this article you mentioned a lot of books. However, most people do not want to read a whole book. Yes, books are important and if you want to learn how to program, you’re inevitably going to have to read a book or two (or at least quite a few online tutorials). However, just reading books isn’t going to get you to be a great programmer. You really need to practice. A book will teach you syntax, which is very important, but programming will teach you how to work through problems and find a solution. You’re going to spend countless hours debugging a small trivial issue that you would have never expected.
A great place to start off is definitely getting some sort of game making software that has the engine done for you. This will give you a basic idea of how you should be thinking when you’re making a game. Although they’re very watered down, they will definitely help you in the long run. While making your game you’ll think “Oh yeah! I remember in that game maker they handled the battle system like this!”
Anyways, nice article.
Well, I will only speak from the “programmer’s point of view” since I am not an artist and my game design skills are rather basic… for now ð
As the previous commenter said, there should be pointed out that there is a big difference between programming something in general (like a phone agenda, for example) and making a game in special (let’s say – pong).
But even before you get to do a pong clone you may need to play around with some text game of sorts… cause pong does need some math in there – in the way the ball hits the walls and all that ð (it’s a little bit easier from technical point of view to have a black screen with text saying: ‘You are in front of an empty hut. You can go inside, or go west. Where do you want to go now?’ ‘Click W for west, N for north…’)
Then there is a big difference between making a pong clone and a full blooded rpg. Even when I think at the most basic rules (stats – strength, dexterity etc that goes into complicated fighting equations) gives me a headache. And on top of all of that add some fancy 2d gfx ð
Then there is an even bigger difference if it goes 3d. You go straight from Ultima clone to… Quake style. And that is painful, indeed. It was painful even as a player to make the transition from 2d to 3d. The camera movement seemed to blow my mind every time – I wanted to feel like a player, not a cameraman ð (well, you get used to it at some point…)
The best example that comes into my mind at this point is the way Bioware moved from Infinity Engine (Baldur’s Gate, Icewind Dale etc) to Aurora Engine (Neverwinter Nights). The fact that they added a third dimension changed everything. They had to double/triple their team. They had to do custom tools to make levels. And they were even more ambitious than that – they wanted the players to be able to make their OWN levels and play online. Basicaly, they spent a few years on the engine alone. But after that… you could with the help of a small team make full games using their NWN engine. And there are people still doing it.
And yet, in NWN the multiplayer part is rather “poor”, you cannot have more than 50-100 players in one area I believe (and I am being optimistic here, I am not sure if most areas can handle more than 10-15 players at a time).
And now… let’s move to the “massive multiplayer” part. If you got here, it means you are way beyond all the problems that were described before :D. Oh, and you may as well add many others that appear only now – in a MMORPG you have a persistent world, interactions you cannot even predict sometimes in the design phase, economy problems, server problems etc.
But if you got here… I guess you are on your way in making the next WOW clone… in about 20 years or so :D. Of course, there are exceptions even here – the guy who made “Love” is an outstanding one. Oh, and a special mention – Wurm Online (there were 2 guys there, I believe).