It’s the weekend. You’re on your favorite MMO, just about to reach the quest objective, and your character suddenly plunges through that one tiny hole between the landscape and the stairs. You’re doomed to wait for customer service, as you consider how this wouldn’t have happened if you had written the collision detection for the game instead.
Determined not to let their inferior coding ruin your weekend, you tab over to your free trial of Safari. With over 30,000 titles and only thirty minutes to read, what do you choose? It is the weekend, after all; maybe you feel more like a bit of hobby coding instead of studying for the coming week’s tasks. Perhaps you just felt like taking some personal time to read, but you are finding it hard to concentrate when you know your child could be so much happier with her rote memorizations for school if you could think of some way to make those times tables and Revolutionary War dates seem relevant to a nine year old. Maybe you just logged on to Safari because you are looking for a personal coding project after a long week of working on everyone else’s code – preferably something truly interesting and possibly in a language you aren’t using 8 hours a day, Monday through Friday.
No matter whether you started looking through Safari for an interesting read, a way to improve your skills, or a side project, there is one topic that might comfort you in any of those situations: game programming.
Why game programming?
You may have heard the horror stories of what game programming can be like: long hours; multi-day crunch sessions; abysmal project management; almost constant rework; over-budget, delayed, or even canceled titles; and an often-unappreciative audience. While some of that can be true of the mainstream game industry, many games are not triple-A titles that require the large staff and schedule that spawn these stories. A small, Space Invaders-style game can be built by a single programmer with free graphics in a matter of hours.
For many purposes, simple games are more than enough, and as anyone that has played Minecraft can tell you, the latest graphics aren’t everything. Want to make those multiplication tables and Revolutionary War dates feel relevant to a nine year old? What if those dates and products are key codes that unlock treasure chests in a quick Java game, playable as her favorite movie characters? Have an idea for the mobile game that will become the new Angry Birds? How about building a foundation for it yourself and using your quick prototype to recruit the artists and funding you want for your new project. Want to get a job in the game industry despite all of the rumors but don’t know how to break in on one of those game mods that are supposed to be so good for your portfolio? What better way to understand the concepts than to build a quick game of your own?
Your first game
How does one build a game of one’s own, whether as a prototype, learning aid, or good career move? Depending on your level of experience and preferred programming languages, any of Safari’s 8,020 books on the subject might be a good place to begin, but I would like to introduce you to my personal favorite: Beginning Java SE 6 Game Programming, Third Edition by Jonathan S. Harbour. Written by a professional-game-programmer-turned-private-university-game-programming-instructor, this book can take a virtual non-programmer to the completion of a Asteroids-style game. Since the focus is Java and the games are built as web applets, they can be developed and released to the public for a price even your family should approve of: free. Detailed code samples (including complete source code) abound in the text, and virtually every game is built in a way that is easy to extend or customize to fit your preferences. Since the author’s background is in the actual game industry, the book contains general insights and resources that benefit from his experience as an insider. Additionally, because his target audience is new to game programming, the book contains helpful (read free) resources that can be very useful for developing games without requiring a major investment of time and money to break into the field.
“Java is for newbies; ‘elite’ programmers use C++,” you say. While I might be offended at your disdain for my favorite programming language, Beginning Game Programming, Fourth Edition focuses entirely on C++ and DirectX programming.
Maybe you want to try something a bit more involved, like Jonathan Harbour’s Sams Teach Yourself Android Game Programming in 24 Hours or even Multi-Threaded Game Engine Design.
Game development for kids
Advanced topics applicable to any programmer
Game programming has lessons to teach that don’t often come up in a discussion of professional development. Efficiency, controlling frame rates, multi-threading, and object oriented programming are all standard enough concepts in game programming, and game programming can be an excellent way to gain experience with these practices.
Well, it looks like customer service just got back to your ticket about your poor character stuck beneath the world, so I arguably should expect to lose you any moment now to your quest. Whether you started today for a break from a boring customer service ticket, an interesting read, a way to help your child, a way to progress your career, a hobby project, or just a way to hone your skills, you should find game programming an ideal vehicle for your endeavors. You may have also found a way to prove you really would have done a better job on the collision detection.
Here are the first four single-coder, released-to-the-public, educational games I made after studying Beginning Java SE 6 Game Programming, Third Edition: