Michael Abrash's Graphics Programming Black Book (<a href="http://www.amazon.com/Michael-Abrashs-Graphics-Programming-Special/dp/1576101746" rel="nofollow">http://www.amazon.com/Michael-Abrashs-Graphics-Programming-S...</a>) includes a good sized chunk written about Quake as it was being developed. Even though the book is now about fifteen years old I still count it among my favorite programming books because it is the only one I've found that decently narrates the mindset of optimization, of turning a problem on its head in order to find a better solution.<p>Because the book is essentially a series of collected magazine articles the section on Quake development will have one chapter that reads "hey, this is what we're going to do!" followed by "well, that didn't work, but this does!". One important aspect of post-mortems and development journals that I find is frequently missing is a detailed look at what didn't work technically and why, which it has in spades.<p>edit: The book is also available as a free download: <a href="http://www.drdobbs.com/high-performance-computing/184404919" rel="nofollow">http://www.drdobbs.com/high-performance-computing/184404919</a>