id Tech — один из самых старых и известных игровых движков, снискавший популярность по серии игр Doom. В отличии от других движков использует только OpenGL (в основном движки работают с API DirectX) — это позволяет относительно легко портировать игры под платформы, отличные от Windows (DirectX нативно работает только в ней). Так же через какое-то время после выхода новой версии движка исходный код старой публикуется в свободном доступе.
Первый движок от id Software, впервые появился в 1993 году в игре Doom, откуда пошло его второе название — Doom Engine. Движок был псевдотрехмерным, монстры были спрайтовыми, но графика по тем временам была передовой:
Движок был гораздо «продвинутее», чем таковой в Wolfenstein 3D:
- Каждая комната могла иметь свою высоту потолка и пола, но при этом комнаты не могли быть друг над другом, то есть карта уровней двухмерная.
- Стены могут быть ориентированы по любым направлениям, но при этом пол и потолок всегда оставались горизонтальными, а стены — вертикальными.
- Изменяющаяся освещённость, повышавшая реалистичность графики.
- Лифты, дистанционно открывающиеся двери, опускающиеся и придавливающие потолки, поднимающиеся ступеньки и другие движущиеся элементы.
- Персонажи могут прыгать, падать с крыш и летать по воздуху (однако пройти под летящим врагом или пролететь сверху в прыжке всё равно невозможно).
- Звуковая подсистема поддерживала стереозвук и микширование до 8 эффектов одновременно.
- Персонаж при движении покачивался вверх-вниз, что создавало большую иллюзию ходьбы.
- Во всей игре масштаб спрайтов и текстур постоянный. Поэтому, например, невозможно установить высокодетализированный плакат на менее детализированной стене.
- Движок не делает проверок по оси Z — например, рыскающий в подвале имп вполне мог нанести повреждения игроку, находящемуся в паре сотен метров выше, на чердаке, а взорвавшаяся у основания здания ракета наносила урон монстру на крыше.
id Tech 2
Вторая версия движка изначально разрабатывалась для другого популярного шутера 90ых — Quake 2, поэтому и назывался движок изначально Quake 2 Engine. Для 1997 года движок был передовым (до выхода первого Half-Life оставался год...), обеспечивая хорошую по тем временам графику:
Изменений в сравнении с первым id Tech было много:
- Была включена поддержка OpenGL для видеокарт 3dfx Voodoo (ныне исчезнувших), nVidia RIVA TNT и ATI RagePro. Однако на момент выхода движка ускорители графики были мало распространены, поэтому в движок был включен и программный рендеринг.
- Формат уровней использует BSP-дерево (в общих чертах — изначально имеется некое множество полигонов. Из них выбирается один, который своей плоскостью разбивает пространство на два подпространства. Он становится корневым узлом дерева. Оставшиеся полигоны разделяются на два множества, в зависимости от того, в каком подпространстве они геометрически располагаются. Из полученных множеств снова выбираются рассекающие полигоны, которые в свою очередь делят их на две части. Эти полигоны становятся узлами дерева. Процедура разделения рекурсивно продолжается до тех пор, пока все полигоны не попадут в дерево).
- Освещение уровней использует метод лайтмапов — карт освещения, в которых световые данные для каждой поверхности являются предварительно рассчитанными и сохранены как изображения в файлах. Лайтмапы используются для определения того, какую интенсивность света должна получить каждая модель, но они не определяют направление, из-за чего можно было наблюдать, что тени иногда шли независимо от направления ламп или просто висели на воздухе.
id Tech 3
Движок создавался изначально для игры Quake 3 (угадайте, как он еще назывался — правильно, Quake 3 Engine):
Как и вторую версию движка, id Tech 3 писал все тот же Джон Кармак полностью с нуля. Для 1999 года движок был достаточно продвинут, однако все же проигрывал по возможностям GoldSrc в Half-life 1:
- id Tech 3 использует трехмерные модели формата MD3. Этот формат использует вертексную анимацию (покадровая запись деформаций объекта с их последующим воспроизведением). Возможности анимации в MD3-формате значительно превосходят таковые в формате MD2, который использует движок id Tech 2, потому что аниматор может использовать любое количество кадров в секунду для анимации модели, в то время как ограничение MD2 — лишь 10 кадров в секунду. Это позволяет создавать более масштабную и реалистичную анимацию. Модели в формате MD3 могут состоять из нескольких частей, скрепленных друг с другом. Таким образом, каждая часть тела персонажа (торс, ноги, голова) могут двигаться независимо друг от друга и иметь свой набор текстур.
- Модели персонажей и игровые уровни освещены с использованием цветовой интерполяции (считывается информация о цвете каждого полигона, на которые разбита поверхность объекта, и плавно интерполируется интенсивность красного, зеленого и синего цветов по трем координатам — это уменьшает блочность изображения).
- id Tech 3 способен работать с тремя различными типами теней. Первый, относительно простой, так называемый «пузырь» или капельная тень (просто круглое затенение под моделями персонажей). Второй создаёт непрозрачные черные тени с резкими краями. Третий рисует вторую полупрозрачно (в зависимости от освещения объекта).
id Tech 4
Движок является существенно переделанным id Tech 3 и впервые использовался в игре Doom 3 (ага, и назывался Doom 3 Engine):
Для 2004 года это был, пожалуй, самый продвинутый движок — Doom 3 заигрывали до дыр, и он не устаревал вплоть до выхода нового Doom аж в 2016 году. Изменений в сравнении с id Tech 3 было много:
- Движок поддерживает API OpenGL 2.0, но при этом перестал поддерживать программный рендеринг.
- Движок поддерживает рельефное текстурирование с использованием карт нормалей, что сделало поверхность объектов более реалистичной.
- Главным новшеством движка id Tech 4 было использование в нём полностью динамического попиксельного освещения: используется унифицированная модель, которая генерирует освещение и затенение «на лету». Это означает, что любые источники света влияют на всю сцену, а не только на её заранее определённую часть. К возможностям этой технологии относится способность самозатенения, которое реализуется с помощью теневых объёмов. С использованием теневых объёмов персонажи могут отбрасывать тени сами на себя: например, подбородок человека может отбрасывать тень на его грудь.
- Технология мегатекстуры: единственная массивная текстура (32 768 x 32 768 пикселей), покрывающая всю карту полигонов и высокодетализированный ландшафт. Мегатекстура может также хранить физическую информацию о ландшафте типа силы тяжести в определенных областях, или указывать, какой звуковой эффект должен проигрываться, если игрок двигается по определенным частям карты, то есть ходьба по скале будет казаться отличной от ходьбы по траве.
id Tech 5
Движок был представлен в 2007 году на... WWDC на компьютере Apple Mac Pro. Казалось бы — вот оно, будущее игр на macOS, однако увы — только одна из игр на этом движке (Rage) официально вышла под яблочную ОС:
Движок является доработанным id Tech 4 для консолей — в нем есть поддержка PlayStation 3 и Xbox 360. Изменений немного:
- В движке используется расширенная технология MegaTexture, которая использует текстуру с разрешающей способностью до 128 000 × 128 000 пикселей (в 16 раз больше по сравнению с последней версией id Tech 4, где использовалась текстура размером 32 768 × 32 768 пикселей).
- Движок обзавелся поддержкой многоядерных процессоров.
- Одной из особенностей рендерера — использование полутени при затенении, которая достигается путем использования теневых карт. Так же движок поддерживает HDR и размытие в движении.
id Tech 6
Самая новая версия движка, анонсирована в 2011 году, и на нем на данный момент вышла всего одна игра — Doom в 2016 году:
Возможности движка существенно выросли — теперь он поддерживает консоли нового поколения, PlayStation 4 и Xbox One, а так же кроме OpenGL научился работать и с API Vulkan. Список изменений:
- Движок поддерживает технологию SVO — разреженное воксельное октодерево, то есть геометрия игрового уровня теперь не полигональная (набранная из полигонов — треугольников), а воксельная (набранная из вокселов — трехмерных пикселов). Одна из целей технологии SVO состоит в том, чтобы иметь возможность «подгружать» части октодерева в видеопамять, идя вниз вдоль ветвей дерева. Это значит, что объекты на нижних ветвях октодерева, то есть те объекты, которые расположены к наблюдателю ближе всего, будут рендериться в максимальном качестве, с максимальной детализацией и текстурами максимального разрешения. Соответственно, для дальних объектов, которые расположены на более высоких ветках октодерева, будет использоваться меньшее качество, они будут построены на вокселях больших размеров. Таким образом, данная технология является способом контроля уровня детализации.
- В id Tech 6 с помощью SVO рендерится только статическая геометрия, например ландшафт, строения и т. д. Из-за этого рейкастинг-освещение также статическое. Все динамические объекты типа персонажей, транспорта и т. д. построены на классических полигонах и динамически освещаются с помощью стандартных растеризационных методик.
- id Tech 6 использует более продвинутую технологию мегатекстуры — теперь вся поверхность уровня покрывается одной текстурой.
Будущее движка
Об id Tech 7 известно мало — в нем будет улучшено SVO (в частности появится динамическая геометрия), и на этом все: ни дат выхода, ни утечек. И это вполне ожидаемо — на id Tech 6 вышла всего одна игра, и движок активно развивается и дорабатывается (например, на нем будет работать новая часть Wolfenstein), поэтому задумываться о новых версиях пока еще рано.