Saturday, July 31, 2010

Forward

When I was young, there were few things I wanted to do more than make computer games.

I was kind of a dorky kid.

But back then, making computer games wasn't really practical for a kid. Compilers alone would set you back $100. There was no internet - not the way there is now. Scraps of knowledge were passed along from hacker to hacker. Excellent books existed - books like André LaMothe's Tricks of the Game Programming Gurus and Michael Abrash's Graphics Programming Black Book. But they were hard to find, hardly comprehensive, and never aimed at true beginners. You needed knowledge of C, and PC hardware, and assembly language, and advanced math...it was hard to know where to start.

Things are dramatically different now. Anyone can download Microsoft's XNA libraries and a freeware version of Visual Studio and learn to make a game in a couple of hours. All the details are abstracted over. Loading and drawing an image takes a few clicks of the mouse and a couple of lines of code, and from there you can have a finished game in hours.

But things aren't that simple, really. Later in this book I'll devote an entire chapter to what XNA lets you do in seconds. True, XNA hides all the challenge from you. But also all the joy.

Because, yes, shifting bits and bytes around is a joyous game on its own - especially when it results in the creation of something as beautiful as a computer game. And while I have nothing against the abstraction XNA is trying to provide, sooner or later these kids are going to hit a wall. XNA can't make everything easy, and unless they really understand the problems one encounters when making a game - expressing oneself in an interactive medium, really - they're going to feel limited, and their games are going to feel limited.

That's why I'm writing this book: I want to write the book that I always wished was there for me as a kid - a book that will help someone else make their pixelated dreams glow. And I want it to be freely available online, so anyone - even kids without a credit card - can learn from it.

This book is set up like a university program, with each volume corresponding to a year of study. The first volume is like a survey course, designed to get you up to speed and fluent in the subject as quickly as possibly. The two middle volumes are exegetical courses, where we study in-depth two "great works" - the source code to Doom in Volume II, then Quake in Volume III. The fourth volume is like an independent study project, where - with assistance - you'll be constructing a modern game engine of that magnitude on your own.

Computer game programming is probably the hardest type of programming there is. If you're one of the developers behind the Unreal Engine 3, you need to write code that never crashes, runs on three or more platforms, is highly extendable by licensees, is agressively optimised, and uses the most cutting edge technology and techniques known. And you have to do this under a strict deadline, working upwards of 80 hours a week.

But game programming can also be intensely satisfying, imaginative work. Creating a game is like playing jazz - technical, but soulful. I want to saturate the world with games made by dreamers, brilliant in their conception and immaculate in their execution. And it's only possible if the secrets behind making games aren't hidden away.

So here they are. Pick them up. You'll need to enthusiasm, some dedication, and some smarts. They are your spades and hoes. Carve into the earth, plant your inspiration, and from the ground something beautiful will grow.

No comments:

Post a Comment