Те, кто ранее проходил демо для прессы, заметили еще одно изменение. В титрах игры теперь значился дизайнер Сэнди Петерсен, но креативного директора уже не было. Том Холл пропал.
4
Чемпион по наложению текстур
id Tech 1
Дизайн DOOM включал в себя сложную, доселе невиданную архитектуру уровней, которая опиралась на принципиально новый технологический фундамент. Движок DOOM, id Tech 1, работал с текстурами и освещением лучше, чем любая существующая на тот момент технология, а его скорость была прежде доступна только консольным играм. Последнее удалось осуществить благодаря скромной технологии BSP (binary space partitioning, двоичное разбиение пространства). Внедряя BSP, id гарантировала, что ее движок войдет в историю независимо от того, какая игра на нем будет сделана.
Базовая единица id Tech 1 – это вершина (vertex), точка в трехмерном пространстве. Вершины соединяются линиями, которые называются лайндефами (linedef). Когда вы добавляете к лайндефу переменную высоты, это (двумерное) вертикальное пространство с границей в виде лайндефа называется сайддефом (sidedef). На это пространство наносится текстура. Как только все вершины соединяются лайндефами, образуется многоугольник, называемый сектором, у которого есть свои собственные переменные высоты и освещения. Текстуры можно накладывать как на любые сайддефы, так и на «пол» и «потолок»: они называются виспланами (visplane), и их положение определяется формой сектора. Наконец, в сайддефе можно проделывать отверстия, чтобы создавать окна и двери, в результате чего свет и звук будут проникать из одного сектора в другой (рис. 7). Движок не позволяет создавать по-настоящему трехмерные карты, потому что сектора не могут быть размещены друг над другом, но он все еще очень эффективно создает иллюзию вертикальности окружения. id Tech 1, в отличие от движка Wolfenstein 3D, не требует, чтобы все объекты были ортогональны друг другу и располагались под прямыми углами, но он по-прежнему работает только со строго горизонтальными или вертикальными поверхностями: в игре не может быть наклонных полов или потолков. Это означает, что текстуры накладываются в установленных плоскостях и каждое смещение высоты потолка или пола (включая движущиеся объекты, такие как лифты) фактически дискретно и представляет собой границу между секторами. Джон Кармак объясняет:
«Главный прорыв в движке DOOM – все предыдущие игры собирали уровни из тайлов, в то время как DOOM свободно распоряжалась двумя измерениями. Такой подход стали называть 2.5D графикой, потому что карта уровня остается двумерной, а высота пола и потолков меняется. Кроме того, движок имел текстурированные полы и потолки и позволял настраивать в различных помещениях разные уровни освещенности, а не только привязывать их к позиции игрока, чтобы яркий свет вокруг него постепенно ослабевал. Так мы реализовали зоны, где свет мигает. Кроме того, мы могли динамически двигать пол и потолок, не снижая производительности. Двумерные линейные сегменты двигать туда-сюда было нельзя, поэтому двери в игре не могли распахиваться – только подниматься и опускаться. Но мы могли в любой момент как угодно менять уровни освещенности и любые высоты, не влияя на скорость рендеринга. Благодаря этим нововведениям появились некоторые геймплейные элементы».
Свобода выбора углов и высоты потолка/пола уже сильно отличала DOOM от Wolfenstein 3D, но два других фактора изменили обстановку еще кардинальнее. Сайддефы были разделены на три секции: верхнюю, среднюю и нижнюю. Обычные стены использовали только средние секции, а стены с отверстиями – все три. Таким образом уровни можно было наполнять деталями, не полагаясь исключительно на спрайты. На любой заданной вертикальной поверхности можно было отобразить три разные текстуры. Было бы куда проще нарисовать несколько текстур на одном текстурном атласе, а не добавлять лишние вершины. Но сама идея того, что стена может менять текстуру в зависимости от того, насколько высоко вы находитесь, все еще представляла собой концептуальный прорыв. В результате окружение получалось более детальным, а отдача от наложения текстур – максимальной. Сами текстуры id, разумеется, уже использовала в последние годы; Джон Кармак стремился задействовать их еще с 1990 года. После Hovertank 3D, в которой не было текстур, он с нетерпением ждал возможности перейти к следующей задаче.
Рис. 7. Вершина (1), лайндеф (2), сайддеф (3) и часть висплана (4) в DOOM на уровне E1M1
Ромеро говорит следующее:
«Мы сделали наложение текстур в Catacomb 3-D, потому что задались вопросом: „А что дальше?“; мы хотели превзойти себя. У нас получилось EGA-наложение текстур, которое на самом деле намного сложнее, чем VGA-наложение текстур. Таким образом, первым шутером от первого лица с наложением текстур стала Catacomb 3-D, а не Ultima. Ultima Underworld вышла в конце апреля 92-го, а неделю спустя мы выпустили Wolfenstein 3D с нашим VGA-текстурированием. Они сделали первое VGA-наложение, но в Catacomb 3-D в 91 году мы сделали первое [EGA-]наложение».
Тот факт, что подобная конкуренция графических стандартов продолжается и двадцать лет спустя, указывает на важность самой возможности наложения текстур для игр. Более того, комментарии Ромеро подтверждают мысль о том, что Catacomb 3-D была своего рода трамплином, скорее шансом протолкнуть дальше технологию, а не тщательно продуманным игровым опытом. Расцвела эта технология только в Wolfenstein 3D. Мы по-прежнему должны отдать должное Ultima Underworld, где текстуры накладывались не только на стены, но также на пол и потолок, а полы могли иметь переменную высоту и даже угол наклона. С точки зрения скорости Ultima – не ровня американским горкам DOOM, но на самом деле она не такая уж и медленная. Правда тот факт, что Ultima Underworld совсем не медленная по современным стандартам, может говорить скорее об общем снижении скорости в играх от первого лица (или, по крайней мере, во многих из них), вышедших после DOOM, – мы можем обвинить в этом Halo и бум консольных шутеров. Кармак не стремился создавать инновации сами по себе, он занимался прикладной инженерией:
«Никто в игровой индустрии не может заявить, что это он изобрел наложение текстур. Можно сказать, что ранние игры, такие как Wing Commander, имели масштабируемую спрайтовую графику, а масштабирование битмапов – это тоже своего рода наложение текстур, просто ограниченное. В Wolfenstein 3D и DOOM использовался другой принцип: они жертвовали степенями свободы ради более высокой производительности… Подход, которого я придерживался во время работы над всеми нашими ранними играми вплоть до Quake, заключался в том, что перемещаться по миру намного важнее, чем наклонять голову или пол. Отказавшись от этого, вы можете выиграть в чем-то другом. Инженерия – это вечный поиск компромиссов. Мы можем пожертвовать одним, чтобы добиться другого, а умная инженерия – это умение извлекать выгоду из каждого компромисса».
В любом случае наложение текстур в DOOM – это пример симбиоза технической сложности и дизайнерского видения. Цветовая палитра игры изначально неброская – Wolfenstein 3D (рис. 8) смотрится куда ярче по сравнению с DOOM, где преобладает серые, коричневые и металлические оттенки (рис. 9). Такая цветовая гамма была прочно вмонтирована в конструкцию движка. Это наглядный пример слияния художественного и технического развития, идущих рука об руку. Идея, по словам Кармака, состояла в том, чтобы ограничить палитру небольшим набором цветов, но при этом сохранить качество освещения «с плавным переходом от ярких цветов к более мрачным».