It’s time for you to make a game.

Hi, folks!

In the past year (in which I hadn’t been blogging much), I learned to program. I don’t mean that I learned complex sorting algorithms and the most elegant solutions to NP-hard problems that keep the Big-O costs of my programs low while solving for the trillionth digit of pi.

No sirree,  I learned to program games. What makes a game tick? How do the different elements of a game go together? What special things can I add to my game to make it more complete, more interesting, more engaging and fun for a player? These are complicated questions that have more to do with thinking about games than programming them. There are TONS (I mean seriously… tons) of examples of well-made games, starting with Pong and working your way up to the newest GTA game that everyone’s raving about.

If you’re good at putting two and two together, this post (and others in the future like it) are going to go into the nitty-gritty of game development. Today, I’m afraid I’m not going to get too deep into things, because I’m going to assume you know absolutely nothing about the development of games and the only reason you’re still reading this is out of some sick desire to learn. Sicko.

I’m not going to be your teacher, folks. I suck at teaching. I’m great at extrapolating on ideas that people have taught me (which is, indeed, the purpose of this post). But a teacher I ain’t. I teach kids piano. That’s about it.

Who WILL be your teacher, then?

THIS GUY! Invent Your Own Games with Python is the bible of learning to program games. There are tons of gamedevs out there who would disagree with me, but let me defend my wild and baseless assumption! Python is easy. Python is a programming language for people who have no idea how to program. It’s beautiful and simple and intuitive and if you’re scared of learning to program, Python will ease you into the kiddie pool side of writing code until you’re banging out complex permutative analysis on delta-wave brain data taken from sleeping chinchillas. People used to learn Java: “You don’t program? Learn Java.” Essentially. Nowadays, people are learning Python. No crashes when you forget semicolons, no pointers (*shudder*), not a lot of the ickiness that is present in languages like Java, C++ and Perl. (Though Perl’s nice, too.)

So now Python is simple and easy to understand for people who’ve never programmed before. Big flippin’ whoop. To understand game development, it takes WAY more than a basic knowledge of a programming language! Well, welcome to this fantastic book I’ve just linked you. It’s free online (though I definitely recommend buying it, if just to support the author), and it takes you through the basics of programming in Python by making games. YOU MAKE GAMES. The first game you make takes like 10 lines of code (not a lot. It’ll be done before your coffee gets cold). And they get progressively more awesome until you can make complicated text-based versions of well-known board games. Then there’s a 2nd book on making games with graphics! That one’s harder to understand, but it’s still very well-written.

Now, the benefits of these books aren’t exactly self-evident, so let me elaborate a bit: they’re shockingly well-written. Each line is explained in a way that makes me go, “Ohhh, NOW I get it.” If you are looking through code and you get to a point you don’t understand, you can literally scroll down and he explains it, what it does, why it works. It’s brilliant for getting a solid understanding of pretty much the ENTIRE language. The second thing that makes this book so great is its conventions. What do I mean about conventions? Well, there are many standards for the way code is organized. Computers don’t read code, they read 0’s and 1’s. HUMANS read code, and we have to do it all the time, whether we’re continuing a project we’ve made or reviewing a project of somebody else. This means, of course, that your code can be perfectly readable by a computer while being totally illegible to humans. Your definitions and methods could be in the wrong place, you could have random variables called “q” and “thisVariable” and “I_LOVE_COOKIES” and the computer will deal with them just fine as you in a fit of rage chuck your computer monitor out of the 4th-story window of the cubicle you work in. Invent Your Own Games with Python teaches you how to make clear, well-organized, concise code that is easy to read and work with. Not only that, but if you decide this is a passion of yours (like I foolishly have), prospective employers will look at your code and know that you have an idea of what you’re doing. Always a plus.

The third big advantage to this book is that by the time you’re finished with it, you’ll have programmed upwards of 15 small games, ranging from “Guess the Number” to a text-based game of Reversi.  Fourth advantage: it gives you well-written tools to figure out your own games. From the code of Reversi (which he provides for you), I discovered everything I needed (minus a few key definitions I had to work out myself) to make a text-based Minesweeper game. I coded a game all by myself (kind of)! I felt awesome. And you can feel awesome too!

I urge you (beg you, even) to check out this book. The first chapters of installing Python and making your first program are easily accomplished in 10-15 minutes. It’s a small price to pay for the knowledge you’re going to be getting out of it.

Here’s why: if you read my blog, you like games. You LOVE video games (or you’re my mom who supports me in everything I do. Love you, mom!), and you play them a lot. If you take half of my advice, you’ve probably run into a bunch of games of varying genres that stand out in the industry, and you have begun to see the individual parts of games that make them great.

You’re the kind of person who should develop games.

Many game developers do not play a lot of games. It makes them much less successful than they could be, because they’re out of touch and they don’t know the joy of playing a truly good game (or a ton of good games). They also don’t know the industry very well.

And then there are people like you, dear reader, who play games but do not program them. Even if you don’t become a gamedev in your own right, learning a bit about how games are programmed will give you an immense appreciation for them, and in my case it’s helped me enjoy looking at them and playing them on a much deeper level. It is one thing to know a watch tells time. It is quite another to understand the intricate beauty that allows it to do so. Time to start understanding. If there is one central credo of this blog, it is to help other people to better understand the beauty of games.


P.S. Don’t forget to come back tomorrow! The raffle starts and you DO NOT want to miss a single day!


About Isaac Smith

I write about music, technology, video games, and probably many other subjects that don't bear mentioning here. Either way, most of it's worth reading, and you may even enjoy yourself!

Posted on November 8, 2013, in Miscellaneous and tagged , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

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

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

Google+ photo

You are commenting using your Google+ 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 )


Connecting to %s

%d bloggers like this: