id Tech 3 , широко известный как движок Quake III Arena , — игровой движок , разработанный компанией id Software для видеоигры Quake III Arena . Он был принят во многих играх. В свое время он конкурировал с Unreal Engine ; оба двигателя имели широкую лицензию.
Хотя id Tech 3 основан на движке id Tech 2 , большая часть кода была переписана. Преемник id Tech 4 был создан на основе id Tech 3, как и движок IW Infinity Ward, использовавшийся в Call of Duty 2 и далее.
На QuakeCon 2005 Джон Кармак объявил, что исходный код id Tech 3 будет выпущен под лицензией GNU General Public License v2.0 или более поздней версии , и он был выпущен 19 августа 2005 года. Первоначально распространялся id через FTP , [ 1] код теперь можно загрузить из учетной записи id на GitHub .
В отличие от большинства других игровых движков, выпущенных в то время, включая своего основного конкурента Unreal Engine , для запуска id Tech 3 требуется графический ускоритель , совместимый с OpenGL . Движок не включает в себя программный рендерер .
id Tech 3 представила изогнутые поверхности на основе сплайнов в дополнение к плоским объемам, которые отвечают за многие поверхности, присутствующие в игре. [2]
Графическая технология игры тесно связана с « шейдерной » системой, где внешний вид многих поверхностей может быть определен в текстовых файлах, называемых «шейдерными сценариями». Шейдеры описываются и визуализируются как несколько слоев, каждый слой содержит текстуру, «режим наложения», который определяет, как накладывать ее на предыдущий слой, а также режимы ориентации текстуры, такие как отображение среды, прокрутка и вращение. Эти особенности можно легко увидеть в игре по множеству ярких и активных поверхностей на каждой карте и даже на моделях персонажей. Система шейдеров выходит за рамки визуального внешнего вида, определяя содержимое объемов (например, объем воды определяется путем применения шейдера воды к его поверхностям), излучение света и звук, который воспроизводится, когда по объему наступают. [3] Чтобы облегчить расчет этих шейдеров, id Tech 3 реализует специальную быструю функцию обратного квадратного корня , которая привлекла значительное внимание сообщества разработчиков игр благодаря умному использованию целочисленных операций. [4] [5]
Все внутриигровые видеоролики используют собственный формат под названием «RoQ», который изначально был создан Грэмом Дивайном , соавтором Quake 3 , для игры The 11th Hour . Внутренне RoQ использует векторное квантование для кодирования видео и DPCM для кодирования звука. Хотя сам формат является запатентованным, он был успешно реконструирован в 2001 году [6] , а сам декодер RoQ присутствует в исходном коде Quake 3 . RoQ мало использовался вне игр, основанных на движках id Tech 3 или id Tech 4 , но поддерживается несколькими видеоплеерами (такими как MPlayer ), а также существует несколько сторонних кодировщиков. Заметным исключением является игра Postal 2: Apocalypse Weekend на базе Unreal Engine , в которой файлы RoQ используются для вступительных и завершающих роликов, а также для шуточного ролика, который воспроизводится после миссии в конце первой части.
id Tech 3 загружает 3D-модели в формате MD3. В этом формате для хранения анимации используются движения вершин (иногда называемые повершинной анимацией ) в отличие от скелетной анимации . Возможности анимации в формате MD3 превосходят возможности формата MD2 от id Tech 2, поскольку аниматор может иметь переменное количество ключевых кадров в секунду вместо стандартных 10 ключевых кадров в секунду MD2. Это позволяет создавать более сложные анимации, которые менее «трясутся», чем модели в Quake II .
Еще одна важная особенность формата MD3 заключается в том, что модели разбиты на три разные части, привязанные друг к другу. Обычно это используется для разделения головы, туловища и ног, чтобы каждая часть могла анимироваться независимо для смешивания анимации (т. е. анимация бега на ногах и анимация стрельбы на туловище). Каждая часть модели имеет свой набор текстур.
Модели персонажей освещены и затенены с использованием затенения Гуро, в то время как уровни (хранящиеся в формате BSP ) освещены либо с помощью карт освещения , либо затенения Гуро, в зависимости от предпочтений пользователя. Движок способен брать цветные огни из световой сетки и применять их к моделям, в результате чего качество освещения было для своего времени очень продвинутым.
В версии исходного кода под лицензией GPL большая часть кода, связанного с файлами скелетной анимации MD4 , отсутствовала. [ нужна цитация ] Предполагается, что id просто так и не закончила формат, [7] хотя почти все лицензиаты создали свои собственные системы скелетной анимации из того, что присутствовало. Ritual Entertainment сделала это для использования в игре Heavy Metal: FAKK² , SDK , для которого легла в основу поддержка MD4, созданная кем-то, использовавшим псевдоним Gongo . [8]
Движок способен создавать три разных типа теней. Просто помещают круг с блеклыми краями у ног персонажей, широко известный как техника «капельной тени». Два других режима проецируют точную многоугольную тень на пол. Разница между последними двумя режимами заключается в том, что один использует непрозрачные, сплошные черные тени, в то время как другой режим пытается (с переменным успехом) проецировать объемные тени трафаретной тени в средне-прозрачном черном цвете. Ни один из этих методов не отсекает теневые объемы, в результате чего тени распространяются вниз по стенам и сквозь геометрию.
Другие визуальные особенности включают объемный туман , зеркала, порталы, декали и искажение вершин в форме волны.
Звуковая система id Tech 3 выводит звук на два канала с использованием циклического выходного буфера, микшированного из 96 треков со стереопространством и эффектом Доплера . Все микширование звука выполняется внутри движка, что может создать проблемы для лицензиатов, надеющихся реализовать поддержку EAX или объемного звука . [ нужна цитация ] Некоторые популярные эффекты, такие как эхо, также отсутствуют.
Основным недостатком звуковой системы является то, что микшер не имеет собственного потока, [9] поэтому, если игра зависает слишком долго (особенно при навигации по меню или подключении к серверу), небольшой выходной буфер начнет зацикливаться. , очень заметный артефакт. Эта проблема также присутствовала в движках Doom 3 , Quake и Quake II . [ нужна цитата ]
id Tech 3 использует систему «снимков» для передачи информации об игровых «кадрах» клиенту через UDP . Сервер обновляет взаимодействие объектов с фиксированной скоростью, независимой от скорости, с которой клиенты обновляют сервер своими действиями, а затем пытается отправить состояние всех объектов в этот момент (текущий кадр сервера) каждому клиенту. Сервер пытается опустить как можно больше информации о каждом кадре, передавая только отличия от последнего кадра, который клиент подтвердил как полученный ( дельта-кодирование ). Все пакеты данных сжимаются с помощью кодирования Хаффмана со статическими заранее рассчитанными частотными данными, чтобы еще больше сократить использование полосы пропускания. [10]
В Quake 3 также была интегрирована относительно сложная система защиты от читов, называемая «чистый сервер». Любой клиент, подключающийся к чистому серверу, автоматически включает чистый режим, и пока чистый режим включен, доступ возможен только к файлам в пакетах данных. Клиенты отключаются, если их пакеты данных не проходят одну из нескольких проверок целостности. Файл cgame.qvm
с высокой вероятностью модификации, связанной с читерством, подлежит дополнительной проверке целостности. [ нужна цитация ] Разработчики должны вручную деактивировать чистый сервер для тестирования карт или модов, которые не входят в пакеты данных с использованием формата файлов PK3. Более поздние версии дополнили чистый сервер поддержкой PunkBuster , хотя все его возможности отсутствуют в выпуске исходного кода, поскольку PunkBuster является программным обеспечением с закрытым исходным кодом, и включение его поддержки в выпуск исходного кода привело бы к нарушению прав любых распространителей/повторных пользователей кода. лицензия GPL . [11]
id Tech 3 использует виртуальную машину для управления поведением объектов на сервере, эффектов и прогнозирования на клиенте и пользовательском интерфейсе. Это дает множество преимуществ, поскольку авторам модов не нужно беспокоиться о сбое всей игры из-за плохого кода, клиенты могут отображать более продвинутые эффекты и игровые меню, чем это было возможно в Quake II , а пользовательский интерфейс модов можно полностью настраивать.
Файлы виртуальных машин разрабатываются в ANSI C с использованием LCC для их компиляции в 32-битный формат псевдосборки RISC . Инструмент под названием q3asm затем преобразует их в файлы QVM, которые представляют собой многосегментированные файлы, состоящие из статических данных и инструкций на основе сокращенного набора входных кодов операций. Если не используются операции, требующие определенного порядка байтов , файл QVM будет работать одинаково на любой платформе, поддерживаемой Quake 3.
Виртуальная машина также содержала компиляторы байт-кода для архитектур x86 и PowerPC , выполняющие инструкции QVM через интерпретатор .
Ioquake3 — это проект игрового движка , целью которого является выпуск исходного кода id Tech 3 [12] [13] для удаления ошибок, очистки исходного кода и добавления более продвинутых графических и звуковых функций через SDL и OpenAL . ioquake3 также предназначен для использования в качестве чистого базового пакета, на основе которого могут быть построены другие проекты. Движок игры поддерживает формат Ogg Vorbis и захват видео демо в формате .avi . [14]
Проект был начат вскоре после выпуска исходного кода с целью создания безошибочного , улучшенного распространения исходного кода движка Quake III с открытым исходным кодом, на котором могут быть основаны новые игры и проекты. Кроме того, проект направлен на создание улучшенной среды, в которой можно будет играть в Quake III: Arena , пакет расширения Team Arena и все популярные моды . [15] [16] [17] [18] Примечательные функции, добавленные в проекте, включают встроенную поддержку VoIP , анаглифную стереорендеринг (для просмотра в 3D-очках) и многочисленные исправления безопасности. Список некоторых функций доступен на сайте проекта.
Ioquake3 лег в основу нескольких игровых проектов на базе движка id Tech 3, таких как OpenArena (имитация Quake III Arena ), [19] [20] Tremulous , [21] [22] Smokin' Guns , [23] Urban Terror. , [24] [25] Turtle Arena и World of Padman [26] [27] , а также проекты игровых движков, такие как efport ( проект воссоздания движка Star Trek: Voyager – Elite Force Holomatch ), ioJedi Outcast, [28] ioJedi Академия, [29] ioDoom3 [30] и OpenMoHAA . [31] Движок и связанные с ним игры были включены в несколько дистрибутивов Linux и BSD . [32] [33] [34] [35] [36] Движок cMod, созданный на основе более раннего порта Elite Force , использовался для упаковки бесплатного выпуска игры, посвященного 20-летию игры, для Windows и Linux . [37]
Исходный код движков Return to Castle Wolfenstein и Wolfenstein: Enemy Territory был выпущен под лицензией GNU GPL-3.0 или более поздней версии 12 августа 2010 года. [38] Разработчики ioquake3 объявили о начале соответствующих проектов движков (iortcw, [39 ] ] [40] iowolfet, ET: Legacy [41] ) вскоре после этого. [42]
Проект ioquake3 также использовался в академической сфере в качестве основы для различных исследований в таких учреждениях, как Центр компьютерных исследований в области музыки и акустики Стэнфордского университета (CCRMA), [43] [44] Нотр-Дам в качестве основы для виртуальной реальности. исследование, [45] и Центр передовых интернет-архитектур Технологического университета Суинберна. [46] [47] Исследователи из Университета Карнеги-Меллон и Университета Торонто даже предпринимают совместные усилия, которые используют ioquake3 в качестве платформы для своих опубликованных исследований. [48] [49] Студенты также использовали ioquake3 в качестве основы для продвинутых графических работ для своих диссертаций, например, работу Стефана Рейтера [50] [51] , которая даже была отмечена в проекте LLVM [52] благодаря его синтез движка ioquake3, техники рендеринга с трассировкой лучей и LLVM.
Хотя название «ioquake3» основано на сайте Райана «Icculus» Гордона icculus.org, Райан не возглавляет проект. Вместо этого он выполняет роль наставника и предоставляет хостинг для списков рассылки и репозитория SVN, используемого проектом. [53] С тех пор проект был разделен на производные, такие как Quake3e и Spearmint.
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка ){{cite web}}
: CS1 maint: неподходящий URL ( ссылка ){{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )