Unreal Engine — игровой движок, разрабатываемый и поддерживаемый компанией Epic Games.
Первая игра, созданная на этом движке — Unreal — появилась в 1998 году. С тех пор различные версии этого игрового движка были использованы в более чем сотне игр, среди которых Deus Ex, Lineage II, Thief: Deadly Shadows, Postal 2, сериях игр Brothers in Arms, Tom Clancy’s Splinter Cell, Tom Clancy’s Rainbow Six, а также в известных игровых сериях Unreal и Unreal Tournament от самих Epic Games. Будучи приспособленным в первую очередь для шутеров от первого лица, движок использовался и при создании игр других жанров.
Написанный на языке C++, движок позволяет создавать игры для большинства операционных систем и платформ: Microsoft Windows, Linux, Mac OS и Mac OS X, консолей Xbox, Xbox 360, PlayStation 2, PlayStation Portable, PlayStation 3, Wii, Dreamcast и Nintendo GameCube. В декабре Марк Рейн продемонстрировал работу движка Unreal Engine 3 на iPod Touch и iPhone 3GS. В марте 2010 работа движка была продемонстрирована на коммуникаторе Palm Pre, базирующемся на мобильной платформе webOS.
Для упрощения портирования движок использует модульную систему зависимых компонентов: поддерживает различные системы рендеринга (Direct3D, OpenGL, Pixomatic; ранее поддерживались Glide API, S3 Metal, PowerVR SGL), воспроизведения звука (EAX, OpenAL, DirectSound3D; ранее поддерживались A3D), средства голосового воспроизведения текста, распознавание речи (только для Xbox360, PlayStation 3, Nintendo Wii и Microsoft Windows, также планировалось для Linux и Mac), модули для работы с сетью и поддержка различных устройств ввода.
Для игры по сети поддерживаются технологии Windows Live, Xbox Live, и GameSpy, включая до 64 игроков (клиентов) одновременно.Несмотря на то, что официально средства разработки не включают в себя поддержку большого количества клиентов на одном сервере, движок использовался для создания MMORPG-игр. Один из наиболее известных представителей жанра, Lineage II, использует движок Unreal Engine.
Основная терминология движка
Все элементы игрового движка представлены в виде объектов, имеющих набор характеристик и класс, который определяет доступные характеристики. В свою очередь любой класс является «дочерним» классом object. Среди основных классов и объектов можно выделить следующие:
Актор (actor) — родительский класс, содержащий все объекты, которые имеют отношение к игровому процессу и имеют пространственные координаты.
Павн, пешка (pawn) — физическая модель игрока или объекта, управляемого искусственным интеллектом. Название происходит от англ. pawn — тот, кем манипулируют (pawn можно перевести также как пешка, поэтому такой объект без какой-либо модели выглядит как пешка). Метод управления описан специальным объектом, такой объект называется контроллером. Контроллер искусственного интеллекта описывает лишь общее поведение пешки во время игрового процесса, а такие параметры как «здоровье» (количество повреждений, после которых пешка перестает функционировать) или, например, расстояние, на котором пешка обращает внимание на звуки. задаются для каждого объекта отдельно.
Мир, уровень (world, game level) — объект, характеризующий общие свойства «пространства», например, силу тяжести и туман, в котором располагаются все акторы. Также может содержать в себе параметры игрового процесса, как, например, игровой режим, для которого предназначен уровень.
Для работы с простыми и, как правило, неподвижными элементами игрового пространства (например, стены) используется двоичное разбиение пространства — все пространство делится на «заполненное» и «пустое». В «пустой» части пространства располагаются все объекты а также только в ней может находиться «точка наблюдения» при отрисовке сцены. Возможность полного или частичного помещения объектов в «заполненную» часть пространства не исключается, однако может привести к неправильной обработке таких объектов (например, расчёт физического взаимодействия) или неправильной отрисовки в случае помещения туда «точки наблюдения» (например, эффект «зала зеркал»). Все пешки, попадающие в «заполненную» часть пространства, сразу «погибают».
Поверхность (surface) является основным элементом двоичного дерева пространства. Эти элементы создаются на грани пересечения между «заполненной» и «пустой» частями пространства. Группа элементов двоичного дерева пространства называется нодом (node, рус. узел). Этот термин, как правило, употребляется в контексте node count — количество нодов на экране или в игровом пространстве вообще. Количество нодов, одновременно видимых на экране влияет на производительность при прорисовке сцены. Если какой-то нод не попадает на экран или перекрывается целиком другими нодами, он не обсчитываются — это служит для повышения производительности, особенно в закрытых пространствах. Разбиение всего пространства на группы нодов называется зонированием. Для этого иногда используются порталы — невидимые поверхности, которые служат для того чтобы вручную разделить крупный нод на два меньших. Кроме порталов используются антипорталы, которые ограничивают области отрисовки.
Описание «заполненных» и «пустых» частей пространства выполняется с помощью набора замкнутых трехмерных объектов, составленных из не пересекающихся поверхностей — брашей (brush, рус. кисть). Этот принцип построения пространства называется конструктивной сплошной геометрией. Геометрия может быть «аддитивной» (все пространство изначально «пустое») и «вычитательной» (изначально заполненное материей пространство). Браши делятся на три типа:
Сплошные (solid) — полноценно участвуют в двоичном разбиении пространства.
Аддитивные (additive) — «заполняют» двоичное пространство.
Вычитательные (substractive) — «вырезают» объёмы в пространстве.
Полу-сплошные (semi-solid) — не влияют напрямую на двоичное дерево пространства, однако влияют на её физическую модель. Могут только «заполнять» пространство. Служат для создания «невидимых» препятствий, а также снижения числа полигонов и нодов.
Пустые (non-solid) — только создают поверхности, не влияют на двоичное дерево пространства. Используются преимущественно для создания объёмов (volume) — часть пространства, которая обладает свойствами, отличными от свойств игрового мира. Объёмы имеют приоритет, свойства объёма с большим приоритетом применяются к находящимся в нём акторам. Игровой мир всегда имеет минимальный приоритет. При помощи объёмов можно изменить гравитацию, вязкость, туман и тому подобное. Объёмы, начиная с версии движка Unreal Engine 2, используются для создания воды (но не водной поверхности).
Unreal Engine 4
18 августа 2005 года вице-президент Epic Games Марк Рейн сообщил, что Unreal Engine 4 уже два года как находится в разработке и его целевыми платформами являются персональные компьютеры и консоли 8-го поколения, а единственным человеком, работавшим над движком, является Тим Свини. Сам же Свини на GDC 2006 объявил, что разработка четвёртого Unreal Engine не начнётся раньше 2008 года, поскольку UE3 будет актуален вплоть до 2010 года.
9 октября 2008 года на TGS группа разработчиков Square Enix сообщила, что они «видели следующий Unreal Engine (Unreal Engine 4)» и «не могут дождаться возможности поработать с ним». Ранее Square Enix выпустила The Last Remnant и «не встречалась с проблемами при работе с Unreal Engine 3».
Модифицированные Unreal Engine
Некоторые компании-разработчики предпочитают использовать технологии «Unreal» в качестве основы для разработки собственного движка. Например, Unreal Engine 2 был специально доработан для игры Thief: Deadly Shadows и получил внутреннее имя «Flesh Engine».
Известная компания-разработчик Irrational Games одной из первых внедрила в свой Vengeance Engine (основан на Unreal Engine 2.5) технологию реалистичного освещения HDR, а также физический движок Havok 2.0 и другие функции, которые ныне широко используются в игровых технологиях. Этот движок был использован в Tribes: Vengeance и SWAT 4.
Игра BioShock от Irrational Games сначала также использовала Vengeance Engine, но затем разработчики частично заменили его на более актуальный Unreal Engine 3. Модифицированная версия стала называться Vengeance Engine 2.
Ubisoft используют для своих проектов движки YETI engine и LEAD engine. Примечательно, что обе технологии основаны на Unreal Engine 2.5 и применяются компанией в играх нового поколения, а также используются на консолях Xbox 360 и PlayStation 3.
Лицензирование и исходный код
В конце 1999 года Epic Games опубликовала часть исходных кодов исполняемых файлов Unreal Tournament, что послужило началу работы проекта OpenUT по портированию движка и игры на Linux. Через некоторое время работу над OpenUT перехватила Loki Games, а поддержка OpenUT была прекращена. Linux-версия Unreal Tournament была выпущена в продажу Loki Games.
На данный момент, первая версия движка больше не доступна для лицензирования, однако исходный код, необходимый для сборки собственных исполняемых файлов, существует в свободном доступе. Стоит отметить, что они распространяются по «Unreal Retail» лицензии — то есть только для персонального использования.[30] Кроме того, в 2004 году был опубликован исходный код игры Rune
Вторая версия по прежнему доступна для лицензирования. Epic Games предлагают её для создания игр на «действующие» персональные компьютеры или приставок шестого поколения за сумму $ 350 000 и больше (зависит от количества поддерживаемых платформ).
Для некоммерческих проектов, не относящихся к видеоиграм, доступна «закрытая» версия Unreal Engine 2 Runtime. Разработка игр на этой версии движка строго запрещена (несмотря на то что конкретного определения «игр» в лицензии нет) по причине того что «основной доход Epic Games получает от создания игр, и если вы хотите сделать свою игру — сделайте её в качестве модификации к существующему продукту».
Для бюджетных проектов доступно также лицензирование Unreal Engine 2 Runtime по сравнительно низкой цене (от $ 8000). Стоимость лицензии зависит от количества разработчиков (числа «рабочих мест»). Вместе с лицензированием хотя бы одного «рабочего места» доступен заказ заголовочных файлов второй версии движка по цене $ 5000.
Цена лицензирования версий 3.0 и выше не публикуется, однако упоминается что имеется выбор из различных вариантов лицензий, в том числе и для не игровых продуктов.
Несмотря на то, что движок разработан для создания компьютерных и видеоигр, его адаптируют и для других целей — конструкторские, дизайнерские, тренировочные программы и прочее.
5 ноября 2009 года был выпущен пакет Unreal Development Kit, бесплатная версия Unreal Engine 3 для некоммерческого использования с возможностью покупки дешевой коммерческой лицензии. Если написание игр на Unreal Engine 2 Runtime было строго запрещено, то написание игр с использованием UDK допустимо, однако запрещено на его базе создание продуктов, «которые могут или будут соперничать с UDK, а также связующим ПО (middleware) или ПО для разработки игр (game development software) созданным Epic Games»