Quake engine

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Quake engine
Игровой движок (Список)
Разработчик Соединённые Штаты Америки id Software
Ключевые программисты Джон Кармак, Майкл Абраш
Часть серии движков id Tech
Предыдущий движок серии Doom engine
Следующий движок серии id Tech 2
Аппаратная платформа Персональный компьютер
Поддерживаемые ОС DOS, Windows
Написан на языках Си, язык ассемблера
Лицензия свободная, GNU GPL
www.idsoftware.com

Quake engine («движок Quake») — игровой движок, разработанный в 1996 году американской компанией id Software для использования в шутере от первого лица Quake. Quake engine стал одним из первых движков, способным обрабатывать в реальном времени полностью трехмерную графику. Наработки движка были применены компанией при разработке игровых движков следующего поколения — id Tech 2 и id Tech 3, которые были созданы для игр Quake II и Quake III Arena соответственно.

Согласно традиции id Software, спустя некоторое время после успешного коммерческого лицензирования, движок стал доступен для бесплатного использования по условиям лицензии GNU General Public License, которая подразумевает под собой право копировать, модифицировать и распространять его содержимое. Это оказало большое влияние на развитие мира открытого программного обеспечения а также породило большое количество форков — сторонних игровых движков, основанных на Quake engine.

Подобно движку Doom, Quake engine использует систему BSP-деревьев. Движок также использует затенение по методу Гуро для подвижных объектов и карт освещения для статических.

Первоначальной версией движка поддерживаются операционные системы DOS и Windows, однако открытый исходный код и использование стандарта OpenGL обеспечивают широкие возможности для переноса программы на другие операционные системы или платформы (например, на игровую приставку).

История разработки[править | править вики-текст]

Скриншот одного из первых уровней Quake

Движок был написан американским программистом Джоном Кармаком (англ. John Carmack) в 1996 году на языке Си специально для игры Quake. К разработке также был причастен Майкл Абраш (англ. Michael Abrash), который помогал Кармаку с алгоритмами и оптимизацией кода на ассемблере[1].

Разработка движка оказала огромное развитие на индустрию компьютерных игр, а также на способы их разработки[источник не указан 1149 дней]. Фактически, это был один из первых движков, имеющих открытую архитектуру. Это подразумевает то, что разработчики могут гибко использовать и модифицировать игры, потому что все используемые ресурсы, содержатся в отдельных архивах с расширением .PAK. Кроме того, движок содержит консоль, в которой используется своя система команд. Примечательной возможностью является также использование специальных конфигурационных файлов для настройки, которые пользователь может открыть в любом текстовом редакторе. Такие текстовые файлы содержат параметры игры, касающиеся как обработки графики, так и управления. Посредством изменения параметров в текстовом файле, пользователь может настроить игру по собственному усмотрению[2] .

Благодаря открытой архитектуре движка, для игры Quake было разработано большое количество модификаций, некоторые из которых были способны до неузнаваемости изменить игру, добавить новые локации, оружие, персонажей и ввести свои правила в игровой процесс[2]. Многие разработчики модификаций для Quake впоследствии основали собственные компании на рынке. В качестве примера можно привести студию Ritual Entertainment, разработавшую официальное дополнение для первой части Quake, а впоследствии и другие самостоятельные проекты, такие как шутер SiN. Одновременно с этим, создание Quake привело к новому этапу в развитии индустрии компьютерных игр, практически положив конец эпохе, когда коммерческую компьютерную игру мог разработать за короткие сроки один энтузиаст[2].

Основным конкурентом игры Quake на то время являлся Duke Nukem 3D, который использовал игровой движок Build[3]. Эта технология использовала спрайтовые модели и устаревшие методы моделирования уровней, из-за чего сильно проигрывала Quake engine в плане графики, а следовательно не пользовалась таким успехом при лицензировании сторонними разработчиками. Движок Quake был положен в основу при разработке GoldSource — технологии, на которой была создана ставшая культовой игра Half-Life[1][4]. Игры и модификации на этом движке активно выходят до сих пор.

Технические характеристики[править | править вики-текст]

Сокращение трёхмерной сложности для увеличения скорости[править | править вики-текст]

Процесс сокращения трёхмерной сложности в движке Quake объясняется в четырёх простых шагах:
1. Создание игрового пространства с помощью кистей
2. Определение препроцессором внутренних и внешних поверхностей
3. Обрезка препроцессором невидимых областей пространства
4. Заполнение пространства полигонами, рендеринг пространства

Компьютерная игра Quake стала одной из первых в мире полноценных и настоящих трёхмерных игр[источник не указан 1149 дней].

Игра использует специальную систему проектирования карт, которая выполняет предварительную обработку и предварительный рендеринг трёхмерного окружения с целью уменьшения необходимой мощности для обработки изображения во время процесса игры. Данная возможность была востребована, так как во время выхода игры стандартные процессоры имели частоту 50-75 МГц. Трёхмерная среда, в которой происходит действия игры, относится к карте даже при том, что эта среда трёхмерная по природе, а не плоское двухмерное пространство. Программа для редактирования карт использует многие простые выпуклые трёхмерные геометрические объекты, известные как «кисти» (от англ. brush), которые имеют возможность устанавливать свой размер и степень поворота — такими объектами могут быть различные предметы окружения.

Кисти размещаются и поворачиваются так, чтобы создать закрытые, пустые, объёмные пространства. Когда дизайн карты закончен, эта карта пропускается через препроцессор рендеринга. Этот препроцессор используется для определения местонахождения двух типов пустого пространства на карте: пустого пространства, созданного кистями, в котором будет находиться игрок во время игры; и другого пустого пространства, которое находится снаружи кистей и которое игрок никогда не увидит. Потом препроцессор убирает невидимые поверхности с отдельных кистей, которые находятся вне игрового пространства, и оставляет только те полигоны, которые определяют лишь внешний периметр внутреннего игрового пространства — таким образом достигается значительная оптимизация движка, и как следствие, ускоряется его работа.

У обработанного файла с картой количество полигонов может быть существенно меньшим, чем у первоначального необработанного файла. Иногда это отношение может доходить до 50—80 %[источник не указан 1149 дней]. На компьютерах того времени, центральные процессоры которых имели частоту в районе 50—70 МГц, было нормальным, что операция по отсечению занимала много часов.

Процесс предварительной обработки не может быть осуществлён, если есть хоть одно небольшое отверстие или «утечка» (англ. leak), которая связывает внутреннее игровое пространство с внешним пустым пространством. Эта проблема была обычным делом для сложных карт с многими строительными объектами, так как дизайнер уровней не мог уследить за всеми утечками на карте. Чтобы предотвратить утечки, кисти должны были накладываться одна на другую и немного проникать друг в друга. Попытка отлично выровнять кисти с необычной формой вдоль их краёв и граней могла привести к возникновению очень маленьких щелей, которые было очень трудно найти.

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

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

Предвычисление освещения и затенения[править | править вики-текст]

Движок Quake также задействует использование карт освещения и трёхмерных источников света, в отличие от статического освещения, основанного на секторах, которое использовалось в прошлых играх. Эта инновационная методика id Software начала использоваться во многих играх, которые были выпущены после Quake, особенно в шутерах от первого лица. При этом сама id Software переключилась на использование новой модели унифицированного освещения и затенения (англ. unified lighting and shadowing model), применив её в движке id Tech 4 (первая игра на его основе — Doom 3)[5].

После того, как карта избавлялась от лишних полигонов, использовалась вторая система предварительной обработки, которая рассчитывала и внедряла карты освещения в игровую карту, тем самым ещё более уменьшая нагрузку на центральный процессор во время игры. Однако полная световая обработка могла занять чрезвычайно много времени, таким образом, для начального процесса по дизайну карты менее качественная обработка света могла быть сделана, но лишь за счёт создания зубчатых световых оттенков (англ. lightcast) вокруг источников света[источник не указан 1149 дней].

Секционирование карты для увеличения скорости[править | править вики-текст]

Лава на одном из уровней игры Quake

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

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

Этот эффект может быть замечен в игре как маленькие туннели с острыми 90-градусными изгибами, ведущими от одного большого пространства в другое большое пространство. Маленький туннель используется для блокировки взгляда в смежное неотрендеренное пространство, и специальный тип прозрачной кисти (называемый visportal) используется для определения краёв того места, где движок должен прекратить рендеринг смежного пространства. В игре «Quake 1» возможность видеть через всю длину карты является довольно редкой, открытые пространства часто являются очень узкими и высокими, прежде всего используя расстояния «выше» — открытое небо и «ниже» —лава (а не «шире» и «дальше»); таким образом, создаётся низкополигональная иллюзия открытого пространства.

Исполнение[править | править вики-текст]

Дерево двоичного разбиения пространства (англ. Binary Space Partitioning tree — англ. BSP), создаваемое с карты, упрощает поиск полигона к О (число полигонов). Каждый «лист» BSP-дерева создаёт некоторую часть трёхмерного пространства (наподобие разрезания пирога на доли). Листья этого двоичного дерева имеют полигоны первоначальной карты, связанной с ними, которые затем используются для вычисления видимости каждой области. Для каждой области VSD-алгоритм ищет те части карты, для которых существует луч обзора. Это называют потенциально видимым набором (англ. Potentially Visible Set — англ. PVS).

Этот процесс использует большое количество памяти, так как он должен взять О (количество полигонов * количество полигонов) битов (необходима только «видимая/скрытая» информация). Джон Кармак понял, что одна область «видит» только маленькую часть других областей, и он сжимал эту информацию, используя кодирование длин серий (RLE-кодирование). Именно это позволило такой сложной для того времени графике работать довольно быстро на аппаратных средствах того времени.

Аппаратное 3D-ускорение[править | править вики-текст]

Движок «Quake», кроме того, что являлся одним из первых в мире трёхмерных движков, также являлся первым движком, который поддерживал аппаратную 3D-акселерацию (ускорение). Первоначально игра «Quake» (и, соответственно, движок) имела лишь поддержку программного рендеринга. Однако позже Джон Кармак создал версию движка, которая использовала преимущества графического чипа Vérité 1000 компании Rendition (эта версия движка получила внутреннее имя «VQuake»).

Поддержка OpenGL была вскоре добавлена в движок для ОС Windows 95 и выше (внутреннее имя этой версии — «GLQuake»). Многие полагают, что именно это создало своеобразную революцию в производстве и продаже специализированных видеокарт, которые были нужны тогда для перекладывания обработки графики с центрального процессора, а «GLQuake» стал первым приложением, которое действительно демонстрировало возможности графического чипсета «Voodoo» от компании 3dfx. Только две другие карты были способны показывать изображение на «GLQuake»: карта Intergraph 3D OpenGL и карта PowerVR. Обе эти карты были профессиональными и очень дорогими.

Скриншот из мультиплеерного шутера Nexuiz, который базируется на сильно модифицированом движке Quake — DarkPlaces.

Передвижение игрока[править | править вики-текст]

В отличие от современных шутеров от первого лица, в которых игрок полностью управляет взглядом протагониста с помощью движений компьютерной мыши, в «Quake» по умолчанию используется клавиатура для поворотов налево и направо, а также движений назад-вперед. Для совершения этих же движений можно использовать мышь, подобно игре «Doom».
Движения персонажа были достаточно неудобными и требовали опций, таких как «авто-уровень», который бы автоматически настраивал точку зрения по движениям игрока, а также «автоприцеливание» для стрельбы по вещам ниже или выше персонажа. Вероятно, именно из-за этих особенностей управления, дизайн локаций в «Quake» был упрощенным и схожим на псевдотрёхмерное (2.5D) окружение в «Doom». Только на нескольких уровнях игры был монстр, способный атаковать уровнем выше или ниже игрока. «Quake» имела возможность выбрать мышь для управления взглядом и клавиатуру для движений, но по умолчанию такая опция была отключена. В более поздней игре серии «Quake III Arena» — эта возможность учтена сразу.

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

Многопользовательская игра[править | править вики-текст]

Изначально движок «Quake» поддерживал только многопользовательскую игру по локальной сети и два сетевых режима — кооперативная игра и deathmatch. Такая сетевая игра работала по принципу «клиент-сервер».
Это значит, что все игроки, чтобы начать совместную игру, соединяются с выделенным сервером, который высылает им ответ на события в игре. Кроме того, использование такого принципа защищает игроков от де-синхронизации сервера. В зависимости от специфического маршрута к серверу, различные клиенты имеют разный пинг (скорость передачи пакета информации в локальной сети). Высокий пинг у игрока вызывает лаги, которые затрудняют его движения и делают его более уязвимым для других игроков.

Сетевой код игрового движка был переработан, а для игры «Quake» выпущено отдельное дополнение — «QuakeWorld» — которое позволило игрокам играть друг с другом по интернет-соединению, используя игровые режимы, которые впоследствии стали классическими. Мультиплеер оригинального «Quake» впоследствии приобрел в сообществе игроков название «LAN-Quake» (от англ. Local Area Network, LAN — локальная сеть).
Одним из нововведений в «QuakeWorld» является предсказывание поведения клиента (англ. client-side prediction). Этот режим позволяет компьютеру игрока предсказывать движения объектов до ответа сервера, что позволило значительно снизить требования к скорости интернет-соединения, тем самым открыв доступ к одновременной игре на сервере огромному количеству людей.

Влияние на современный игровой дизайн[править | править вики-текст]

Шейдерная вода, которая реалистично отражает окружающий мир в игре Nexuiz

Помимо большого воздействия на методы разработки компьютерных игр и игровую индустрию в целом, движок «Quake» оказал огромное влияние на методы игрового дизайна. Многие технологии, которые используются в движке «Quake», до сих пор востребованы в современных игровых движках. Некоторые специалисты отмечают, что такого скачка в игровой индустрии, который совершил движок «Doom», а затем и «Quake», больше никогда не будет[2].

Практически все игры, вышедшие после «Quake», и все современные игры, используют трёхмерную оптимизацию под названием «препроцессинг» для того, чтобы увеличить скорость игры на персональных компьютерах пользователей и игровых приставках. Именно поэтому 3D-игры способны выводить такую качественную визуальную «картинку» и эффекты — большинство лишних данных были удалены ещё до того, как игрок смог бы их увидеть. Суть препроцессинга заключается в том, что ненужные объекты выгружаются из оперативной памяти после их использования, например — игрок стреляет из оружия, и использованные патроны, которые вылетают из него, тут же исчезают (при этом выгружаясь из памяти).

Все игры существенно отличаются от профессиональных пакетов трёхмерного моделирования (CAD). Профессиональные программы не имеют никаких временных ограничений на рендеринг изображения. Ничто не может быть выброшено для увеличения скорости рендеринга трёхмерной технической модели, так как любая часть дизайна этой модели может измениться в любой момент. По этой причине профессиональные графические платы были значительно более дорогими и мощными, чем те графические карты, которые использовались в домашних компьютерах для запуска компьютерных игр. Профессиональные видеокарты должны обладать существенно большей мощностью обработки, так как имеют дело с полной сложностью непредобработанного трехмерного пространства.

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

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

Игры, использующие движок Quake[править | править вики-текст]

Ниже приведен список коммерческих игр, в которых используется движок «Quake»[6].

Игры, которые сделаны на движках, основанных на «Quake» (таких, как «DarkPlaces»), не указаны.

Модификации\игры на основе «Quake», выпущенные на дисках

Инструменты для работы с движком[править | править вики-текст]

Для движка «Quake» было выпущено множество редакторов карт, которые использовались создателями модификаций.

Многие из указанных ниже редакторов совместимы и с поздними версиями движка — «id Tech 2» и «id Tech 3», а также с их модификациями.

Дальнейшее развитие[править | править вики-текст]

Дерево игр и движков, созданных на основе движка «Quake».
Благодаря этой иллюстрации можно проследить, какое влияние оказал движок на другие, более современные игровые технологии.

«Quake engine» был положен в основу при разработке другой технологии id Software, движка «id Tech 2» (ранее известного как «Quake 2 engine»).

Следовательно, последующие движки компании, такие как «Id Tech 3» (для игры «Quake III Arena») и «id Tech 4» (впервые использованный в «Doom 3»), вероятно также содержат небольшие кусочки исходного кода от первого движка серии, потому что они были основаны на предыдущих версиях.
Согласно традиции id, исходный код «id Tech 2», «id Tech 3» и «id Tech 4» был открыт.

Компания Valve во время разработки «Half-Life» использовала игровой движок «Quake» со встроенным сетевым кодом «QuakeWorld». Будучи сильно переписанным, он получил название GoldSrc (GoldSource)[1][4] . Ранее, движок «Half-Life» описывался игровыми изданиями, как «основанный на унифицированной технологии Quake 1». По некоторым данным, в движок были также интегрированы некоторые наработки движка «Id Tech 2».
Более того, на старых скриншотах игры, сделанных ещё в период разработки, видно, что движок активно использует динамические тени от объектов[7]. Вероятно, их поддержка была убрана из финальной версии игры, так как разработчики решили, что домашние компьютеры тех времен ещё не готовы для таких сложных обработок.

Игровой движок «Half-Life 2» — «Source» основан на движке от «Half-Life 1», и, следовательно, содержит небольшие участки кода движка «Quake»[8].

Открытие исходных кодов движка «Quake» 21 декабря 1999 года привело к созданию большого количеству форков, а также позволило энтузиастам портировать движок на другие платформы, такие как мобильная операционная система Symbian или Java.

Наиболее известными бесплатными игровыми движками, основанными на «Quake engine» являются «DarkPlaces»[9] и «Tenebrae». Обе технологии поддерживают сложные шейдерные эффекты, бамп-маппинг, сложное освещение и другие современные визуальные эффекты, такие как HDR-рендеринг, а также динамические тени. На их основе созданы современные компьютерные игры с качественной графикой, а также порты (переработки) оригинального «Quake».

Открытые игровые движки, основанные на Quake[править | править вики-текст]

  • DarkPlaces — реализованы тени и освещение в реальном времени, шейдерные эффекты, поддержка BSP-карт «Quake III» и формата ogg. Используется в игре «Nexuiz»[9].
  • Tenebrae — один из первых игровых движков, основанных на «Quake», в котором появилась поддержка затенения и освещения в реальном времени.
  • Telejano — модификация движка, которая добавляет много современных эффектов системы частиц.
  • Tomaz Quake — одна из первых появившаяся модификаций движка. Использовалась в бесплатной автомобильной аркаде «MiniRacer», а также в одноимённом порте, улучшающем графику в оригинальном «Quake».
  • Twilight Engine — движок, основанный на «Quake» с большим количеством нововведений. Полностью изменена файловая структура. Можно подсоединить сторонний рендерер (графический движок), например, «OGRE».
  • JoeQuake — движок, а также одноименный графический порт для игры «Quake». Имеется поддержка текстур высокого разрешения, а также готовая сборка для операционной системы Linux.
  • Tremor Quake engine — пользовательский движок, основанный на одной из ранних версией движка «DarkPlaces», с добавлением наработок движка «JoeQuake». Поддерживаются различные форматы текстур, система частиц, динамические тени и модели формата MD3.

Примечания[править | править вики-текст]

  1. 1 2 3 Статьи. Последние часы Half-Life. Часть вторая. Миллионеры из Microsoft. Half-Life Inside (5 декабря 2005 года). Проверено 11 июля 2009. Архивировано из первоисточника 15 февраля 2012.
  2. 1 2 3 4 Lentyay. Обзор игровых движков (часть 4) — движки и игры от iD Software (рус.). game-sector.ru (14 января 2004). Проверено 14 мая 2010.
  3. Build Engine (англ.). — официальный сайт движка. Проверено 14 мая 2010. Архивировано из первоисточника 19 марта 2012.
  4. 1 2 GoldSource (англ.). Valve Developer Community. — игровой движок «GoldSource» в сообществе разработчиков Valve. Проверено 14 мая 2010. Архивировано из первоисточника 15 февраля 2012.
  5. Данил Гридасов. Doom 3 (рус.). iXBT.com (2 сентября 2004). — обзор игры Doom 3, детальное описание движка id Tech 4 и технологий, использующихся в нём. Проверено 14 мая 2010. Архивировано из первоисточника 18 февраля 2012.
  6. Quake engine (англ.). MobyGames. — список игр на движке «Quake». Проверено 14 мая 2010. Архивировано из первоисточника 19 марта 2012.
  7. Half-Life (Скриншоты) (рус.). Absolute Games. Проверено 14 мая 2010.
  8. Source (англ.). Valve Developer Community. — игровой движок «Source» в сообществе разработчиков Valve. Проверено 14 мая 2010. Архивировано из первоисточника 19 марта 2012.
  9. 1 2 DarkPlaces (англ.). — официальный сайт. Проверено 14 мая 2010. Архивировано из первоисточника 19 марта 2012.

См. также[править | править вики-текст]

  • id Tech — статья о серии игровых движков, частью которой является «Quake engine»
    • Doom engine — революционный движок id Software, преемником которой стал движок «Quake».
  • Wolfenstein 3D — игра id Software, одна из родоначальников жанра «шутер».

Ссылки[править | править вики-текст]

Сайты об игровом движке «Quake» и создании модификаций на его основе