Virtual Laboratory Wiki
Advertisement
Quake engine
Тип Игровой движок
Разработчик Джон Кармак
id Software
Написана на Си
ОС DOS, Windows, PlayStation[источник?]
Лицензия GNU GPL
Сайт Сайт id Software

Скриншот из Quake, игры 1996 года от id Software.

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

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

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

История

Файл:Quake 1 (screenshot 02).png

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

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

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

Кроме того, движок содержит консоль, в которой используется своя система команд. Примечательной возможностью является также использование специальных конфигурационных файлов для настройки, которые пользователь может открыть в любом текстовом редакторе (таком, как стандартный «Блокнот» в Microsoft Windows) и настроить под себя. В таких файлах содержатся многие параметры игры, касающиеся как обработки графики, так и управления.

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

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

Технологии

Сокращение трёхмерной сложности для увеличения скорости

Файл:Quake Vertex Pruning Preprocessor.PNG

Процесс сокращения трёхмерной сложности в движке Quake объясняется в четырёх простых шагах.

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

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

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

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

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

Предвычисление освещения и затенения

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

Файл:Quake 1 (screenshot 01).png

Скриншот одного из первых уровней Quake, сделанный в условно-бесплатной версии, запущенной в Windows XP.

Секционирование карты для увеличения скорости

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

Как выполняется секционирование

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

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

Аппаратное 3D-ускорение

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

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

Файл:Nexuiz (screenshot).jpg

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

Передвижение игрока

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

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

Мультиплеер

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

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

Воздействие на современный игровой дизайн

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

Файл:Nexuiz (screenshot 02).jpg

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

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

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

Second Life, многопользовательский виртуальный мир, является одной из очень немногих современных игр, которая не делает препроцессинг и отсечение невидимых вершин. Как и в CAD-пакетах, в Second Life любой объект может быть изменён в любой момент людьми, создающими эти объекты. Как и в случае с CAD-пакетами, Second Life требует от потребителя значительно более мощную видеокарту, чем средние типичные видеокарты. Таким образом, освещение окружения и теневые эффекты намного менее сложны, чем в типичной предобработанной компьютерной игре, однако возможно именно эта возможность заставляет игру использовать менее качественную графику для меньшей загрузки ресурсов системы игрока.

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

Игры, которые используют движок Quake

Ниже приведен список коммерческих игр, в которых используется одвижок Quake.[2]
Игры, которые сделаны на движках, основанных на Quake (таких, как DarkPlaces), не указаны.

  • Quake (1996) – id Software
  • Quake Mission Pack #1: Scourge of Armagon – (1997) Hipnotic Interactive (сейчас Ritual Entertainment)
  • Quake Mission Pack #2: Dissolution of Eternity – (1997) Rogue Entertainment
  • HeXen II (1997) – Raven Software
  • HeXen II: Mission Pack: Portal of Praevus (1998) – Raven Software
  • Laser Arena (2000) – Trainwreck Studios
  • CIA Operative: Solo Missions (2001) – Trainwreck Studios
  • Urban Mercenary (2001) – Moshpit Entertainment
Модификации Quake, выпущенные на дисках
  • Aftershock (1996) – Head Games Publishing, Inc.
  • Q!Zone (1996) – Ratloop, Inc
  • Dark Hour (1996) – Microforum
  • Q2 (1996) – Micro Star
  • X-Men: The Ravages of Apocalypse (1997) – Zero Gravity Entertainment
  • Shrak (1997) – Ratloop, Inc
  • Malice (1998) – Ratloop, Inc

Редакторы карт

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

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

  • QE4
  • QERadiant
  • Qoole
  • Quark
  • Worldcraft (до версии 2.0)

Дальнейшее развитие

Файл:Quake - family tree.svg

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

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

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

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

Игровой движок Half-Life 2Source основан[5] на движке от Half-Life 1, а значит также содержит участки кода движка Quake.

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

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

Открытые игровые движки, основанные на Quake

  • DarkPlaces – реализованы тени и освещение в реальном времени, шейдерные эффекты, поддержка BSP-карт Quake III и формата ogg. Используется в игре Nexuiz.
  • Tenebrae – один из первых игровых движков, основанных на Quake, в котором появилась поддержка затенения и освещения в реальном времени.
  • Telejano – модификация движка, которая добавляет много современных эффектов частиц.
  • Tomaz Quake – одна из первых появившаяся модификаций движка. Использовалась в бесплатной автомобильной аркаде MiniRacer, а также в одноименном порте, улучшающем графику в Quake.
  • Twilight Engine – современный производительный движок, основанный на Quake с большим количеством нововведений. Полностью изменена файловая структура. Можно подсоединить любой рендер, например OGRE.

Примечания

  1. 1,0 1,1 Обзор игровых движков - движки и игры от iD Software (рус.). Game Sector.
  2. Список игр указан согласно информации на mobygames.com
  3. GoldSource — Valve Developer Community
  4. Скриншоты Half-LifeAG.ru
  5. Source — Valve Developer Community

См. также

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

Ссылки

en:Quake engine da:Quake-motor de:Quake-Engine fr:Id Tech 2 it:Quake engine ja:Quake Engine pl:Quake engine pt:Quake engine fi:Quake-pelimoottori sv:Quake engine zh:雷神之锤引擎

Advertisement