Каждый день я сидел с журналами, книгами и мануалами, встраивая знания о PC в свой мозг, но из книг всего не почерпнешь да и руки чесались писать код, а не переворачивать страницы. Выучив основы, я понял, что проще развиваться на настоящих проектах, так что взял одну из старых игр компании и портировал ее на PC при помощи языка Pascal, которым я овладел в колледже Сьерры. Pascal не лучший выбор для игр, но он быстрый, простой и рабочий. Я не собирался менять дизайн игры, портируя ее: передо мной стояла другая задача как можно быстрее изучить технологию. Когда я показал ее Бобу Нэппу, редактору Big Blue Disk, тот обрадовался: «О, игра! Наши пользователи обожают игры!» Так что я учился на портах игр для Big Blue Disk.
Через месяц я выкопал игру Twilight Treasures я продал ее Nibble в 1986-м, и портировал на PC с помощью ассемблера и Pascal. Всю логику игры я написал на Pascal, а графику на ассемблере процессора 8086, чтобы картинка отрисовывалась быстрее. Игра попала в следующий выпуск Big Blue Disk. Еще, чтобы расширять познания, я создавал для этих дискет программы-инструменты. Чем больше я писал, тем быстрее учился. Я поставил цель написать игру полностью на ассемблере. Тогда, разговаривая с машиной на одном языке, я смог бы перейти к большим проектам для особого подразделения. Конечно, редактора Big Blue Disk радовало все, что я приносил, но, к моему удивлению, другой редактор предложил мне притормозить.
Я понимаю твой энтузиазм, но скоро они начнут ожидать от тебя такого по умолчанию, сказал он.
Я врубил хеви-метал и переключился на другие дела в основном писал обзоры игр и статьи, которые тоже выходили на дискетах.
Одним из самых важных людей в команде Big Blue Disk считался сорокапятилетний программист Джордж Леритт, специалист по ассемблеру 8086. Спустя месяц работы я, конечно, тоже выучил ассемблер, но в моих знаниях о PC все еще имелись белые пятна. Однажды я уперся в стену, пытаясь написать инструмент: мне не хватало какой-то важной технической информации о PC, и я не знал, как решить эту проблему. Естественно, я спросил Джорджа.
Понятия не имею.
Да ладно тебе. Такие вещи ты должен знать.
Прости, но нет.
Где я могу найти больше информации? Это программа должна выйти на твоей дискете. Будет круто.
Не знаю, что еще тебе сказать.
Я решил, что он лжет. Сперва не понял, почему он закрылся, но потом осознал, что я в два раза младше него и врываюсь на его территорию. Возможно, он меня опасался, хотя я даже не собирался писать для Big Blue Disk. Программированием я интересовался только ради игр. Может, он просто хотел вывести меня из себя.
Через два дня Джордж подошел ко мне:
Я нашел одну программу кажется, это то, что тебе нужно.
Круто! Можно посмотреть на код?
У меня его нет.
Но мне нужно знать, как она работает!
Слушай, я просто нашел ее.
Конечно, потом обнаружилось, что эту программу он написал сам. Джордж знал, что мне нужно, но рассказывать не собирался. В итоге я зарылся в компьютерные журналы, нашел там решение и закончил программу. Позже я наткнулся на Боба Нэппа и рассказал ему обо всем.
Это просто смешно. Я для вас стараюсь.
Вместо того чтобы защитить меня, Нэпп вернулся с новостями:
Новое правило. Ничего не спрашивай у Джорджа.
Чего?
Не задавай Джорджу никаких вопросов.
Меня это поразило, но не остановило. Я был готов: в прошлом месяце во время спора с Джорджем я закончил для Big Blue Disk игру Pyramids of Egypt полностью на ассемблере. Я чувствовал себя экспертом в архитектуре PC.
Мы с Лейном собрались вместе выпустить первую большую игру особого подразделения: Eskimo Jo, наш клон Bomberman на льду. Но через две недели мы получили новое сообщение: наш отдел закрывается. Отныне все мое время принадлежало Big Blue Disk: я создал спрос на контент, который требовалось удовлетворять, а Лейна переводили обратно в Softdisk G-S. Мы пали духом.
К концу первого года в компании я изучил PC, но теперь меня обязали помогать отделу, чей зануда-лид запретил мне задавать ему вопросы, хотя я пытался улучшить его же продукт. Я ожидал ровно противоположного. Я хотел делать игры не такие, как мои прежние проекты для Apple II, а большие, которые пишутся годами и выставляются на полках магазинов. Ради них Эл меня и нанимал, но, даже овладев PC, я так и не приблизился к мечте.
Спасибо за все, Эл, сказал я. У вас тут хорошо, я провел с вами год, изучил PC, сделал для вас тонну контента, но теперь я ухожу. Я хочу делать игры.
Погоди, Джон. Мы можем все обсудить. Я не думаю, что тебе нужно уходить
Я бы с удовольствием остался, но если я не буду делать у вас игры, то уйду в LucasArts.
Ни с кем из игрового отдела компании Джорджа Лукаса я не связывался, но это был первый пункт в моем списке планов Б.
Давай посмотрим, что я могу для тебя сделать. Свяжусь с тобой через неделю.
Через несколько дней Эл вернулся.
Как насчет новой ежемесячной дискеты с играми?
Делать по игре в месяц невозможно. Ну, если вы не хотите получать посредственные вещи.
Все остальные наши подписки ежемесячные. А если раз в два месяца?
Два месяца самое то. Будет просто идеально, если у меня еще и появится своя команда: художник и второй программист.
Я знал, что прошу многого: создать отдел из четырех человек, а не из одного (еще требовался управляющий редактор так в Softdisk называли продюсеров), но я знал, что с командой смогу добиться большего, чем в одиночку.
У Эла ушло на это несколько месяцев, но все срослось. Он пришел ко мне с улыбкой до ушей: «Приготовься набирать команду в PCRcade!»[20]
Он верил в меня и понимал, как важны игры. Я пришел в восторг и предложил Лейну место управляющего редактора (изучать PC он все еще не собирался). Еще я спросил у Джея, нет ли у него на примете подходящих программистов, и он рассказал мне о крутейшем парне, который поставлял ему игры для Apple и даже начал портировать их для PC. Имелась, впрочем, одна загвоздка: Softdisk уже дважды пыталась его нанять, и он каждый раз отказывался. Этим неуловимым кодером был Джон Кармак.
Мне понравилась его игра Tennis, и я знал, что он сделал RPG Dark Designs. Особенно в Tennis меня заинтересовали плавная анимация и перспектива вид со стороны под наклоном. В его игре все двигалось по законам физики большая редкость для Apple II и того времени. Я знал, что это дело рук крутого разработчика.
Можешь позвонить ему еще раз?
Я же сказал, он не хочет. Мы уже пытались.
Если он был программистом вроде меня а все указывало именно на это, то я понимал, почему он не хотел соглашаться. Я тоже только что угрожал уйти.
Я думаю, что он захочет поработать в паре с другим разработчиком игр, сказал я, вспоминая свой опыт в Origin.
Мы попробуем, но он уже сказал, что не хочет, и его устраивает текущее положение вещей.
Скажи, что он будет работать вместе с опытным игровым программистом. Думаю, он изменит свое решение.
По крайней мере, я на это надеялся.
Я оказался прав. В то время игровых разработчиков было днем с огнем не сыскать. Я бы удивился, если бы он отказался, потому что сам не так давно чувствовал себя в его шкуре. К тому же Кармак искал более стабильный доход, чем зарплата разработчика-фрилансера.
Мы пригласили его в Шривпорт на собеседование. Кармак любил водить и тратил много денег на содержание своей несуразной MGB, так что поездка из родного Канзас-Сити в Шривпорт показалась ему неплохой идеей. Потом он рассказал мне, что собирался отказать Softdisk, поскольку был уверен, что никакого «опытного игрового программиста» не существует, но решил, что просто поговорить не помешает.
Большой Эл пригласил нас Джея, Лейна, Кармака и меня на ужин в ресторан Italian Garden. Мое знакомство с Кармаком поистине стало встречей родственных душ. Ему было девятнадцать, мне всего двадцать два. Позже я узнал, что мы выросли по разные стороны баррикад: его семья была куда обеспеченнее моей, но в тот вечер казалось, что наши жизни шли по одинаковой траектории. По крайней мере в вопросах игр и их создания. Мы оба провели буквально тысячи часов за совершенствованием навыков в наших общих увлечениях: играх, компьютерах и кодинге.
За свою жизнь я общался со многими программистами, в том числе легендами индустрии вроде Стива Возняка, Билла Баджа и Насира Джебелли. Но в ту первую встречу с Кармаком мы мгновенно ощутили связь. Мы отлично разбирались в одних и тех же вещах, питая к ним огромную страсть; мы прекрасно понимали значимость наших трудов, обоюдно восхищались способностями друг друга и говорили на общем уникальном языке. Мы оба видели у игр гигантский потенциал и знали, что наших знаний и устремленности хватит, чтобы его реализовать. Мы видели друг друга насквозь. Это сложно описать. Представьте, что для вас что-то настолько важно, что вы идете на все, чтобы достичь в этом мастерства. Представьте, что вас никто не понимает: ни семья, ни партнер, ни друзья. А теперь вообразите, что встретили человека, который мыслит точно так же. Вот что мы ощущали, когда встретились.
Джей с Элом весь вечер слушали нашу болтовню на программистском наречии. Каким ассемблером ты пользовался на Apple II? А пробовал TASM для 8086 на PC? Знаешь C? Писал ли в double hi-res? Что знаешь про DOS 3.3? А ProDOS? Помнишь карту памяти Apple II? Пробовал писать BIOS для PC? А какие-нибудь TSR разрабатывал? И так далее. Мы с Кармаком и Лейном властвовали над Apple II, хотя сегодня понятно, что мы правили в эпоху компьютерного каменного века. Наши компьютеры были примитивны в сравнении с современными: минимум памяти, ограниченная мощность процессора, все тормозит. Хорошей игре нужна скорость, так что мы оптимизировали свои игры по максимуму. Современные компьютеры могут обрабатывать по пять миллиардов операций в секунду: можно написать быстрейшую игру, не зная ни строчки на ассемблере. В 1988-м тридцатидвухбитные процессоры вместо миллиардов обрабатывали по тридцать три миллиона операций в секунду, а нашему коду все равно приходилось отрисовывать каждый пиксель как можно быстрее. Для такой скорости требовался ассемблер. Кусок кода на нем распоряжался всей графикой игры, и чтобы та получалась быстрой и реактивной, требовалась максимальная эффективность; нужно было знать все возможные программистские хитрости. Центральный процессор исполнял код, графическая карта компьютера его отображала, и игра запускалась. Сегодня же всей графикой занимается видеокарта программисты больше не пытаются расставлять точки по экрану вручную.
Мы чувствовали себя участниками тайного общества: изучали одни и те же священные тексты, знали одни и те же лучшие трюки и наслаждались одними и теми же ритуалами. Разговор начался с Apple IIs и перешел к PC и процессорам, где Лейну уже нечего было вставить его обучение остановилось на Apple IIgs. Мы говорили о видеоиграх, которые нас впечатляли и вдохновляли, обсуждали Dungeons & Dragons и делились секретами ускорения кода.
Потом мы нашли и другие сходства. Как и я, в детстве Кармак любил комиксы, отучился год в колледже и возненавидел его, а родители Джона тоже не понимали его страсти к играм. У меня было больше опыта с PC, но его история меня впечатлила: он понял, что если продаст Softdisk свои игры для Apple II, чтобы те вышли на Big Blue Disk, то увеличит свои доходы в два с лишним раза, потому что за игры для PC платили больше. Так что, оказавшись на мели после переезда от родителей, он арендовал PC на неделю, научился программировать для него, портировал свою игру и вернул компьютер.
Чувак, ты гений! сказал я.
Эта идея понравилась моему внутреннему фрилансеру, а то, что он выучил PC за неделю, впечатлило всех присутствующих.
Я рассказал ему о нашей идее Gamers Edge так мы теперь называли PCRcade[21]. Я хотел выпускать лучшие компьютерные игры круче всего имеющегося на рынке. Я потратил год на изучение PC и теперь вместе с еще одним топовым программистом наконец мог исполнить свое предназначение: делать самые увлекательные, веселые и красивые игры.
Игры, которые понравились бы мне самому.
Джей говорил, что Кармак одинокий волк, но мне так вообще не показалось. Мы с ним сосуществовали в идеальной гармонии. Энергичный и виртуозный программист, Кармак пригодился бы любой команде. Позже он рассказывал, что именно мое глубокое понимание PC и навыки графического дизайна убедили его к нам присоединиться. Я знал вещи, которых не знал он, и его страсть к разработке игр возобладала.
Он принял наше предложение, чему я безумно обрадовался. Еще сильнее я разгорячился, увидев его в деле. Кармак мог кодить и учиться часами. Как и я, он не пил, не курил и не принимал наркотики, но, в отличие от меня, не имел ни семьи, ни даже девушки. Он жил один и мог позволить себе проводить каждую минуту за компьютером, чем и занимался, программируя без устали и прерываясь только на сон и на очередной поход к нашему офисному холодильнику за колой. Пытаясь узнать о PC как можно больше, он работал круглые сутки.
Невероятное ощущение видеть рядом с собой еще одного такого же программиста-ультрамарафонца. Мы втроем настроились на серьезную работу: вдобавок к компьютерам Intel 386, которые предоставил Большой Эл, мы поставили в офис холодильник, микроволновку и консоль NES (Nintendo Entertainment System). Мы любили метал и врубали любимые песни. Мы не видели белого света только код, книги и журналы, откуда мы загружали всю новую информацию сразу в мозг. Мы с Кармаком делились техниками, которые узнали до встречи друг с другом не потому, что нас кто-то заставлял, а потому, что сами этого хотели. Если вы когда-нибудь засиживались допоздна за игрой, сериалом или книгой, то можете представить, какой эффект на нас оказывал код. Новые знания становились наградой сами по себе.
Я сам писал быстро, но сообща дело шло намного быстрее. Кармак понимал и запоминал информацию о системах, паттернах программирования, алгоритмах и языках не хуже меня. Я никогда прежде не работал с равным себе, и он никогда прежде не работал с равным ему. Невероятное ощущение. Учителя называли меня одаренным ребенком, и, наверное, не без причин. Моя гипертимезия тоже помогала. Без всяких сомнений, Кармак тоже был одарен, но в другом, аналитическом смысле: он синтезировал информацию и с ее помощью двигал прогресс. Он решал задачи, буквально загружая знания в свой мозг и позволяя им свободно сталкиваться на высокой скорости. Как и я, он воспринимал программирование как соревнование. Он хотел быть лучшим, выучить все, что знал я, и еще больше. Но меня, помимо алгоритмов, также интересовал дизайн: какой геймплей мы можем реализовать с помощью кода? Я вдохновлялся и поражался эволюции гейм-дизайна, постоянно думая, что в игры могут привнести новые технологии не только сейчас, но и в будущем. Что мы сможем с ними сделать? Известные ограничения нас не интересовали. Наши навыки идеально сочетались, и мы собирались создавать игры, каких еще не видел свет.
Сейчас я думаю, что работать вместе нам помогали именно эти черты: его желание развивать игровые технологии и мое желание развивать гейм-дизайн через технологии. Магия заключалась в нашем общем понимании кода и взаимном доверии. Как программист я знал, что теоретически можно сделать с помощью программирования, и двигал горизонты гейм-дизайна в ту сторону. Я полностью верил Кармаку: если он считал что-то возможным, значит, так и было. Кармак полностью верил мне: если я говорил, что будет весело, он давал добро. Великолепная технология без соответствующего дизайна это просто упражнение. Великолепный дизайн без соответствующей технологии это провал. Я забегаю вперед, но сейчас хочу отметить, что Кармак рос как программист с умопомрачительной скоростью.