netlib.narod.ru< Назад | Оглавление | Далее >

Предисловие

Я начал программировать в школе на компьютере Apple II, и почти все мои ранние работы были сделаны для платформы Apple. После получения образования быстро стало очевидно, что работа на рынке Apple в конце восьмидесятых годов приведет к финансовым проблемам. Поэтому я был вынужден очень быстро перейти к среде Intel PC.

Все то, что я за несколько лет узнал об Apple, мне требовалось за несколько месяцев изучить заново, применительно к PC.

Для меня самой большой выгодой от зарабатывания денег программированием была возможность покупать все желаемые книги и журналы. Я купил их много. Я очутился на абсолютно новой для меня территории, и поэтому читал все, что попадало в мои руки. Анонсы, передовицы и даже рекламные объявления содержали информацию, поглощаемую мной.

Джон Ромеро познакомил меня со статьями Майкла Абраша. Хороший материал. Аппаратные средства машинной графики. Оптимизация кода. Знания и мудрость для честолюбивого разработчика. Кроме того, они легко читались. В течение долгого времени моим личным приключением был поиск первой книги Майкла «Zen of the Assembly Language». Я высматривал ее в каждом посещенном мною книжном магазине, но никак не мог найти. Мне пришлось обходиться найденными статьями.

Благодаря им я узнал тайны видеоконтроллера EGA и создал несколько собственных искусных трюков. Некоторые из них легли в основу серии игр Commander Keen, с которой начиналась id Software.

Годом или двумя позже, после Wolfenstein-3D, я впервые столкнулся с Майклом (в виртуальном смысле). Я был обозревателем на M&T Online — BBS, запущенной издателями Dr. Dobb's до начала Интернет-бума, — когда увидел несколько сообщений от него. Мы торговали электронной почтой, и пару месяцев, пока разработка Doom не заняла все мое время, играли роль команды гуру на форуме посвященном графике.

После того, как началось шествие Doom, друг Майкла на его новой работе помог нам снова связаться друг с другом, и я наконец получил шанс встретиться с Майклом лично.

В тот день я охрип, объясняя Майклу и заинтересованной группе его коллег все тонкости Doom. После этого каждые несколько дней я получал от Майкла электронные письма с просьбой уточнить один из моих пунктов, или с обсуждением различных аспектов будущего компьютерной графики.

В конечном счете я тоже задал вопрос — я предложил ему работу в id. «Только подумайте: возможность не отчитываться ни перед кем, писать код целый день, начать с чистого листа бумаги. Шанс для программиста сделать правильную вещь.» Это не сработало. Я был упорен, и примерно годом позже наконец уговорил его снизойти и посмотреть на id. Тогда я работал над Quake.

Переход от Doom к Quake был огромным шагом. Я знал, где хочу оказаться в конце, но не представлял полностью путь к намеченной цели. Я перепробовал огромное количество подходов, и даже ошибки многому научили меня. Должно быть, мой энтузиазм оказался заразным, поскольку Майкл принял предложение работать вместе.

Последовали героические дни программирования. Было написано несколько сотен тысяч строк кода. И переписано. И переписано. И переписано.

Оглядываясь назад, я испытываю недовольство различными аспектами Quake, но редкий человек не признает сразу технический триумф этой игры. Мы приковали внимание. Несомненно, через год я найду новые перспективы, которые заставят Quake съежиться и выглядеть неуклюжим, но в настоящее время он прекрасно выглядит и чертовски хорош для меня.

Я был очень счастлив предоставить Майклу возможность описать многие из технологий Quake в цикле журнальных статей. Мы многое узнали и, надеюсь, сумеем чему-нибудь научить.

Когда люди, не являющиеся программистами, слышат о статьях Майкла или о том, что я предоставил исходный код, я наталкиваюсь на недоуменный взгляд: «Зачем вы делаете это?».

Им этого не понять.

Программирование — это не игра с нулевым итогом. Если вы обучаете чему-то других программистов, ваши знания не уменьшаются. Я счастлив предоставить свои работы для общего пользования, поскольку делаю это из любви к программированию. Феррари — это только взятка, честно!

Эта книга содержит многие статьи, которые помогли мне начать мою карьеру программиста. Я надеюсь, что мой вклад в содержание последующих статей предоставит такие же начальные ступени для других.


Джон Кармак
id Software


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz