Disclaimer: I suck at making games. The screenshot below is from a prototype I’ve been working on over spring break. It took me two days to produce that crap. My drawing abilities are even worse than my poor programming skills. Outside of a few friends, no one has played any of my games since I do not think they are good enough to show to the world. But do you know what you call the guy who makes crappy games? A game developer.
For years, I was just a wannabe. In middle school, I started visiting gamedev.net and doing the tutorials on cprogramming.com but gave up once I got to DirectX and imposing function calls like
int MessageBox(HWND hWnd, LPCTSTR lptext, LPCTSTR lpcaption, UINT utype);. Through high school, I made a few more attempts at getting into game development, but they all stalled when I could not build my overly ambitious ideas.
Then a few semesters ago, I grew tired of never producing anything, so I learnt how to use the XNA framework and made a Pong clone. From there, I continued making small, simple games and learnt to use some new libraries like LibGDX.
Making games has become a passion of mine, but I get depressed knowing that if I had better guidance my skills could be years ahead of their current state. So I have written this piece to give advice to newbies like the past version of myself. This advice may not be valid for everyone, but in a world of 7 billion, there’s at least a few who will be aided by this.
Anyway, here’s a good path to making games:
1. Realize having ideas is not important. No one is going to build your ideas for you. Several writers better than myself have explained why your ideas are inconsequential, so there’s no need for me to do a worse job at explaining it. Go read these until the point sinks in.
An important addendum is you may not even have substantial game ideas, even if you claim you do. 12 year old me was going to make a game where the protagonist becomes the villain after being betrayed by his best friend. That’s not a game idea, but rather a (derivative) narrative. The same situation exists if you want to make a game like Unreal Tournament but with a gun that shoots black holes. That’s a feature, not a full game. Quite frequently, your “revolutionary” ideas aren’t even strong enough to build a full game.
If you’re willing to accept that your game ideas are neither great nor consequential and you still want to make games, then continue to step 2.
2. Start developing with GameMaker, Construct 2, GameSalad, or Stencyl. These are easy-to-use programs that let you build games without any coding knowledge. All of them have free editions that are more than sufficient for beginners.
“But,” you may ask, “do any real developers use those programs? I want to do real game development, not play around with drag-and-drop crapware.” Yes, all four tools have limitations, and no AAA titles are made with them. But those AAA games require years of work, hundreds of professionals with years of experience, and multi-million dollar budgets. How incompetent do you think game studios are if you believe you and a small team of newbies is going to make a better (or even comparable) looking game with a fraction of the ability and resources? You are not going to make Doom 4.
But you can still produce something great. To The Moon is way better than 90% of the games on store shelves, and it was made with RPG Maker (another good choice if you are willing to limit yourself primarily to a single genre). The first rule of game development is when dealing with technology, expend the least effort possible.
This goes against everything you are taught in school, but taking the easy route is usually the best solution. There is no need to create your own engine and graphics library to make a Tetris clone. Even with all that work, you are still aided by the operating system and computer hardware. If you really want to say you built a game from scratch, then grab some raw silicon and start reading up on Von Neumann architecture. Although your artwork and design should be to the highest standard, your tools should be as simple as necessary to get the job done.
“Which one should I pick?” Spend 15 minutes researching. Start Googling. If you haven’t decided after 15 minutes, just pick one; there’s no wrong answer. The second rule of game development is you know nothing until you have tried it. Starting is more important doing research.
Once you have made your decision, stick with that tool for awhile, at least until you have finished one game. Changing tools just wastes your time re-learning the basics. In all aspects of game development, implementations are only a small part of what you need to comprehend (e.g. For programmers, understanding game loops is more important than the syntax of C++.)
Unity is another available option to use here. The engine is easy to use, powerful, and has a great community around it. However, Unity is aimed at 3D game development (although 2D is possible). The third dimension just adds unnecessary complications for newbies. There are just too few beginner-level game ideas that require 3D; maybe move on to Unity after you have some practice in 2D.
Regardless of your choice, start building something, but keep your expectations in check. Think of your favorite game. It is easy to forget, but literally every piece of the world–every rock, every behavior, every sound effect–had to be crafted by a developer. Once you start making games, you will understand how much work is involved, but right now it is easy to be overly ambitious. A Space Invaders clone is a perfectly acceptable initial effort.
And don’t be put off if your artwork is poor. (I clearly wasn’t.) Opengameart.org has a solid collection of free art, or you can just make “programmer art”. You’re not going to sell your early games, and games can still be fun even if they hurt to look at.
3. Focus on a specialty. After step 2, ask yourself, “Do you enjoy making games?” Liking games does not mean you will enjoy game development, and it is very easy to lie to yourself. Day‘s advice on becoming a professional gamer is very applicable here:
“Make sure you that you really enjoy it at the most basic level. For instance, there are many people who want to be amazing authors, who want to have New York Times bestselling books…but that’s the end goal. If you want to be a really good author, you need to enjoy writing sentences, not enjoy having your book as #1 on the NYT bestseller’s list. You need to enjoy the most basic, fundamental act of participating in it. There’s a lot of people out there who want to become a full time pro gamer because they like the idea of being good, they like the idea of winning a tournament, but the individual act of splitting your workers, or macroing, or even just playing a game of Starcraft 2, they don’t like as much.”
But if you really love producing art or scripting AI, then start going deeper into the practice of game making. Keep making games, but also pick a specialty that you enjoy–2D art, 3D modelling, programming, animation, etc.–and get good at it. Eventually your skills will make you a valuable asset to any team or company.
As a programmer, I can only give specific advice in that area. If that doesn’t interest you, skip to step 4.
Do not start with C++. Begin with Python. Remember rules 1 and 2.
As far as tutorials go, I recommend Learn Python the Hard Way. Zed Shaw never lets you get off easy. Programming is supposed to be hard; there is no way around that. At the same time, celebrate your accomplishments. You’re a motherfucking programmer now.
One day, you may find that Pygame’s performance is severely hurting your FPS rate or that you want to port a previous game to iOS. Only when that happens should you branch out to different languages. Decisions from need are always superior to decisions based on theoretical possibility.
4. Pick projects that push you. Earlier I said not to be too ambitious, but that becomes less of a problem once you understand what it takes to build games. After getting a little bit of experience developing, I found that I wasn’t pushing myself hard enough. After re-making Pong, my next project was Breakout, and the only substantial technical difference between the two is a level loader. While you shouldn’t plan on going from Pong to Starcraft, there is middle ground between easy and impossible.
For programmers, a good test is picking the hardest project that you can mentally break down into its parts. You may not know how to explicitly create all of those parts, but you should understand what is involved in all of them. If you want to make a 2D RPG, you should know that you will need to create player and enemy classes, save a map of tiles into memory, render those tiles to the screen with a camera, etc. If you are thinking about making a multiplayer game but have no idea how networking even works, do not jump straight into producing that game.
5. Have fun.
The main goal with the process above is to make game development approachable. Some artistic mediums are easier than others to get started in. Writing only takes pen and paper. Mediocre writers like myself can just start blogs with a few mouse clicks. On the other hand, filmmaking requires at least a few friends and a camera.
Game development can seem much more like filmmaking, because game studios employ so many talented specialists. But if you are willing to start small, making games is almost as easy as writing about them.