"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):
[size="3"]Design and Structure
Design Patterns : Elements of Reusable Object-Oriented Software
Authors: Gamma, Helm, Johnson, and Vlissides
This book is a necessity for every programmer, period. I don't care if you don't have the money. Get the money.
Author: Steve McConnell
Publisher: Microsoft Press
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
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.
Computer Graphics : Principles and Practice, 2nd ed.
Authors: Foley, van Dam, Feiner, and Hughes
The graphics bible. If you're a game programmer, you must own this book. Get the money.
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
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
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
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.
Until next time,
- Chris"Kiwidog" Hargrove is a programmer at 3D Realms Entertainment working on Duke Nukem Forever.
Code on the Cob is (C) 1998 Chris Hargrove.
Reprinted with permission.