If you find this article contains errors or problems rendering it unreadable (missing images or files, mangled code, improper text formatting, etc) please contact the editor so corrections can be made. Thank you for helping us improve this resource
"Education... has produced a vast population able to read but unable to distinguish what is worth reading." - G. M. Trevelyan
Hello again! As some of you may know, I took a quick "vacation" two weeks and skipped an article. Calling it a vacation is about as far from the truth as it gets, though; in reality I had to skip the article due to my being extremely overloaded with work on Duke Nukem Forever. Right now I'm stuck in what I guess you could call a "mini crunch", since I'm working on some time-critical code that needs to get in immediately. For the past month I've pretty much ignored everything in my life outside of work (including my girlfriend; luckily she understands), and unfortunately that'll continue for a couple more weeks. That's ok; this kind of stuff happens during development. Everybody tends to have a few periods during a project's creation where their life is completely consumed by it, with or without choice. "Crunch time" isn't always just at the end of a project; often it happens in the middle too, and that's what's happening right now for me.
So I missed the previous article, and I almost missed this one as well. Fortunately loonyboi gave me a pleasant reminder as always , and although he said I could pass on this issue as well if necessary, I decided against it. Missing two articles in a row just didn't sit well with me, so I had to write something... unfortunately, I've had no time to spare for it.
So, I'll take this opportunity to put up something that people have suggested multiple times since the series began, to tide you all over (I'll try my damndest to have the next "real" article next time, but for now you'll just have to give me some breathing room... things have been very hectic around here).
I frequently get asked for game programming book recommendations. So today, we have the first installment of the COTC Recommended Reading list. These are in no particular order, just grouped into a few general categories (which are also in no particular order):
Code Complete Author: Steve McConnell Publisher: Microsoft Press ISBN: 1556154844 This book earns its title, covering just about every aspect under the sun relating to software construction. Another title considered "required reading" by many programmers.
Large-Scale C++ Software Design Author: John Lakos Publisher: Addison-Wesley ISBN: 0201633620 You never know when a small project is going to turn into a large one, and when that happens, you'll want to be prepared.
Graphics Gems Volumes I-V Editors: I-Glassner, II-Arvo, III-Kirk, IV-Heckbert, V-Paeth Publisher: AP Professional ISBNs: I-0122861663, II-0120644800, III-0124096735, IV-0123361559, V-0125434553 If Foley & van Dam is the graphics bible, these are additional testaments. More must-haves for anyone seriously interested in graphics programming. Get the money.
The Graphics Programming Black Book Author: Michael Abrash Publisher: Coriolis ISBN: 1576101746 Some of the material in this book may be a bit old (it's mostly collected from articles), but Abrash is one of those guys whose stuff you just have to read if you're a game programmer.
Compilers : Principles, Techniques, and Tools Authors: Aho, Sethi, and Ullman Publisher: Addison-Wesley ISBN: 0201100886 Also known as "the dragon book"; easily the standard compiler construction text. If you're going to write a script compiler for your game, you should have this. Get the money.
Compiler Design in C Author: Allen Holub Publisher: Prentice Hall ISBN: 0131550454 The "big brown book". Very large; less theory than the dragon book and more implementation. Not a replacement for the dragon book, but a highly recommended supplement to it.
Anything written by Knuth, Sedgewick, or the other computer science legends. If you don't know who I'm talking about, do some research and find out. These guys are the masters.
While this is far from a complete list of all the books I'd recommend you read, it does list some of the major ones. If you currently don't have any of the books listed here, these should keep your hands (and your wallet) busy for a while. For those of you who think you can avoid all these and learn the same amount of material from online docs and tutorials, I'd recommend you abandon that line of thinking right now. The fact is good education is never cheap, and books like these are the best kind of education you'll find when it comes to programming (and that includes game programming).
Anyway, I hope this book list will be of service to some of you out there. I'll be back next time to resume our regularly scheduled programming.