Sunday, August 1, 2010

Introduction To Volume I

Start at the Beginning
Table of Contents

Volume I is a look backwards to the origins of PC game programming. Although we're not going all the way back to the primordial ooze of x86 assembly and CGA register hacking, we're going back far enough to give you an idea of what it's like to do it all yourself - living with minimal support from the operating system, directly poking and proding at the hardware, writing your own rasterisation routines, and so on. This environment is much simpler, making it easier to learn on and understand. But it'll also put hair on your chest. It's a world without shortcuts - where if you want anything, you'll need to squeeze it out of the hardware with your bare hands. It teaches both the skills and the mindset that you'll need to be a serious game programmer. It's very much a first principles sort of thing.

Little knowledge is presumed. Of course, the more you have, the easier going you'll find things. The most important thing is to take the material slowly and carefully, rather than skimming through; I'm going to make it a point to explain everything as it comes up in detail, rather than just gloss over matters to expedite things. We're going to learn low-level details about the PC hardware, some pretty cool math, and the C programming language, amongst other things. The aim is to be comprehensive and complete. My hope is that a clever but completely uneducated kid would be able to work through this book by themselves on the weekends and come out of it with the skills needed to make the next Quake. You'll need to be able to solve basic algebraic equations, and that's about it.

I love theory but hate learning theory. My preference is to never introduce a topic via a long, dry explanation of its precise semantics; instead, I'll try to explain it as I go in the context of a practical application. Even when I do feel the need to explain something before you see it in action, I'll try to make sure there's always a practical application at least in mind. It's similar to immersion style courses for language learning, which I've always found effective; it's easier to learn something precisely after you have an intuitive understanding of it.

This is primarily a course on code reading, a woefully underappreciated skill. Instead of forcing you to write your own code unequipped with the knowledge of how to do it properly, you'll instead be asked to closely and carefully understand complete, practical code samples. These heavily-annotated code samples introduce and explain most of the key concepts in the book. The size and complexity of the programs presented for reading accelerates quickly; this aggressive immersion is necessary, given the depth and breadth of the material presented, to get the reader up to speed quickly. Everything will be recapitulated in a review section at the end of each chapter; take a day before reading them and they'll reinforce the preceeding material.

This is the beginning of a long, hard journey. Take your time. Take things slowly. We're lucky to live in the age of Google and Wikipedia - research things you don't understand or are curious about. Play around with the code. Have fun. That's what games are all about.

No comments:

Post a Comment