Quake engine
| Quake engine | |
|---|---|
| Тип | игровой движок |
| Разработчик | |
| Ключевыепрограммисты | Джон Кармак,Майкл Абраш |
| Аппаратные платформы | Персональный компьютер 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 обеспечивают широкие возможности для переноса программы на другиеоперационные системы или платформы (например, наигровую приставку).
История разработки
[править |править код]
Движок был написан американским программистомДжоном Кармаком (англ. 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]. Игры и модификации на этом движке активно выходят до сих пор.
Технические характеристики
[править |править код]Сокращение трёхмерной сложности для увеличения скорости
[править |править код]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].
После того, как карта избавлялась от лишних полигонов, использовалась вторая система предварительной обработки, которая рассчитывала и внедряла карты освещения в игровую карту, тем самым ещё более уменьшая нагрузку нацентральный процессор во время игры.
Секционирование карты для увеличения скорости
[править |править код]
Для оптимизации рендеринга разработана методика, которая позволяет не выполнять обработку тех частей пространства, которые в данный момент не видны игроку (например, находятся за стеной). Если игрок во время игры не может видеть какую-то область карты, находящуюся поблизости, то движок загодя может не включать невидимые объекты в процесс рендеринга, что существенно уменьшает загрузку центрального процессора.
Трёхмерный движок без подобной оптимизации был бы вынужден рисовать каждую часть игрового пространства и затем пытался бы определить, какие полигоны являются самыми близкими. Затем неоптимизированый движок скрывал бы все полигоны, размещённые позади самых близких (методика, известная как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. Обе эти карты были профессиональными и очень дорогими.

Передвижение игрока
[править |править код]В отличие от современныхшутеров от первого лица, в которых игрок полностью управляет взглядомпротагониста с помощью движенийкомпьютерной мыши, в 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). Этот режим позволяет компьютеру игрока предсказывать движения объектов до ответа сервера, что позволило значительно снизить требования к скорости интернет-соединения, тем самым открыв доступ к одновременной игре на сервере огромному количеству людей.
Влияние на современный игровой дизайн
[править |править код]
Помимо большого воздействия на методы разработки компьютерных игр и игровую индустрию в целом, движок Quake оказал огромное влияние на методы игрового дизайна. Многие технологии, которые используются в движке Quake, до сих пор востребованы в современныхигровых движках.
Практически все игры, вышедшие после Quake, и все современные игры, используют трёхмерную оптимизацию под названиемпрепроцессинг для того, чтобы увеличить скорость игры на персональных компьютерах пользователей иигровых приставках. Именно поэтому 3D-игры способны выводить такую качественную визуальную картинку и эффекты — большинство лишних данных было удалено ещё до того, как игрок смог бы их увидеть. Суть препроцессинга заключается в том, что ненужные объекты выгружаются из оперативной памяти после их использования, например — игрок стреляет из оружия, и использованные патроны, которые вылетают из него, тут же исчезают (при этом выгружаясь из памяти).
Все игры существенно отличаются от профессиональных пакетов трёхмерного моделирования (CAD). Профессиональные программы не имеют никаких временных ограничений нарендеринг изображения. Ничто не может быть выброшено для увеличения скорости рендерингатрёхмерной технической модели, так как любая часть дизайна этой модели может измениться в любой момент. По этой причине профессиональныеграфические платы были значительно более дорогими и мощными, чем те графические карты, которые использовались в домашних компьютерах для запуска компьютерных игр. Профессиональные видеокарты должны обладать существенно большей мощностью обработки, так как имеют дело с полной сложностью необработанного трехмерного пространства.
ПосколькуQuake была первой полностью трёхмерной игрой в своём виде, она должна была иметь возможность работать на компьютере, который не имеет видеоакселератора, поэтому в нее были включены широкие возможности, касающиеся программной обработки изображения, то есть процесс вывода графики ложится не на видеокарту, а на процессор.
В то время видеоакселераторы составляли новый и непредсказуемый рынок, и была неопределённость, будут ли они пользоваться спросом или нет. Сейчас видеокарты составляют известный и высоко развивающийся рынок и являются необходимым компонентом любого нового компьютера. Преимущественное большинство современных компьютерных игр не может вообще работать, если не доступно аппаратное трёхмерное ускорение, то естьвидеокарта, в то же время игры того времени преимущественно использовали процессор для вывода графики.
Игры, использующие движок Quake
[править |править код]Ниже приведен список коммерческих игр, в которых используется движок Quake[5]. Игры, которые сделаны на движках, основанных на Quake (таких, какDarkPlaces), не указаны.
- 1996 —Quake отid Software
- 1996 —Quake: Team Fortress за авторством Робина Уокера, Джона Кука, Яна Кофли
- 1997 —Quake Mission Pack #1: Scourge of Armagon от Hipnotic Interactive (сейчасRitual Entertainment)
- 1997 —Quake Mission Pack #2: Dissolution of Eternity отRogue Entertainment
- 1997 —Deathmatch Maker от Virtus Corporation
- 1997 —X-Men: The Ravages of Apocalypse от Zero Gravity Entertainment
- 1997 —HeXen II отRaven Software
- 2000 —Laser Arena от Trainwreck Studios
- 2001 —C.I.A. Operative: Solo Missions от Trainwreck Studios
- 2001 —Urban Mercenary от Moshpit Entertainment
- 2002 —Eternal War: Shadows of Light от Two Guys Software, Ltd.
Модификации/игры на основе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, а также с их модификациями.
- QE4
- QERadiant
- Qoole
- QuArK
- Worldcraft (до версии 2.0)
Дальнейшее развитие
[править |править код]
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].
Открытие исходных кодов движка Quake21 декабря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]).
Примечания
[править |править код]- ↑123Статьи. Последние часыHalf-Life. Часть вторая. Миллионеры изMicrosoft . Half-Life Inside (5 декабря 2005). Дата обращения: 11 июля 2009. Архивировано изоригинала 9 марта 2012 года.
- ↑Build Engine (англ.). — официальный сайт движка. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
- ↑12GoldSource (англ.). Valve Developer Community. — игровой движок GoldSource в сообществе разработчиков Valve. Дата обращения: 14 мая 2010. Архивировано 15 февраля 2012 года.
- ↑Данил Гридасов. Doom 3 (рус.). iXBT.com (2 сентября 2004). — обзор игрыDoom 3, детальное описание движкаid Tech 4 и технологий, использующихся в нём. Дата обращения: 14 мая 2010. Архивировано 12 февраля 2012 года.
- ↑Quake engine (англ.). MobyGames. — список игр на движке Quake. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
- ↑Source (англ.). Valve Developer Community. — игровой движок Source в сообществе разработчиков Valve. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
- ↑12DarkPlaces (англ.). — официальный сайт. Дата обращения: 14 мая 2010. Архивировано 19 марта 2012 года.
- ↑Документация по Xash3D (рус.). Дата обращения: 10 апреля 2022. Архивировано 2 апреля 2022 года.
- ↑Юрий Цуканов. Энтузиасты портировали Half‑Life на Android . Half-Life Inside (28 мая 2015). Дата обращения: 2 июня 2015. Архивировано 10 июня 2015 года.
Ссылки
[править |править код]- Официальный сайт компании (англ.). id Software. — главная страница. Дата обращения: 21 декабря 2009. Архивировано 19 марта 2012 года.
- id Software: Technology Downloads (англ.). id Software. — страница загрузкиисходного кода движков id Software, включая движок Quake. Дата обращения: 21 декабря 2009. Архивировано изоригинала 25 декабря 2003 года.
- Quake engine (англ.). MobyGames. Дата обращения: 21 декабря 2009. Архивировано 19 марта 2012 года.
- Quake engine (англ.). Mod DB. Дата обращения: 21 декабря 2009. Архивировано 19 марта 2012 года.
- Информация о портах движка Quake (рус.). iXBT.com. — тема нафоруме сайтаiXBT.com с информацией о различных модификациях движка, а также графических портах оригинальной игры. Дата обращения: 21 декабря 2009.
- Fabien Sanglard. Quake Engine Code Review (англ.). — обзор исходного кода. Дата обращения: 21 декабря 2009. Архивировано 19 марта 2012 года.
Сайты об игровом движке Quake и создании модификаций на его основе
- Ultimate Quake Engine (англ.). Дата обращения: 21 декабря 2009. Архивировано 19 мая 2012 года.
- For Quake (рус.). Дата обращения: 21 декабря 2009. Архивировано изоригинала 14 сентября 2008 года.
- Q3MAPPING (рус.). Дата обращения: 21 декабря 2009.