Share to: share facebook share twitter share wa share telegram print page

Quake engine

Quake engine
Тип игровой движок
Разработчик Соединённые Штаты Америки id Software
Ключевые программисты Джон Кармак, Майкл Абраш
Аппаратные платформы Персональный компьютер
PlayStation
Поддерживаемые ОС DOS, Windows
Написан на языках Си, язык ассемблера
Лицензия свободная, GNU GPL
Часть серии движков id Tech
Предыдущий движок серии Doom engine
Следующий движок серии id Tech 2
Первая игра на движке Quake (22 июля 1996 года)
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].

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

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

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

Технические характеристики

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

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

Компьютерная игра Quake стала одной из первых в мире «полноценных» трёхмерных игр.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Исполнение

Дерево двоичного разбиения пространства (англ. 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 (позднее эволюционировал в Xonotic), который базируется на сильно модифицированном движке 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, до сих пор востребованы в современных игровых движках.

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

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

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

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

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

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

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

  • 1996 — Aftershock for Quake от Head Games Publishing, Inc.
  • 1996 — Q!Zone от Ratloop, Inc
  • 1996 — Dark Hour от Microforum
  • 1996 — Q2 от Micro Star
  • 1997 — Shrak от Ratloop, Inc
  • 1998 — Malice от Ratloop, Inc
  • 1998 — Abyss of Pandemonium от Impel Development Team

Инструменты для работы с движком

Для движка 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 Tech 2, id Tech 3 и id Tech 4 также был открыт.

Компания Valve во время разработки Half-Life использовала игровой движок Quake со встроенным сетевым кодом QuakeWorld. Будучи сильно переписанным, он получил название GoldSrc (GoldSource)[1][3]. Ранее движок Half-Life описывался игровыми изданиями, как основанный на унифицированной технологии Quake.

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

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

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

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

  • DarkPlaces — реализованы тени и освещение в реальном времени, шейдерные эффекты, поддержка BSP-карт Quake III и формата ogg. Используется в Nexuiz и её дальнейшем развитии, Xonotic[7].
  • Tenebrae — один из первых игровых движков, основанных на Quake engine, в котором появилась поддержка затенения и освещения в реальном времени.
  • Telejano — модификация движка, которая добавляет много современных эффектов системы частиц.
  • Tomaz Quake — одна из первых появившаяся модификаций движка. Использовалась в бесплатной автомобильной аркаде MiniRacer, а также в одноимённом порте, улучшающем графику в оригинальной Quake.
  • Twilight Engine — движок, основанный на Quake с большим количеством нововведений. Полностью изменена файловая структура. Можно подсоединить сторонний рендерер (графический движок), например, OGRE.
  • JoeQuake — движок, а также одноимённый графический порт для первой Quake. Имеется поддержка текстур высокого разрешения, а также готовая сборка для операционной системы Linux.
  • Tremor Quake engine — пользовательский движок, основанный на одной из ранних версией движка DarkPlaces, с добавлением наработок движка JoeQuake. Поддерживаются различные форматы текстур, система частиц, динамические тени и модели формата MD3.
  • Xash3D — пользовательский движок на базе Quake engine, Id Tech 2, Id Tech 3 и DarkPlaces, совместимый с Half-Life и некоторыми её модификациями на движке GoldSrc, но обладающий по сравнению с ним рядом улучшений (поддержка 3D-скайбоксов, рельефного текстурирования и т. д.)[8]. В свою очередь, сторонними разработчиками были созданы ответвления от основного движка, позволяющие запускать игру на различных платформах (в частности, Xash3D FWGS — на мобильных Android-устройствах[9]).

Примечания

  1. 1 2 3 Статьи. Последние часы Half-Life. Часть вторая. Миллионеры из Microsoft. Half-Life Inside (5 декабря 2005). Дата обращения: 11 июля 2009. Архивировано из оригинала 9 марта 2012 года.
  2. Build Engine (англ.). — официальный сайт движка. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
  3. 1 2 GoldSource (англ.). Valve Developer Community. — игровой движок GoldSource в сообществе разработчиков Valve. Дата обращения: 14 мая 2010. Архивировано 15 февраля 2012 года.
  4. Данил Гридасов. Doom 3. iXBT.com (2 сентября 2004). — обзор игры Doom 3, детальное описание движка id Tech 4 и технологий, использующихся в нём. Дата обращения: 14 мая 2010. Архивировано 12 февраля 2012 года.
  5. Quake engine (англ.). MobyGames. — список игр на движке Quake. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
  6. Source (англ.). Valve Developer Community. — игровой движок Source в сообществе разработчиков Valve. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
  7. 1 2 DarkPlaces (англ.). — официальный сайт. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
  8. Документация по Xash3D. Дата обращения: 10 апреля 2022. Архивировано 2 апреля 2022 года.
  9. Юрий Цуканов. Энтузиасты портировали Half‑Life на Android. Half-Life Inside (28 мая 2015). Дата обращения: 2 июня 2015. Архивировано 10 июня 2015 года.

Ссылки

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

Kembali kehalaman sebelumnya