Игровые движки: Quake Engine, id Tech 2 и id Tech 3

Автор: Юрий Ильин

Представляем нашим читателям серию статей о самых именитых 3D движках, легших в основу игр, ставших уже легендарными. Первая статья будет посвящена движкам id Software - Quake Engine, id Tech 2 (Quake II) и id Tech 3 (Quake III Arena).

Quake Engine: начало

14 лет назад свет увидела игра, изменившая ход истории... Мда, конечно, когда речь заходит о Quake, трудно бывает воздерживаться от столь пафосных и широковещательных заявлений — хотя бы потому, что «квака» действительно оказала гигантское влияние на игровую отрасль. Настолько гигантское, что сама парадигма современных трёхмерных 3D шутеров не сильно отличается от той, что были заданы Doom и Quake.

Quake, 1996 год.

Между релизами Doom и Quake прошло всего три года, однако технологическая разница между ними радикальная: в отличие от 2.5D игры Doom, Quake был подлинно трёхмерной игрой, где и архитектура, и персонажи, и любые объекты были объёмными. Одним из наиболее характерных различий, которое упоминают все и всегда, - это возможность размещения «комнаты над комнатой», т.е. размещения двух частично замкнутых помещений точно друг над другом. В Doom это было невозможно. В Quake на этом держится чуть ли ни всё.

Изначально руководители id Software хотели сделать что-то, чего никто никогда ещё не видел: эксперименты они себе позволить вполне могли, учитывая немалый успех их прежних франшиз, в особенности Doom и платформеров серии Commander Keen.

Спервоначалу Quake задумывался как подобие RPG, однако в итоге было решено сделать «реинкарнацию» Doom – к вящему недовольству, надо сказать, Джона Ромеро, основного дизайнера игры. Собственно, сразу после выхода Quake он и покинул id Software.

Противоречий внутри id было, на самом деле, немало: уровни игры делались ещё до того, как появился окончательный сценарий, и разные художники подчас не могли договориться между собой, как именно должна выглядеть игра — техногенно или «готично». С этим и связано то обстоятельство, что начальные уровни каждого эпизода происходят на футуристических военных базах, а уже дальше появляются «средневековая» архитектура, рыцари, огры и прочие кошмарные твари. Художники id Software вообще очень большие специалисты по созданию страшных тварей, чего уж там.

Привязка к чудовищам Лавкрафта и подобие сюжета, где приходится собирать руны для проникновения в подземный храм Шуб-Ниггурат (добраться до которой сложнее, чем расправиться с ней) появилась уже на самом последнем этапе. Таки тоже с подачи Ромеро.

Отдельная песня — это открытость Quake для моддинга. Достаточно быстро в широкие массы были выведены программы для создания уровней Quake — деривативы от тех разработок, которыми пользовались сами художники и дизайнеры id Software. Первым был QuakeEd для ОС NextStep, после выхода Quake II появился QE4 (собственный инструмент id, использовавшийся для создания уровней в Quake II), из которого выросли QERadiant, Q3Radiant (версия для Quake III и других игр из того же семейства), а затем появился и лидирующий ныне GTKRadiant, бесплатный и распространяемый под лицензией GPL конструктор уровней, поддерживающий чуть ли ни все движки семейства Quake и самые разные игры на их основе.

Редактор GTKRadiant, используемый для создания карт в играх на основе движков id Software.

Сейчас счёт любительским картам для Quake I-III идёт на тысячи.

Ну, а самое интересное, так это то, что более поздние движки – id tech 2 (Quake II), id tech 3 (Quake III), - по сути были доработанными производными от оригинального Quake Engine, с сохранением изрядных порций исходного кода. Когда началась разработка Doom III, в id тоже сначала собирались просто в очередной раз причесать, отполировать и доумудрить движок Quake III, однако в итоге пришлось переписывать большую часть кода, так что от Q3 в Doom III осталось очень негусто.

Технические аспекты

Главной задачей, стоявшей перед разработчиками Quake, было добиться более-менее реалистичной картинки — хотя в плане освещённости пространства — при очень ограниченных вычислительных ресурсах (а это пора, когда широкие массы пользовались ещё 486-ми машинами, в лучшем случае — ранними «Пентиумами», с диапазоном тактовых частот в среднем - 50-166 МГц).

Проблема была решена путём массы ухищрений, главными из которых является минимизация количества полигонов и «запекание» карты освещённости (т.е. света и тени) на этапе компиляции карты, а также деление карты на отдельные секции, чтобы минимизировать количество графики, которую движок прорисовывает в каждый конкретный момент времени (в картах Quake-образных игр применяется структура данных BSP – Binary Space Partitioning, двоичное разбиение пространства).

В редакторах, использующихся для создания карт, основной структурной единицей является т.н. «браш» (brush – кисть), странное, но исторически прилипшее название для многогранника. Из эти многогранников, которые можно деформировать, масштабировать и вращать по своему усмотрению, составляется вся геометрия уровня.

В более поздних играх, например, в Doom III, из «брашей» изготавливалась только базовая геометрия, в то время, большая часть внутриигровых объектов — это всё-таки уже модели, произведённые во внешних 3D-редакторах (3DS Max, в первую очередь), и импортированные в игру.

Импорт моделей был возможен и раньше, но нередко это был довольно-таки непростой и унылый процесс (например, для того, чтобы прописать модель в Quake III, для неё надо писать или генерировать специальный управляющий файл – программный код на высокоуровневом языке Quake C (.qc).

Подробнее об этом читайте по следующим ссылкам: Importing Custom MD3 Models from GMax/3DS Max into Radiant и Getting custom models into Doom 3 engined games.

Главная задача — это создать из брашей полностью замкнутое пространство, с тем, чтобы движок мог определить, какие поверхности игрок будет видеть, а какие — нет. Последние отсекаются, так что после компиляции количество отображаемых полигонов может падать в 1,5-2 раза.

Проклятьем любого, кто пытался создавать карты для игры, оказываются прорехи — Leaks, точки неплотного смыкания отдельных брашей, отделяющих внутриигровое пространство от «внешнего вакуума». Причём эти прорехи могут возникать весьма загадочным образом и в самых неожиданных местах, так что одно неосторожное движение «мэпмейкера» может привести к появлению неуловимой дырки, которую почти или совсем невозможно отыскать (в редакторе QuArK есть для этого свои средства, но и от них бывает мало радости). Нередко случалось так, что разработка потенциально шедевральной карты заканчивалась ровно на такой «дырке»: откомпилировать карту из-за неё становится абсолютно невозможно.

Редактор Quake Army Knife (QuArK), главный конкурент Radiant.

Те грани «брашей», которые игрок никогда не увидит, рекомендуется покрывать специальной служебной текстурой Caulk («Замазка»), - это позволяет экономить системные ресурсы и на этапе компиляции карты и во время самой игры.

Затем, для пущей оптимизации, необходимо дробить карту на отдельные секции, - это позволит движку сортировать положение объектов и геометрию относительно расположения наблюдателя (т.е. игрока), так что отрисовываться в каждый данный момент времени будет только та часть пространства, что доступна для непосредственного наблюдения.

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

Отдельный процесс — это текстурирование и расстановка источников освещения. И если само размещение текстур — это совсем не сложно (хоть и утомительно, как и настоящая поклейка обоев), их создание — процесс крайне небыстрый и муторный.

А в Quake III он стал ещё более муторным: во-первых, появилась поддержка 32-битных текстур с альфа-каналом, а кроме того, для каждой поверхности теперь надо было прописывать свой «шейдер» - программный код, описывающий её физические свойства и способ отображения комплекта налагаемых на неё текстур. К счастью, есть программы, автоматизирующие этот процесс, к тому же, никто не мешает просто в тексте кода шейдера заменять одни текстуры другими.

Наконец, после текстурирования и расстановки света, запускается компиляция и...

Всё, можно ложиться спать, потому что несколько часов обсчёта — гарантированны (в зависимости от мощности процессора). Можно себе представить, сколько занимал обсчёт карт на первых пентиумах, если и сейчас на это уходят часы.

Quake Engine: наследники

Вот на этой схеме представлено генеалогическое древо игр, построенных на основе движка Quake и его производных. Как видим, сюда записаны и Doom III, и серия Half-Life со всеми её модами, включая бесчисленные вариации Counter-Strike, и Call of Duty, и Jedi Knight, и много чего ещё.

При этом сами эти движки могут отличаться друг от друга радикальным образом. Ну, не похож Half-Life на Quake, хоть ты тресни, не похож ничем, совершенно разные подходы к дизайну всего и вся. А между тем — ближайшие родственники. Хотя, конечно, программисты и художники Valve внесли очень много изменений в исходный код, так что даже вполне обоснованно переименовали свою версию движка в GoldSrc.

Опять же, игра Heretic II, изготовленная Raven Software на основе движка Quake II, даже по жанру отличается от «оригинала» самым разительным образом; вид от третьего лица в «Еретике», подобие скелетной анимации на персонажах, позволяющая главному герою как минимум осуществлять дивные акробатические трюки, и множество других дополнений. Как в своё время писали сотрудники Raven, программисты id Software «вряд ли бы узнали собственный движок».

Heretic II - TPS на базе модифицированного движка Quake II.

Вместе со множественными достоинствами, деривативы Quake Engine, впрочем, наследовали и его многочисленные недостатки. Из которых чуть ли ни главным оказалась, мягко говоря, слабая работа с обширными открытыми пространствами - они сильно роняют FPS.

Quake II, Quake III

Как уже было сказано, исходные коды движков Quake II (id Tech 2) и Quake III (id tech 3), фактически, надстройки над оригинальным кодом Quake Engine.

Главное различие заключается в том, что id Tech 2 уже поддерживал аппаратное ускорение графики, в отличие от своего предшественника, к которому поддержку только-только появлявшихся ускорителей «пришивали» уже после выхода игры. Движок был построен иначе, нежели Quake Engine, некоторые компоненты были выделены в динамические библиотеки (DLL), они отвечали, в частности, за аппаратное и софтверное ускорение и часть игровой логики. В результате, кстати, размеры исходного кода Quake II оказались вдвое меньше исходника Quake Engine.

По содержанию Quake II разительно отличается от Quake, никакой «готичности» игры-основоположника не осталось, вместо огров и рыцарей — инопланетяне-киборги, вместо Шуб-Ниггурат — кибернетическая гадина с BFG, от уникальной атмосферы Quake в «сиквеле» не осталось вообще ничего.

Quake II, 1997 год.

Quake III Arena также лишён сюжетной связи с предшественниками (и вообще какого-либо сюжета),  это уже был чисто онлайновый мультиплеерный шутер, в котором одиночная игра нужна только так — попрактиковаться.

Что касается движка, то в изобразительном плане id Tech 3 от предшественников отличался более чем существенно по всем параметрам.

Во-первых, никакого софтверного рендеринга. Во-вторых, «шейдерная» система отображения поверхностей — эти шейдеры, впрочем, никакого отношения к языкам GLSL или HLSL (Shader Model 2.0 и 3.0) не имели; использовался свой собственный высокоуровневый скриптовой язык, с помощью которого можно было описывать свойства поверхности, блендинг (наложение) сразу нескольких текстур на одной и той же поверхности и задавать прочие параметры, положительно сказывавшиеся на качестве изображения.

Во-вторых, Quake 3 Arena функционировал на базе виртуальной машины, что сильно упрощало жизнь  моддерам, например, поскольку можно было не опасаться, что ошибка в каком-нибудь скрипте или собственном программном коде обрушит всю игру невосстановимым образом.

Quake III, 1999 год.

Ещё одной особенностью id Tech 3 стала реализация поверхностей Безье, с помощью которых можно было создавать округлые поверхности с неразличимой полигональностью (а генератор ландшафтов GenSurf и вовсе позволял применять их для генерации основной геометрии всей карты).

Кроме того, модели всех персонажей в игре делились на три секции — голова, торс, ноги — которые анимировались отдельно.

Впрочем, как и в случае с id Tech 2, анимация была не скелетной, а вершинной; формат скелетной анимации md4 начинали разрабатывать, но так и не закончили.

При всём при этом графика Quake 3 Arena в целом была не слишком выдающейся — точнее, местами даже раздражавшей своим сходством с неоновыми вывесками. В конечном счёте, движок явно разрабатывали под лицензирование другим производителям, которые уже как раз делали куда более зрелищные игры — American McGee's Alice, Call of Duty (кстати, в основе последних игр серии лежит движок IW 4.0, который сам является усовершенствованной версией одного из движков серии id Tech, причём скорее всего — именно id Tech 3), Jedi Knight: Jedi Outcast и Jedi Academy, Medal of Honor: Allied Assault и другие.

Tenebrae, Dark Places, Qfusion, Xreal

После того, как движки Quake Engine, id Tech 2 и id Tech 3 были выложены в открытый доступ под лицензией GPL, за дело взялись моддеры и программисты-энтузиасты, взявшиеся за усовершенствование старых движков. И выяснилось, что свой «запас прочности» они далеко не исчерпали.

Tenebrae - и это на базе движка Quake!

Так, например, в Tenebrae и DarkPlaces (оба движка представляют собой усовершенствованную версию Quake Engine) были реализованы многочисленные спецэффекты, связанные с динамическим освещением в реальном времени; качество картинки моментально подскочило на порядок, нагрузка на систему возросла соответственно.

Ещё один скриншот "покойной" Tenebrae.

Разработка Tenebrae, к сожалению, давно заброшена, а вот Dark Places развивается до сих пор.

Qfusion – весьма любопытная надстройка над движком id Tech 2, легшая в основу бесплатного шутера War$ow. По графическим возможностям превосходит оригинальную модификацию Quake III, без труда «пережёвывает» её ассеты (графику и спецэффекты), выдавая картинку не хуже качеством — а то и лучше. В более поздних версиях движка появились мягкие тени, вершинное освещение, карты нормалей и бамп-мэппинг, и т.д.

Dark Places. Старую "Кваку" не узнать...

Кстати, инициатором разработки стал наш соотечественник — Виктор Лучиц.

XreaL – модификация id Tech 3, задирающая его графические возможности до уровня Doom III, а то и повыше. К сожалению, сайт проекта уже очень давно не обновлялся и его дальнейшая судьба туманна. Такое часто бывает с любительскими проектами.

А ведь могло бы получиться что-то очень интересное.

Продолжение следует.

игры
Разделы:
Рубрики:
Популярное: