Книга: Икона DOOM. Жизнь от первого лица. Автобиография
Назад: 5. Икона Греха
Дальше: 7. Дрожь

6. Разлом

На заре становления id Software в декабре 1990 года Том, Кармак, Адриан и я вынашивали концепцию идеальной RPG. Мы черпали вдохновение из приключений в D&D, во время которых наша компашка всегда собиралась вокруг широкого игрового стола Джона с закусками, колой, Dr. Pepper и большим количеством пиццы. В мире наших приключений существовала всемогущая компания, известная как зловещая Банда Серебряной Тени. Ее члены катались верхом на гигантском серебряном драконе: если кто-нибудь видел его тень, то сразу понимал, что, хоть Банда и находится где-то далеко вверху, в то же время она совсем близко. Каждый персонаж – участник Банды был ультимативным проявлением одной из характеристик D&D: от умнейшего существа в мире до силача, способного своей мощью расколоть вселенную пополам. Этого силача звали Квейк. Для нас Квейк стал легендой, единственной в своем роде. Будучи низкоуровневыми персонажами, мы редко пересекались с ним или другими высокоуровневыми персонажами. Тем не менее пару раз нам посчастливилось отправиться с Квейком в захватывающее приключение. Банда Серебряной Тени работала по контракту на «Справедливость», еще более могущественную группу. Для нас Квейк стал не просто персонажем, а чем-то куда большим. Совместные приключения принесли самые яркие моменты за сотни проведенных в подземельях часов. Квейк – воплощенный супергерой в созданном нами мире.

А что, если бы Квейком можно было управлять в компьютерной игре? Сверхчеловеческая сила, полеты на спине дракона… Кто бы отказался заполучить две его суперспособности? Первая – молот, способный уничтожить практически все, что встретится на пути. Мы представляли, что игроки пользовались бы молотом, как это делал сам Квейк – расплющивая врагов. Вторая – всесильный куб Адских Врат, который парил над Квейком и наносил дьявольский урон врагам, осмелившимся бросить ему вызов. Кажется, метание молний во врагов Квейка было любымым занятием этого куба.

Заканчивая в декабре 1990 года первую трилогию о Кине, мы горели идеей дальше сделать Quake, а заодно познакомить растущую армию фанатов с этим персонажем. Quake была обязана стать нашей следующей игрой. Мы даже добавили такой рекламный текст в Commander Keen in Invasion of the Vorticons, первый официальный релиз id Software.

СКОРО ОТ ID SOFTWARE

За трилогией Commander Keen от id Software последует The Fight for Justice – это совершенно новый подход к фэнтези-играм. Наконец-то вы начнете путешествие не как нищий слабак! Вы станете Квейком, самым сильным и опасным человеком на континенте, и сразу же получите Молот Громовержцев, Кольцо Регенерации и межпространственный артефакт. Тут и начинается веселье! Вы сразитесь на стороне «Справедливости», тайной организации, призванной стереть зло с лица земли! RPG еще никогда не были столь захватывающими!

Когда 14 декабря 1990 года вышла первая трилогия Commander Keen, мы отправились на рождественские каникулы воодушевленными этой идеей – она буквально взрывала воображение. Мы представляли Квейка, сражающегося с огромными врагами, этаким ранним подобием героя из God of War. Наши приключения в D&D станут реальностью! Мы только что выпустили наш первый двухмерный сайд-скроллер, что само по себе огромная инновация. Но если измерить расстояние между этим релизом и тем, что мы себе навоображали, оно будет исчисляться в световых годах. На экране требовалось разместить кучу всего, а игрокам – дать невиданную агентность, но процессоры все еще были медленными, а имеющиеся технологии не соответствовали нашим задумкам.

Такие моменты я называю «мостом возможностей»; в индустрии это обычная вещь. Как разработчики игр, мы должны заглянуть за горизонт текущих событий и создать возможности, которые другие либо не увидели, либо упустили. К инновациям приводит вопрос «что, если?» и поиск логичных ответов. Однако не всегда возможно преодолеть разрыв между воображением и действительностью – тем, что можно создать при помощи доступных технологий или ресурсов. Делая Dangerous Dave in “Copyright Infringement”, Кармак верил, что сможет преодолеть барьер сайд-скроллинга, и у него вышло. Делая DOOM, я верил, что абстрактный стиль дизайна уровней создаст новые измерения в геймплее и игровом пространстве, и у меня вышло. Мы сошлись во мнении, что в начале 1991 года мы никак не могли преодолеть барьер Quake. Делать игру, отказывая себе хоть в чем-то, не хотелось. Она должна быть сверхмощной, крутой и не имеющей аналогов. Мы отложили этот проект, но не перестали о нем мечтать.

И вот на дворе конец 1994 года. DOOM II уже вышла, вот-вот выйдет Heretic, а предложения по созданию связанных с DOOM продуктов продолжали идти на нас лавиной. В этот момент команда собралась для обсужения следующего оригинального тайтла. Присутствовали все, кто работал над DOOM II: Кармак, Адриан, Кевин, Дэйв, Сэнди, Американ и я. Мы прекрасно знали, зачем собрались; волнение буквально пропитало воздух. Очевидно, что в этой колоде возможностей точно затесался еще один шутер, но решение пока не принято. Заходя в кабинет, каждый понимал: мы создадим что-то новое.

Как только все расселись по местам, Кармак перешел к делу. Пока мы делали уровни для DOOM II, он занимался разработкой нового движка. Почти все время.

– Мы сегодня собрались, чтобы поговорить о нашей следующей большой игре, – начал Кармак. – Я думал о технологических улучшениях, которые позволят нам выйти за рамки возможностей DOOM II.

– Вот это дело! – ответил я. Мы с Кармаком сошлись во мнении, что на движке DOOM II далеко не уедешь, учитывая, что сообщество моддеров его постоянно поддерживало и непрерывно выпускало новый контент. Мы просто обязаны создать что-то новое, да и гоняться за новыми технологиями нам всегда нравилось. Со времен Commander Keen команда считалась авторитетом по части технической начинки, потому что выдающийся дизайн игр от id базировался на этих самых технологиях.

– Это будет классно, – согласился улыбающийся Американ.

– Следующий движок станет полностью трехмерным, с улучшенным градиентным освещением. Игра будет поддерживать мультиплеер с подключением через Интернет с использованием модели клиент-сервер, – продолжил Кармак. В тот момент он был нетерпелив и взволнован. Я тоже.

– Круто, мы наконец-то сможем сделать Quake! – воскликнул я.

Достаточно было услышать, что движок станет «полностью трехмерным». Я уже видел открывающийся потенциал улучшения геймплея и дизайна игры. Любые дизайнерские идеи, которые могли прийти мне в голову, стали реализуемы, потому что в полном 3D возможно все. Игроки получат шесть степеней свободы – смогут перемещаться вправо и влево, вперед и назад и, что особенно важно, вверх и вниз. Мы приблизились к переломному моменту в развитии технологий, когда исчезали ограничения прошлого. Большинство игроков DOOM и DOOM II считали, что игра по-настоящему трехмерная, но на самом деле это мастерски продуманная иллюзия. Уровни и правда рендерились в 3D, но все остальное (враги, стены, полы, лестницы и так далее) размещалось на 2D-плоскости. Текстуры проецировались на координаты X и Y так, чтобы создать иллюзию перспективы. Враги становились меньше, если находились вдалеке, а текстуры окружения, соответственно, растягивались. За исключением программистов и художников, многие люди, скорее всего, не заметили этого фокуса, и мы максимально усилили его эффект с помощью лифтов и меняющейся высоты. Но это не 3D. Мы называли такую технологию 2,5D; хотя она потрясающая, дизайн сталкивался с ограничениями. С 3D-движком такого не будет. С полноценной трехмерностью мы сможем размещать одну область непосредственно над другой, по-настоящему менять высоты и позволять всем игровым объектам существовать в трехмерном пространстве. Это нововведение кардинально изменило возможности дизайна уровней, передвижения и геймплея.

Как гейм-дизайнер я выжимал все соки из каждой итерации технологии Кармака. Я изучал способности движка и создавал лучший возможный геймплей. Будучи программистом, я мог найти общий язык с Кармаком и понимать его замыслы, что, как мне кажется, многим оказывалось не под силу. Это позволяло лучше осознавать возможности и потенциал его движка, потому что я понимал и уважал его труды с технической точки зрения. Мы срабатывались, и нам это нравилось. Если перед ним стояла серьезная техническая задача, я не сомневался – он справится. Когда Кармак собирается что-то сделать, это не желание и не возможность. Оно уже сделано.

Когда я сказал, что мы можем сделать Quake, большинство коллег не поняли, о чем идет речь.

– Quake? – переспросил Американ.

– Да, Quake! – повторил я.

– А это что вообще? – уточнил вслед за Американом Сэнди.

– В 1990 году у нас возникла идея игры. Тогда мы от нее отказались, потому что не существовало подходящих технологий. То есть вообще ни у кого. А новому полностью трехмерному движку это по силам, – ответил я.

– О чем игра-то? – Сэнди не мог унять любопытства.

– Года четыре назад мы хотели сделать проект про крутого парня по имени Квейк, – начал я.

И поведал коллегам историю о приключениях Банды Серебряной Тени, «Справедливости», молоте Квейка и кубе Адских Врат. Они тоже играли в D&D, поэтому все поняли. Как я уже говорил, кому не захочется побыть сверхсильным персонажем вроде Квейка?

Я продолжил:

– Это была RPG, но в принципе можем сделать что угодно. – Когда-то мы представляли, каково будет стать королями всех жанров.

Адриан вспомнил Quake и наши планы на игру в 1991 году.

– Звучит неплохо! – заявил он. Я знал, что его воображение уже вовсю изобретало новые способы напугать игроков до смерти в полном 3D с улучшенным освещением, открывающим перед художником еще больше возможностей.

– Тогда решено! Делаем Quake! – объявил Кармак.

Таким вот образом у нас принимались важные решения по крупным играм: мы делились мыслями, приходили к каким-то соглашениями, и затем наша судьба оказывалась определена на ближайший год или около того. Разумеется, впереди еще много собраний, но общая картина стала ясна. Часть приключения под названием «а куда пойдем?» подошла к концу. Кармак только начинал свои технические разработки, так что пройдет какое-то время, прежде чем вся команда сможет взяться за дело. Как бы я ни был одержим Quake, я решил подождать до января, чтобы изучить возможности дизайна будущей игры. Декабрь у меня выдался тяжелый.

Во-первых, я доделывал клиент DWANGO, чтобы софт попал на один диск с Heretic. Мы с Ки очень много взаимодействовали, чтобы все функции программы работали как задумано: загрузка телефонных номеров сервера DWANGO из основного списка, разрешение подключения к любому серверу DWANGO через модем, аутентификация игрока при входе в систему, обработка забитого общительными геймерами лобби (которые еще и отправляют сообщения в уже начатых играх), запуск дезматчей и обработка кредитных карт. Наши успехи кроме как революционными не назовешь: в доинтернетную эпоху мы создали сервис, позволяющий игрокам набрать номер и просто начать общаться и играть с другими людьми. Раньше для этого приходилось звонить друг другу с помощью домашних телефонов и договариваться о подключении модемов. DWANGO стала мостом между темной эпохой модемов и дивным новым Интернетом; на момент выхода она поддерживала DOOM, DOOM II и Heretic.

Работа над Heretic тоже подходила к концу, поэтому где-то в середине декабря я вылетел в Висконсин, чтобы лично взглянуть на состояние игры и убедиться, что сделано все запланированное. Команда Raven излучала воодушевление и энергию: не заметить это было попросту невозможно. Меня впечатлил показанный билд. Знакомство с NeXTSTEP и средой кроссплатформенной разработки для DOS позитивно влияло на команду. Создание уровней в абстрактном дизайне стало совершенно новым опытом для всех, кто не трудился в id, но ребята усвоили необходимые навыки и сделали все отлично. Что еще? Существует очень много больших и малых задач, которые возникают прямо в процессе. Справившись за год, команда Heretic показала, насколько она опытная и сплоченная. Я организовал эту сделку, руководил разработкой игры, помог ей воплотиться в жизнь и потратил на Heretic много времени. Но это принесло мне удовольствие. Проект точно того стоил – да еще и сумел удовлетворить мою цель по расширению бизнеса id Software.

В процессе работы мне пришлось адаптировать наши программы подключения к локальной сети и модему для Heretic, поскольку они разрабатывались для DOOM и DOOM II. Я также обновил свою программу DM.EXE. Тестируя свой код и игру, я видел в Heretic проект от id Software. Геймплей был замечательным. Я утвердил золотую мастер-копию, мы с командой отпраздновали это за ужином, а в скором времени я полетел обратно в Даллас. В 11 часов вечера 23 декабря 1994 года, сидя дома, я загрузил условно-бесплатную версию Heretic в виде HTICV1_0.ZIP. Как и DOOM, Heretic распространялась как условно-бесплатное ПО с возможностью купить у нас коробочную версию. За первый год мы продали полмиллиона копий, превратив пятьсот тысяч долларов инвестиций id в нехилую прибыль. Команда Raven отлично потрудилась.

Затем наступило долгожданное время отдыха. Эти сезоны интенсивной разработки с января по Рождество никогда не были преднамеренными, но последние несколько лет нам казалось, что именно так и должна идти работа. Успех наших игр предоставил возможность раскидываться подарками, словно мы Санта-Клаусы, поэтому я завалил ими всех, особенно Майкла и Стивена, которые обожали LEGO. Я купил новый дом Келли и мальчикам. Они по-прежнему жили в Калифорнии, но мы путешествовали туда и обратно так часто, как только могли. У Бет дела тоже шли хорошо, она взялась за украшение нашего дома. Ее любовь к готовке наполняла воздух ароматом праздников – печеньем, пирожными и блюдами из духовки. А в моей голове гарцевали мысли о начале работы над Quake в новом году.



1995 год только начался, а нам уже хотелось вернуться в офис. Мне стало интересно, сделал ли Кармак что-нибудь за эти праздники. Мы с ним обожали работать даже во время перерывов. С тех пор как он объявил о своем желании создать полностью трехмерный движок, я не мог перестать думать об этом и много занимался исследованиями. Я просыпался, засыпал и видел во снах дизайн Quake и трехмерный геймплей. Какие возможности откроет перед нами новый движок?

В наши дни, когда программисты начинают собирать технологии для новой игры, первый вопрос обычно звучит так: какой движок мы возьмем? Это не менее важно, чем классическое: «Какую игру мы собираемся делать?» В 1995 году мы не задавали такой вопрос, потому что не существовало готовых движков на выбор. Для наших разработок мы создавали собственные с нуля, и такой подход требовал много опыта и времени. Если для создания Quake требовался высокоскоростной, совместимый с онлайном и серверами, поддерживающий полноценное 3D и наложение текстур движок, то приходилось сделать такую вещь самим. Не существовало движка, который поддерживал бы все наши задумки, а именно это требовалось от технологической стороны Quake.

Первой задачей нашей команды стало изучение дизайна и технических возможностей Quake. Мы с Кармаком сидели в его кабинете, обсуждая детали. Движок и дизайн, два основных столпа id Software, неразрывно связаны друг с другом лентой Мебиуса. Гейм-дизайн диктовал потребности движка, в то время как движок создавал потенциал дизайна игры. Мы с Кармаком всегда старались раздвинуть эти границы как можно шире. Кармак спросит: «Что, если движок сделает это? Как это повлияет на геймплей?» А я ему отвечу: «Если движок будет поддерживать эту фичу, я смогу реализовать вот такой геймплей». Это справедливо и в обратном направлении. Движок может ограничивать дизайн, а особенности дизайна могут замедлять работу движка, и нашей негласной целью стало избежать таких проблем. Наши посиделки всегда сводились к обсуждению. Никто не диктовал другому свою волю.

Я провел уйму часов, размышляя о дизайне Quake: начинал с рождения одноименного персонажа в нашей D&D-кампании, затем вспоминал заброшенную инкарнацию проекта, придуманную после разработки Commander Keen в 1991 году, и заканчивал сегодняшним днем. Какие геймплейные особенности мы хотим сохранить, если они вообще имеются? Что хотим добавить? 3D позволяло создать очень многое, и следовало сосредоточиться только на том, что даст нам лучший геймплей и дизайн для актуального движка. По дороге на встречу, зная о трехмерности движка, я представлял, как перенесу эти функции из нашей идеи для RPG 1991 года.

Главный герой по имени Квейк – всемогущий и крутой.

Средневековый мир, отражающий наши приключения в D&D, которые происходили на открытых пространствах в насыщенной обстановке.

Мощный молот Квейка, который после броска возвращался обратно.

Небольшая внепространственная сущность, куб Адских Врат, который вращается вокруг Квейка и атакует врагов. Также он способен отправиться на разведку местности.

Интеграция серебряного дракона, хотя бы эстетическая.

Еще я хотел сосредоточиться на этих новых функциях, чтобы показать остальным, какие у Кармака планы на движок.

Экшен-ролевая игра с фэнтезийной эстетикой, где характеристики персонажей и забота о них не в приоритете, а может, статы и вовсе отсутствуют.

Продолжение правила дизайна № 8: если уровень можно сделать в DOOM II, значит, он недостаточно хорош для Quake. Дизайн должен быть передовым, как и наш движок. Поворот камеры вверх и вниз должен стать столпом дизайна уровней.

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

Помимо этих функций существовала масса зависимостей между кодом и дизайном, позволяющая копнуть еще глубже. Как руководитель разработки, я хотел предельно четко понимать ключевые особенности движка Кармака, поэтому с нетерпением ждал наших бесед. Для игр вплоть до 1990-х метание между дизайном и кодом воплощало собой вопрос о курице и яйце. В случае с готовым движком, например, актуальным сегодня Unreal Engine, большая часть геймплея или хотя бы его предполагаемая оптимальная часть уже встроены в инструментарий, поэтому команда выбирает лучший вариант для заранее определенной работы с дизайном. Unreal Engine, к примеру, используется во многих шутерах, потому что он изначально создавался для шутеров. Но когда нет технологии, возникает вопрос: что первично – дизайн или движок? В нашем случае сначала появилось только ядро движка (трехмерного с моделью клиент-сервер), а затем благодаря дизайну он стал расти. Мы с Кармаком сформировали совместный процесс, где одна идея перекликалась с другой.

Непросто объяснить всю сложность ситуации людям, которые в то время не занимались разработкой игр, но вот пример: посмотрите на функции последней версии Unreal Engine. Теперь избавьтесь от всех, кроме онлайна и трехмерности. Вот с этого мы начали, при этом понятия не имея, куда двигаться дальше. Каждая задумка, которую мы обсуждали с Кармаком, обтачивалась другими, чтобы проверить, смогут ли они работать вместе. Движок все еще оставался просто идеей трехмерного пространства. В нем не существовало даже таких базовых вещей, как физика и движение. Оружия и врагов тоже не было. Заложенные в дизайн функции влияли на код, и наоборот. По сути, мы одновременно создавали мир и то, что в этом мире можно делать, путем различных компромиссов. Целью этого совместного партнерства было одно: код должен помогать создавать дизайн ровно настолько, насколько дизайн – игровые возможности.

Сидя в кабинете Кармака, мы оба хотели поскорее начать изучение возможностей Quake. Мы все еще использовали NeXTSTEP для разработки, а для скорости взяли язык C, а не C++ (Objective-C использовался только для созданных мной инструментов). Что касается графики, то мы заимели новую рабочую станцию Silicon Graphics Indigo, которую планировалось использовать для 3D-моделирования. Разумеется, разработка игр изменчива. Я понимал: ничего из того, что мы здесь обсуждаем, не выбито в камне. Но я надеялся уйти с этой встречи с пониманием базового дизайна движка. Знание, как Кармак его спроектирует, позволит дизайнерам сделать более продвинутую игру.

– Итак, я хочу сделать движок на новой сетевой модели, в которой клиент подключается к серверу, – начал Кармак. – Несколько клиентов Quake смогут подключиться к серверу Quake для синглплеера, дезматча или ко-опа. В синглплеере сервер и клиент будут работать на одном PC. Пользователь может создать многопользовательскую игру на своем PC, и другие PC смогут к ней подключиться.

Самое крутое в модели клиент-сервер то, что пользователи не будут ограничены скоростью сети других игроков Quake, подключенных к тому же серверу. В DOOM всем участникам мультиплеера приходилось разделять скорость геймера с самым медленным соединением, потому что требовалась идеальная синхронизация. В Quake это ограничение исчезло. Люди обязательно это оценят. В то время технология клиент-сервер считалась новой. Единственным нашим опытом работы с сетевыми моделями в играх в то время была DOOM и ее P2P. В экшенах клиент-сервер еще не использовал никто: в основном ее применяли в медленных, преимущественно текстовых играх.

– Более того, никто не сможет читерить, потому что сервер остается главенствующим звеном, – продолжил Джон. – Весь код обрабатывает сервер, а клиенты просто отражают состояние игры. Все, что они могут, – это отправить на сервер команду.

– Получается, сначала тебе надо написать такой код? – полюбопытствовал я. Возможности команды разработчиков напрямую завесили от порядка, в котором он будет его писать.

– Да, мне нужно оживить сетевую архитектуру, чтобы передавать информацию между клиентом и сервером и симулировать игру. Затем я смогу заняться клиентской архитектурой и рендерером.

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

– Я тут придумал сцену, где игрок стоит на вершине холма и смотрит вниз на какого-нибудь врага, которого хочет уничтожить, – поделился я. – Тут к нему сзади подкрадывается еще один игрок и – БАМ! – бьет его молотом по башке. И вот тот уже летит вниз с холма, а весь его обзор вращается вокруг своей оси, как было бы в реальной жизни.

Во время этих пояснений я размахивал руками как дирижер.

– Или представь себе зону-хаб, откуда идут пути в разные стороны. Один из них патрулирует какой-то огромный безумный монстр, а другие либо пусты, либо возле них слоняются мелкие враги. Тут можно реально ощутить себя сраным всемогущим Квейком – просто влететь с двух ног и начать меситься с боссом, эмоции с ходу зашкваливают! Игроки должны понимать, что этот мир хардкорен и опасен, а за руку их водить никто не собирается.

Мы буквально могли ощутить этот опыт, хотя пока речь шла лишь о его потенциале. Ни одна другая игра и рядом не лежала. DOOM, Heretic и Rise of the Triad были в 2,5D. Даже находившиеся в разработке проекты вроде Duke Nukem 3D не могли составить нам конкуренцию.

Ultima Underworld – пример настоящего 3D с шестью степенями свободы, но при этом с шестью степенями медлительности. Это не та динамичная RPG, которую мы себе представляли. У нас по-прежнему вызывала недоумение Myst, продолжавшая лидировать в чартах вместе с DOOM и DOOM II. Мы не понимали, что привлекательного в пустом и медленно раскрывающемся игровом мире. Понятно, что геймерам нравятся истории, но нам хотелось делать игры, которые позволяют писать собственные сюжеты об удивительных битвах или победах в дезматчах. Потенциал Quake был невероятен – даже если смотреть на него издалека.

Кармак рассказывал подробности о проводимых им исследованиях и проделанной работе. Все его слова о новом коде в моем сознании превращались в опыт потенциального игрока.

– Я так рад, что мы переходим к настоящему 3D, – сказал я. – Никаких больше спрайтов.

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

Вычисление освещения на уровне стало огромным шагом вперед для дизайна уровней. Вместо того чтобы тщательно определять степень освещенности каждой области в игре, мы теперь могли размещать источники света там, где захотим, задавая каждому произвольный уровень яркости. Движок знал, как направить этот свет, и создавал текстуры стен, плавно переходящие от яркости к темноте. В DOOM вся текстура стены всегда имела один уровень освещенности. В Quake же стены могли иметь сложное освещение в зависимости от того, где находится источник света. Короче говоря, теперь художники и дизайнеры уровней могли делать более реалистичное окружение.

– Ты вообще можешь себе представить, как из этой темноты выходит Барон Ада?

Тогда мы еще не придумали врагов для Quake, поэтому я говорил про существо из DOOM. Меня никогда еще так не поражал потенциал игры.

– Раз мы заговорили о врагах, что ты будешь делать с видеобуфером? Мы по-прежнему используем 8-битный цвет или переходим на 16 бит? – спросил я.

Разрядность видеобуфера (8 или 16 бит) определяла количество цветов, с которыми мне приходилось работать. При 16-битном цвете в моем распоряжении оказывалось 65 536 цветов. А при 8-битном – всего 256. Ответ Кармака определял, буду ли я создавать красочных существ или лепить монстров из грязи. Кроме того, при 16-битном цветовом режиме команда получит доступ к плавным градиентным теням.

Код рендерера писал Кармак – и у него было ощущение, что 16 бит окажется многовато для тогдашних видеокарт.

– Начнем с VGA, потому что размер данных составляет один, а не два байта на пиксель, – пояснял Джон. – Я хочу, чтобы частота кадров превысила 30 кадров в секунду и подбиралась к отметке в 60 кадров.

Звучало разумно – отрисовка вдвое большего объема данных занимала в два раза больше времени и снижала частоту кадров. Приближение к 60 кадрам в секунду крайне важно для плавного движения. Будущие 3D-видеокарты смогут обрабатывать 16-битный цвет при высокой частоте кадров, но тогда мы к этому еще не пришли. Однако я не огорчился. Просто хотел знать, с чем придется работать.

– Учитывая тени, мы сможем использовать меньше цветов. Сколько ты сделаешь уровней яркости?

Это нужно для определения количества оттенков в моей палитре. Например, если у каждого цвета будет четыре уровня яркости, то я получу 64 цвета для работы, ведь нужно учитывать, что в общей сложности оттенков 256 (64 цвета, помноженные на 4 градиентных уровня). Но я понимал, что для получения желаемого эффекта потребуется больше градиента.

– Да, цветов станет меньше, – сказал Кармак. – В моих планах шестнадцать уровней яркости для каждого цвета, так что в 256-цветной палитре VGA будет максимум шестнадцать цветов.

– Хм, ну, раз Quake – Cредневековая игра, ограничение цветовой палитры может быть уместным. Много грязи и каменных цветов. И красный, конечно, – засмеялся я.

– Средневековье идеально подойдет к этой палитре, – согласился Джон.

– Раз у Квейка есть огромный молот, игра может быть преимущественно про ближний бой. Только представь: у тебя будет возможность полностью уничтожить врага, расплющить его и буквально размазать по земле, – размышлял я.

– Не забывай про куб Адских Врат. Он себе на уме! – рассмеялся Кармак.

– Ага. Может, нужно уничтожать врагов, чтобы он пожирал их тела? Если морить его голодом, он может расстроиться и покинуть героя на какое-то время. – Я погружался все сильнее. – Если куб доволен, он может высасывать души из врагов. А если тебя окружили, можно провести атаку по области – ну, хорошенько жахнуть молотом по земле. Мы сможем в такой момент заставить камеру дрожать?

– Вполне. Учитывая, как я планирую настроить геймплейный код, должно быть легко. Я собираюсь написать простой C-подобный язык программирования, чтобы дизайнеры и программисты могли создавать нужные им вещи и сразу же видеть их в деле. Сервер просто загрузит файлы и быстро их обработает.

С ума сойти. Кармак отделял движок от игрового процесса. Тем, кто не связан с индустрией, это тяжело понять, поэтому я объясню проще. Представьте, что движок – это автомобильный двигатель. Он работает по определенным правилам и превращает горючее в энергию. Геймплей возникает в том случае, если игрок нажимает на газ или тормоз, переключает передачи или устанавливает закись азота, чтобы увеличить подачу топлива. Все эти вещи влияют на движок, но он должен быть сконструирован так, чтобы реагировать на подобные команды. Гейм-дизайнер программирует «нажать на газ», а Кармак программирует движок, чтобы он реагировал на команду «нажать на газ». Такова, по крайней мере, основная идея. Движок позволяет ходить по игровому миру. Геймплей же случится, когда геймер заденет определенный триггер и тем самым откроет тайник с монстрами, а они начнут швырять ему в спину огненные шары.

Для дизайнеров отделение геймплея от движка означало, что мы получим возможность вносить изменения в геймплей, не компилируя без необходимости весь движок. Прежде на это требовались минуты, сейчас – секунды. Теперь и моддеры смогут писать код для внесения изменений в игру. Им не понадобятся инструменты Objective-C, которые использовались при создании проекта, или доступ к исходникам Quake. Наши прошлые игры требовали компиляции каждый раз, как появлялся новый билд. Процесс занимал минуту-две – вроде не так много, но эффект стремительно суммируется, когда операция повторяется по несколько десятков раз в день. Плюс прежний процесс негативно влиял на работу с дизайном.

– Отличная идея, – сказал я. – Скорость разработки однозначно возрастет.

На мгновение я задумался, как все это будет выглядеть.

– А вот, к примеру. Поскольку бои в игре будут в основном ближними, как насчет того, чтобы дать Квейку дистанционную атаку? Во времена D&D-посиделок он мог метать молот во врагов, и это было офигенно!

– Да, новый язык сможет это реализовать, – ответил Кармак. – Я назову его QuakeC. С ним можно сделать дрожание камеры, атаки молотом, искусственный интеллект противника и все остальное, что нам потребуется в рамках геймплея.

Мало разбирающемуся в таких вещах человеку может показаться, что отделение кода геймплея от движка позволило бы разрабатывать оба направления независимо друг от друга. Однако геймплейный код QuakeC мог делать только то, что разрешалось движком, поэтому недоработанный инструмент ограничивал функциональность. Чуть забегу вперед, но, когда QuakeC только создавался, мы не могли добавлять в игру врагов: код движка еще не умел обрабатывать перемещение ИИ-персонажей и отрисовывать 3D-модели. Позже, когда поддержка этих функций была внедрена, в QuakeC внеслись соответствующие изменения. Со временем функциональность QuakeC увеличилась, и мы контролировали все, что движок мог сделать с кодом. Если кратко – геймплейный код нельзя написать, пока движок находится в разработке или пока он по крайней мере не стал стабильным. Его можно было улучшать постепенно, но тогда мы бы не поняли, как все это заработает вместе, что крайне важно для гейм-дизайна и геймплея.

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

Далее требовалось выбрать определенный центральный процессор, чтобы оценивать производительность на протяжении всего цикла создания. Обеспечение плавного геймплея на таком процессоре будет гарантировать качественный релиз. С помощью программирования на языке ассемблера последние процессоры Pentium с частотой 75 МГц в 1995 году стали достаточно быстрыми, чтобы угнаться за игрой нашей мечты, и они становились только быстрее. По крайней мере, мы были уверены, что проект больше не находится в пространстве невозможного. Кроме того, теперь в нашем распоряжении оказалось в два раза больше памяти, чем во времена DOOM, поэтому какую-то ее часть можно было потратить на оптимизацию скорости, чтобы достичь желанных 60 кадров в секунду, а еще часть – на сложную работу с трехмерными уровнями. Обладая таким ресурсом, нам удалось избавиться от жестоких ограничений былых времен. До DOOM компьютерные игры использовали только 640 килобайт памяти, что отражалось на их объеме. В восьмидесятые на 8-битных компьютерах максимальный объем памяти составлял 64 килобайта – это в десять раз меньше, чем в 1991 году. Конечно, во время работы над Quake мы сталкивались с ограничениями вроде лимита памяти в 8 мегабайт, но по большому счету id могла делать более проработанные и красочные игры.

Я понимал, что с переходом на трехмерный движок придется попрощаться с моим давним редактором DoomEd. Его заменит QuakeEd – инструмент, позволяющий дизайнерам создавать уровни и подключать размещаемые объекты к коду QuakeC для обеспечения функциональности. То есть позволит добавлять врагов, факелы и двери, обеспечит подбор предметов, использование телепортов и всего остального, что понадобится по ходу дела. Редактор требовал написания кода с нуля – на новом 3D-движке иначе было нельзя.

– Я не смогу написать QuakeEd, пока ты не доберешься до клиентской части и не начнешь определять данные игрового мира, – объяснил я.

– Верно. Я создам скелет проекта и добавлю туда код для 3D-рендерера, когда у меня появится время. Сперва я закончу с основами построения мира, потом разберусь с данными. А там уже и ты сможешь подключиться к процессу.

Как только Кармак разложил биты по полочкам, я приступил к написанию QuakeEd. Мне нравилось все, что мы обсудили, – от 3D до QuakeC. Мы приблизительно поняли, чего хотим. В новом году нужно было создать все инструменты и технологии, необходимые для движка, способного построить полноценный трехмерный мир. Даже в наши дни шутеры от первого лица выжимают все соки из компьютеров. Самостоятельно написать движок, сделать инструменты для его поддержки, а затем выжать технологический максимум из дизайна – буквально подвиг Геракла. Трижды мы уже справлялись с такой задачей, но эта была самой сложной. Мы прикинули, что работа над ней окажется примерно в десять раз труднее, чем над движком DOOM. Такая оценка позволила понять, сколько времени займет процесс. Мы осваивали новую территорию.

Наступило самое подходящее время, чтобы поговорить о насущном, и я сразу перешел к делу:

– Пока ты будешь работать над движком, мы займемся розничной версией DOOM.

Такой релиз назревал давно. Мы заключили договор с GT Interactive о продаже первой части в магазинах. Я хотел добавить новый эпизод Thy Flesh Consumed, чтобы придать переизданию ценности и привлечь игроков, которые уже познакомились с условно-бесплатной или полной версией.

– Уверен, в рознице мы охватим еще больше людей, – сказал я Кармаку. – Американ и Шон тоже впишутся в проект вместе с парочкой других дизайнеров уровней. Пока что я называю игру DOOM SE, сокращенно от Special Edition. Я подготовлю кодовую базу версии 1.9, а затем мы выпустим патч, который бесплатно обновит ранее приобретенную копию DOOM.

Кармак кивнул. Я знал, что он был готов вернуться к программированию.

– А, еще кое-что. Поскольку Heretic вышла, я поручил Raven работу над сиквелом. Пока пусть называется Heretic 2, потом придумаем крутое название.

Так у нас обоих появились планы на ближайшее время. По результатам беседы дизайн Quake стал еще шире, чтобы уместить в себе новые элементы. Если бы мы писали пресс-релиз для Quake в стиле DOOM, то в него попали бы следующие пункты.

Исследуйте темные закоулки зловещего трехмерного Средневековья, которое кишит дьявольскими и чертовски адскими демонами.

Вступайте в рукопашные схватки и сносите головы противников взмахами разрушительного молота Квейка.

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

Новые реакции на повреждения – удар по затылку может привести к падению лицом вперед и кувырку в ближайшую пещеру.

Соберите целую коллекцию метательного оружия и кидайтесь им во врагов еще до того, как они окажутся рядом.

Используйте молот для новой сокрушительной атаки по площади.

Убивайте врагов и усиляйте свой куб Адских Врат – он питается их душами.

Следите за тем, куда смотрите, – если враги поймают ваш взгляд, они могут пойти за вами.

Я хотел приступить к работе над QuakeEd сразу после того, как Джон разберется со структурой данных. Еще сильнее хотелось заняться самой игрой. Кармак принялся за основы 3D-движка Quake, остальная команда взялась за DOOM SE, а мы с Raven Software приступили к работе над Heretic 2. Кармак принял необъятный программистский челлендж: с нуля возвести движок, на котором затем будет создано нечто, чего не доводилось делать ни ему, ни кому-либо еще. И я знал, что на всей земле не найдется такого дела, которым он хотел бы заняться сильнее.

Назад: 5. Икона Греха
Дальше: 7. Дрожь