101 lines
4.4 KiB
Markdown
101 lines
4.4 KiB
Markdown
---
|
|
title: Michael Abrash's Graphics Programming Black Book, Special Edition
|
|
author: Michael Abrash
|
|
date: '1997-07-01'
|
|
identifier:
|
|
- scheme: ISBN
|
|
text: 1576101746
|
|
publisher: The Coriolis Group
|
|
category: 'Web and Software Development: Game Development,Web and Software Development:
|
|
Graphics and Multimedia Development'
|
|
---
|
|
|
|
# Foreword
|
|
|
|
I got my start programming on Apple II computers at school, and almost
|
|
all of my early work was on the Apple platform. After graduating, it
|
|
quickly became obvious that I was going to have trouble paying my rent
|
|
working in the Apple II market in the late eighties, so I was forced to
|
|
make a very rapid move into the Intel PC environment.
|
|
|
|
What I was able to pick up over several years on the Apple, I needed to
|
|
learn in the space of a few months on the PC.
|
|
|
|
The biggest benefit to me of actually making money as a programmer was
|
|
the ability to buy all the books and magazines I wanted. I bought a lot.
|
|
I was in territory that I new almost nothing about, so I read
|
|
*everything* that I could get my hands on. Feature articles, editorials,
|
|
even advertisements held information for me to assimilate.
|
|
|
|
John Romero clued me in early to the articles by Michael Abrash. The
|
|
good stuff. Graphics hardware. Code optimization. Knowledge and wisdom
|
|
for the aspiring developer. They were even fun to read. For a long time,
|
|
my personal quest was to find a copy of Michael's first book, *Zen of
|
|
Assembly Language.* I looked in every bookstore I visited, but I never
|
|
did find it. I made do with the articles I could dig up.
|
|
|
|
I learned the dark secrets of the EGA video controller there, and
|
|
developed a few neat tricks of my own. Some of those tricks became the
|
|
basis for the Commander Keen series of games, which launched id
|
|
Software.
|
|
|
|
A year or two later, after Wolfenstein-3D, I bumped into Michael (in a
|
|
virtual sense) for the first time. I was looking around on M&T Online, a
|
|
BBS run by the Dr. Dobb's publishers before the Internet explosion, when
|
|
I saw some posts from the man himself. We traded email, and for a couple
|
|
months we played tag-team gurus on the graphics forum before Doom's
|
|
development took over my life.
|
|
|
|
A friend of Michael's at his new job put us back in touch with each
|
|
other after Doom began to make its impact, and I finally got a chance to
|
|
meet up with him in person.
|
|
|
|
I talked myself hoarse that day, explaining all the ins and outs of Doom
|
|
to Michael and an interested group of his coworkers. Every few days
|
|
afterwards, I would get an email from Michael asking for an elaboration
|
|
on one of my points, or discussing an aspect of the future of graphics.
|
|
|
|
Eventually, I popped the question—I offered him a job at id. "Just
|
|
think: no reporting to anyone, an opportunity to code all day, starting
|
|
with a clean sheet of paper. A chance to do *the right thing* as a
|
|
programmer." It didn't work. I kept at it though, and about a year later
|
|
I finally convinced him to come down and take a look at id. I was
|
|
working on Quake.
|
|
|
|
Going from Doom to Quake was a tremendous step. I knew where I wanted to
|
|
end up, but I wasn't at all clear what the steps were to get there. I
|
|
was trying a huge number of approaches, and even the failures were
|
|
teaching me a lot. My enthusiasm must have been contagious, because he
|
|
took the job.
|
|
|
|
Much heroic programming ensued. Several hundred thousand lines of code
|
|
were written. And rewritten. And rewritten. And rewritten.
|
|
|
|
In hindsight, I have plenty of regrets about various aspects of Quake,
|
|
but it is a rare person that doesn't freely acknowledge the technical
|
|
triumph of it. We nailed it. Sure, a year from now I will have probably
|
|
found a new perspective that will make me cringe at the clunkiness of
|
|
some part of Quake, but at the moment it still looks pretty damn good to
|
|
me.
|
|
|
|
I was very happy to have Michael describe much of the Quake technology
|
|
in his ongoing magazine articles. We learned a lot, and I hope we
|
|
managed to teach a bit.
|
|
|
|
When a non-programmer hears about Michael's articles or the source code
|
|
I have released, I usually get a stunned "WTF would you do that for???"
|
|
look.
|
|
|
|
They don't get it.
|
|
|
|
Programming is not a zero-sum game. Teaching something to a fellow
|
|
programmer doesn't take it away from you. I'm happy to share what I can,
|
|
because I'm in it for the love of programming. The Ferraris are just
|
|
gravy, honest!
|
|
|
|
This book contains many of the original articles that helped launch my
|
|
programming career. I hope my contribution to the contents of the later
|
|
articles can provide similar stepping stones for others.
|
|
|
|
—*John Carmack*\
|
|
id Software
|