How to Make Games

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.

A not-so-impressive shoot 'em up with time control mechanics.

A not-so-impressive shoot ‘em up with time control mechanics.

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 2GameSalad, or StencylThese 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[9]‘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.

After the book is finished, pick up Pygame. The library is simple enough that you should be able to understand it by just looking at a few examples and online tutorials.

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.

A screenshot from my dodgeball-themed fighting game.

A screenshot from my dodgeball-themed fighting game.

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.

Tagged , , , , , , , , , , , , , ,

6 thoughts on “How to Make Games

  1. gareeth says:

    If games are your passion and developing games in an of themselves is enough they are as easy to develop as write about but once you are ready to have people actually play your game it gets a lot more complex pretty fast. I can conceptualize better games than I play sometimes but none of my indie gamer developing friends have yet to actually get a game up and running without it costing them more than they can bring in. I suppose if I was honest I am as much a chicken about development as I am about writing. That is if you take a game you loved in your mind and actualize it and get it up for the world to possibly reject the level of heartbreak is similar to in writing.

    That being said it’s always good to learn new skills so whether I ever actually fully flesh out the most awesome game ever invented (since your game like your dog is always the best in the world) learning how to do so is worth it in itself.

    • Matt says:

      Thanks for taking the time to read my post and comment.

      I don’t really understand what you mean when you say it’s “costing them more than they can bring in.” Are you talking about monetary costs? Because you can make games for free, even if they don’t live up to your expectations. If you’re talking spending your own time and effort, then that makes more sense.

      I agree 100% when you talk about the fear of failure stopping you from trying in the first place. It’s so easy to tell yourself that you could make a better game, you’re just not in the mood to do it. We choose to be theoretically superior instead of actually comparable. I wish I had a solution to this, but will-power seems to be the only solution.

      And the comparison of your game to your dog (or your kid) is spot on. They’re pieces of your heart external to you, so your ability to protect that vulnerability is limited. The major difference between your art and your dog/kid though is that people are much more likely to judge and criticize the former rather than the latter.

      • gareeth says:

        Yes, I meant if you actually put them up. Seen the heart break of that a few times with games (not my own) that seem as good or better than those that do make money. Like any creation you put out into the world for it to judge there’s an element of courage involved and risk totally aside from the financial cost though but that often winds up being the measure of how baldy the world rejected your game.

  2. jesterjoe says:

    I can attest to the difficulties of game development. I started off writing C++ powered dice games in a linux text editor. I have since been taken by the pleasures of the more graphic based side of development, while using Blender. Recently, being inspired by Dark cloud, I attempted to design a spiffy little tool that would let me place my models on a generated plane (a map editor). Python was forgiving, but not enough.

    I would actually like to know your opinion on easy to use mediums, unity being one that you mentioned. Does using thses mediums make a game less than a game, or can it be sanctioned as a useful tool. I guess I am asking whether these shortcuts are a good thing.

    Great post.

    • Matt says:

      Those “shortcuts” are incredibly empowering. Game should not only be made by huge studios or expert programmers, and tools like Unity are the best opportunity for the everyman to do so.

      Consumers don’t care how a game was made; they care about the final product. Those tools have a huge benefit in that they make distribution really easy. Sure, actually programing a game in pygame from scratch may be more impressive to the technically minded, but I have yet to find a perfect solution for distributing Python games. In the end, the game is all that matters.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 158 other followers

%d bloggers like this: