Unreal Engine — один из самых популярных и старых игровых движков, ставший известным благодаря возможности создания на нем сцен, схожих по качеству с кинематографическими. Он работает на большинстве современных игровых платформ — это консоли последнего поколения, ПК, устройства на iOS и Android, а так же macOS, Linux и html5. К тому же заявлена поддержка и недавно вышедшей новой портативной консоли — Nintendo Switch. Такая кроссплатформенность возможна благодаря поддержке всех современных стандартов как рендеринга (API DirectX, OpenGL, а так же на устройствах iOS — PowerVR), так и воспроизведения звука (OpenAl, EAX, DirectSound3D). Как и другие движки, UE комплектуется собственным редактором — UnrealEd, однако по удобству тот заметно проигрывает Unity3D и заточен скорее под создание профессиональных, а не любительских игр и анимаций.
Unreal Engine 1
Первая версия движка вышла почти 20 лет назад — в 1998 году, и уже тогда оказалась универсальнее топового движка того времени — id Tech 3: она включала в себя графический движок, физический движок, искусственный интеллект, управление файловой и сетевой системами и готовую среду разработки игр — UnrealEd. Движок работал на macOS, Windows, PlayStation 2 и Xbox, причем сетевая составляющая была кроссплатформенной — игроки с Windows могли играть на одних серверах с игроками на macOS.
Главной особенностью Unreal Engine было то, что это был первый векторный движок: то есть движок, работающий с графами сцены. Граф сцены представляет собой структуру (набор узлов в виде дерева или графа), которая содержит логическое и, зачастую, пространственное представление графической сцены. Например, в игре может быть определена логическая связь между объектами «человек» и «машина». Последняя, в свою очередь, может быть связана с объектом «гараж», и так далее — таким образом выстраивается сеть взаимосвязанных объектов, что сильно упрощает как написание игры, так и взаимодействие объектов в самой игре.
Остальные особенности:
Технология варпинга (warp) — возможность при прорисовке заменять изображение одной поверхности проекцией изображения на другую, ей параллельную поверхность. Несмотря на то, что ряд объектов мог беспрепятственно переходить через варп-зоны (например, пущенная игроком ракета), присутствовало большое число ограничений на работу таких зон. Данная технология выглядела в игре как порталы (через которые можно было стрелять и проходить, но они не пропускали звуки).
Скайбокс (Skybox) — проецирование на поверхности отрисовки с другой точки (которая обычно помещалась в небольшую «коробку» с наложенной текстурой неба, отсюда и название Skybox). Таким образом, отображение не лицевой грани полигонов, а обратной, с заранее наложенной текстурой «неба» на объект. В движке широко использовался приём масштабирования текстур таким способом, что приводило к реалистичным видам окружающей среды — к примеру, неба в игре Unreal. Так же движок позволял использовать мультитекстурирование, позволявшее (при правильной расстановке источников света и ориентации относительно пререндеренных текстур) добиться эффекта трёхмерности поверхностей, хотя до появления движков с поддержкой истинной тесселяции еще оставалось почти 10 лет (первый движок с ее поддержкой, CryEngine 2, вышел в 2007 году).
Движок стал одним из первых, в котором появился эффект гало вокруг источников света, которые плавно затухали, будучи перекрыты краями стен по мере движения игрока.
Лава и некоторые текстуры луж, в которые падали капли, сделаны динамическими благодаря использованию не шейдеров, как в поздних играх, а процедурных текстур.
В 1999 году вышло крупное обновление — Unreal Engine 1.5. Движок обзавелся лицевой анимации для персонажей, максимальное разрешение текстур было увеличено до 1024x1024, введена расширяемая система частиц и технология S3TC (S3 Texture Compression — метод сжатия текстур DirectX с потерями). Также была интегрирована вторая версия редактора UnrealEd. Пожалуй, самой красивой игрой на Unreal Engine 1.5 была игр-демонстрация возможностей движка — Unreal Tournament:
Первая версия движка больше не доступна для лицензирования, однако исходный код, необходимый для сборки собственных исполняемых файлов, существует в свободном доступе, но не для коммерческого использования — они распространяются по лицензии «Unreal Retail» — то есть только для персонального использования. Всего на UE 1 вышло больше двух десятков игр, среди них — всем известные Unreal Tournament, Deus Ex и Duke Nukem Forever.
Unreal Engine 2
Вторая версия Unreal Engine увидела свет в 2002 году с появлением Unreal Tournament 2003. В ней были практически полностью переписаны ядро и механизм рендеринга, а также интегрирована третья версия редактора UnrealEd. Физический движок теперь от сторонних издателей — Karma. Он поддерживает физику тряпичной куклы: обработку действия на тело не как на один объект, а как на скелет с привязкой к нему частей тела. У каждого сустава персонажа появились ограничители вращения, эти ограничители бывают двух видов: шарнирные и линейные. Линейные могут вращаться только вокруг одной оси, а шарнирные по всем трём.
Основные особенности движка:
Поддержка VoIP — возможность переговоров через микрофон с другими игроками во время игры.
Распознавание речи — перевод голоса в текст и обработка как команды (например, возможность отдавать ботам команды голосом). Эта технология использовала Microsoft Speech API и поэтому поддерживалась только в 32-битной версии Windows.
Транспортные средства — неподвижные (стационарные оборонительные установки), составленные из нескольких объектов (Karma vehicle), с использованием скелетной структуры и транспортные средства, прикрепляемые к другим транспортным средствам (например, пулемёт на башне танка). Некоторые транспортные средства могут действовать без «пилота», управляемые собственным искусственным интеллектом.
Отказ от варп-зон из-за перехода на движок Karma и 32-битной графики.
Unreal Engine 2.5
Как и версия 1.5, 2.5 нацелена в основном на оптимизацию движка под новые API — появилась поддержка DirectX 9, OpenGL 2 и Pixomatic (специальная версия рендера, умеющая рендерить изображения в основном силами процессора, то есть она подходила для компьютеров с мощным процессором и слабой видеокартой). Так же добавлена поддержка 64-битных операционных систем Windows (NT 4 и в дальнейшем XP) и Linux. Наибольшее возможное разрешение текстур поднято до 4096x4096 пикселов, добавлена полноценная поддержка юникода (16-бит), что позволило создавать полностью локализованные игры на азиатских языках (до этого часть фраз приходилось оставлять на английском).
Самой красивой игрой на UE 2.5 можно назвать Killing Floor — игра вышла в 2009 году, уже после выхода UE 3:
Unreal Engine 2X и Runtime
Это специальные версии движка — в первом случае для Xbox: были введены новые визуальные эффекты, такие как depth of field (глубина зрения), динамическая гамма-коррекция, bloom и различные вариации blur. Формат текстур был изменён для более реалистичного отображения теней в высоком разрешении, добавлена поддержка голосового чата, сервиса Xbox Live, а также функция разделения экрана. Был использован только в Unreal Championship 2. Во втором случае — урезанная бесплатная для некоммерческого использования версия движка, имевшая лишь базовый набор моделей и текстур. Полная же версия была платной — за лицензию на одну игру Epic Games просили от 350000 долларов.
Unreal Engine 3
Новая версия была сделана с упором на многоядерные процессоры — как в ПК, так и в новых (в то время) консолях PlayStation 3 и Xbox 360: теперь движок использует два параллельных потока данных — основной поток (отвечающий преимущественно за игровой процесс) и поток рендеринга. Кроме двух главных потоков могут быть вызваны второстепенные, которые выполняют разовые задачи. Так же движок обзавелся поддержкой API DirectX 10 и OpenGL 3 (от Pixomatic отказались как из-за его старости, так и из-за того, что даже самые мощные процессоры перестали справляться с графическими задачами). Появилась поддержка множества других платформ — начиная с Wii, iOS и Android и заканчивая такой экзотикой, как Windows RT.
Основные особенности нового движка:
- Поддержка HDR, попиксельного освещения, динамических теней, Pixel Shader 4.0, геометрических шейдеров. Сам графический конвейер был переведён под управление шейдеров.
- Физический движок сменился на PhysX, что позволило сделать эффекты тккани и улучшить эффекты жидкости. Однако аппаратное ускорение поддерживается только на Windows, поэтому эффекты на других платформах были урезаны.
- За анимацию лиц персонажей отвечает интегрированный анимационный движок FaceFX, позволивший улучшить детальность прорисовки и реалистичность мимики.
- Добавлена поддержка технологии SpeedTree, позволившая значительно снизить нагрузку на систему при отрисовке растительности (деревьев и травы).
Unreal Engine 3.5
Как и в предыдущих версиях х.5, тут была произведена, в основном, оптимизация — движок научился работать с DirectX 11, а так же был добавлен фильтр пост-обработки Ambient occlusion, улучшающий тени и освещения. Было увеличено число обрабатываемых персонажей в кадре. Переработана на новом уровне технология динамической водной поверхности, физика мягких тел и разрушаемое окружение также значительно улучшены.
На движке вышло больше 100 проектов, среди которых линейки Bioshock, Borderlands, Mass Effect, X-com, Mortal Combat, Battlefront и многие другие. Среди мобильных игр стоит отдельно выделить линейку Infinity Blade, до сих пор являющуюся эталоном графики под мобильные платформы:
Самой красивой игрой под ПК на UE 3 стоит назвать, пожалуй, Outlast 2 (хотя она еще в разработке):
Увы — для обычных пользователей доступна только бесплатная некоммерческая версия движка, полная версия продается только крупным игровым студиям, цена за лицензию на одну игру неизвестны.
Unreal Engine 4
Это самая новая и постоянно развивающаяся версия движка. Она поддерживает консоли текущего поколения (PlayStation 4 и Xbox One), API DirectX 12, а так же с недавних пор — и Nintendo Switch. Добавили достаточно много нового:
- Поддержка очков виртуальной реальности SteamVR, HTC Vive и PlayStation 4 Morpheus (для последнего есть поддержка 120 Гц).
- Новая система рендеринга травы и других объектов на земле вокруг игрока, которые создаются путём получения многочисленных копий одного или нескольких объектов — это сильно снижает нагрузку на видеокарту, при этом практически не портя картину (мало кто заметит, что два камня в нескольких метрах друг от друга одинаковы).
- Иерархическая система LOD'ов (уровней детализации), которая позволяет рендерить объект на большом расстоянии с худшим качеством и меньшим числом запросов к рендереру.
- Процедурный генератор растительности, который позволяет генерировать как огромные, так и маленькие области заполненные деревьями, кустами и травой так, как будто бы они здесь реально росли.
- Возможность воспроизведения и перемотки последних нескольких минут геймплея в сетевых играх. .
- Новый, фотореалистичный Depth of Field (глубина резкости), который теперь похож на боке, получаемый при съемке на камеру.
- Отражения для полупрозрачных поверхностей (в том числе и отражения эффектов типа взрывов).
- Автоматическое создание Convex Collision Meshes (выпуклая геометрия, на основе которой просчитываются физические столкновения).
- Инструменты для локализации игр (в том числе — перевод фраз на текстурах).
- Paper2D — встроенный движок для создания спрайтов.
Будущее движка
Об UE 5 неизвестно ничего, да и это понятно — 4ая версия вышла всего пару лет назад и активно разрабатывается, поэтому ждать крупного релиза ближайшие пару лет не стоит.