Reality Engine — игровой движок, разработанный американской компанией Artificial Studios для лицензирования другим компаниям. Движок был одним из первых движков, активно использующих физический движок Ageia PhysX и поддерживал физический процессор Ageia PhysX PPU. Благодаря этому он использовался в нескольких техно-демо-играх, призванных демонстрировать технологии компании Ageia. 11 мая 2005 года движок был полностью продан компании Epic Games и с этого момента перестал развиваться и лицензироваться.

История разработки Компания Artificial Studios была основана в 2001 году. Её первым и основным продуктом стал ориентированный на лицензирования сторонним компаниям движок Reality Engine, который постоянно дорабатывался и совершенствовался.

Сотрудничество с NovodeX AG 22 февраля 2005 года Artificial Studios в пресс-релизе официально сообщила о подписании соглашения со швейцарской компанией NovodeX AG, разработчиком физического движка NovodeX Physics. Согласно сделке, физический движок NovodeX Physics был интегрирован в Reality Engine. «В поисках мощного физического движка для игр следующего поколения мы рассматривали много вариантов, но ни один не впечатлил нас своей производительностью и способностями так сильно, как NovodeX. Мы верим, что это сотрудничество позволит разработчикам на Reality поднять реализм в своих играх на новый уровень», — заявил Тим Джонсон (), основатель и технический директор Artificial Studios.

Позже стало известно, что ещё в 2004 году компания NovodeX AG и её движок были приобретены компанией Ageia, NovodeX Physics превратился в Ageia PhysX. После этой сделки с 13 декабря 2005 года в Reality Engine стал использоваться Ageia PhysX.

Покупка движка компанией Epic Games 11 мая 2005 года американская компания Epic Games, один из крупнейших американских разработчиков игр и разработчик серии движков Unreal Engine, официально сообщила о завершении покупки игрового движка Reality Engine. Одновременно с покупкой движка, Epic Games наняла Тима Джонсона, основателя Artificial Studios и главного программиста движка. Было объявлено, что Джонсон подключится к процессу разработки Unreal Engine 3.

Epic Games выкупила полный набор прав на Reality Engine, включая права на интеллектуальную собственность, торговые марки и авторские права. Было объявлено, что Epic Games не намерена продолжать развивать, поддерживать и продавать Reality Engine, — цель покупки состояла в интеграции Reality Engine в Unreal Engine 3. Разработчикам, которые ранее купили лицензию на Reality Engine, был предложен апгрейд с Reality Engine на Unreal Engine 3 по сниженной цене (по сравнению с полной стоимостью Unreal Engine 3).

Тим Суини, основатель Epic Games и главный программист всех движков серии Unreal Engine, так прокомментировал данную сделку: «Мы очень рады видеть Тима Джонсона в составе нашей команды. Он привнёс опыт шести лет разработки игровых движков в команду разработчиков Unreal Engine 3, и он прямо сейчас полон идеями, как улучшить нашу технологию. Тим отлично подходит для Epic — он прекрасно понимает все стороны бизнеса лицензирования, от проектирования до поддержки клиентов для развития бизнеса. Он будет иметь огромное положительное воздействие на нашу компанию и на лицензиатов нашего движка».

На следующий день Джереми Штиглиц (), сооснователь и главный дизайнер Artificial Studios, прокомментировал эту сделку и сообщил, что для лицензиатов Reality Engine будет продолжена поддержка, разработка документации и исправление ошибок движка.

Технические характеристики Игровой движок Reality Engine написан на языках программирования Си и C++. Он полностью интегрирован с языками платформы .NET Framework, позволяя писать модули к нему на C#, C++/CLI, Visual Basic .NET и других. Для некоторых модулей, в качестве скриптового языка использовался Python. В движке, в качестве API рендера, используется Direct3D9. Reality Engine — кроссплатформенный движок, однако при его разработке основной акцент был сделан на IBM PC-совместимые компьютеры под управлением операционных систем семейства Microsoft Windows. Вместе с тем архитектура движка спроектирована так, чтобы его можно было портировать на игровые консоли Xbox 360 и PlayStation 3.

Графический движок

Графический движок в Reality Engine создан на основе DirectX 9.0 и обратно совместим с DirectX 7 и DirectX 8. Движок поддерживает попиксельное освещение и затенение при помощи шейдерных моделей PS3.0, PS2.X, PS2.0 и PS1.1, также поддерживается FPP. Поддерживаются динамический проективный маппинг, normal mapping, зеркальность Фонга, попиксельный reflection mapping, преломления (рефракции), parallax mapping, анимированные текстуры, имитация ткани, анизотропное рассеивание, рендеринг воды и другие конфигурируемые пиксельные и вершинные шейдеры.

В движке используется технология Precomputed Radiance Transfer (сокращённо PRT), иначе называемая Realtime Radiosity, благодаря которой возможна реализация технологий подповерхностного рассеивания и мягких теней. Система освещения и затенения является унифицированной и динамичной, способной обрабатывать циклы день/ночь.

Важной особенностью движка является иерархичное попиксельное окклюзивное обрезание (), которое устраняет необходимость в создании порталов, зон видимости или ручных окклюдеров. Окклюзивное обрезание невидимых поверхностей проводится полностью автоматически.

Поддерживается технология High Dynamic Range Rendering с использованием буферов с плавающей запятой, что позволяет реализовывать такие эффекты, как Tone Mapping, Exposure Adaption и Blue Shift.

Пост-процессинг включает такие пост-фильтры, как motion blur, bloom и нефотореалистичный рендеринг.

Физический движок

В качестве физического движка в Reality Engine использовался сначала NovodeX Physics, а с 13 декабря 2005 года — Ageia PhysX, который был на нём основан. После перехода на Ageia PhysX стало возможным ускорение физических расчётов на физическом процессоре Ageia PhysX PPU. Поддержка Ageia PhysX PPU была добавлена для версии Reality Engine v.15 13 декабря — в день перехода на движок Ageia PhysX.

Движком поддерживается обнаружение столкновений, физика твёрдых тел, физика транспортных средств, физика Ragdoll, мульти-примитивы, соединения (кинематические пары), разрушаемые объекты, физика безразмерных (точечных) частиц и многие другие функции. Ещё одной функцией движка является возможность создания так называемых физических зон — областей в трёхмерной сцене, в которых величины физических констант (инерция, трение, ускорение свободного падения) отличаются от величин этих констант вне данной физической зоны.

Работа с физическим движком поддерживается в утилите Reality Builder на уровне графического интерфейса. Так, в Reality Builder можно создавать ограничивающие объёмы для разных моделей и скелетных анимированных мешей, возможно редактирование соединений, а также просчёт, выполнение и тонкая настройка физики внутри редактора.

Система анимации Система анимации, входящая в состав Reality Engine, имеет поддержку анимации по ключевым кадрам (), скелетной анимации и смешивания анимации. Поддерживается скелетная анимация на уровне вершинных шейдеров, персонажи могут содержать любое количество произвольных пиксельных и вершинных шейдеров для множества материалов. Система анимации поддерживает бесшовные переходы между физической анимацией (например, физикой Ragdoll) и предпросчитанной анимацией по ключевым кадрам. Физические свойства костей скелетов персонажей позволяют создавать процедурную анимацию.

Reality Engine содержит инструменты для экспорта анимационных последовательностей, взвешенных сеток и скелетов из 3ds Max и Maya в движок.

Звуковой движок Звуковой движок в составе Reality Engine поддерживает технологии Environmental Audio Extensions и 5.1 Surround, способен обрабатывать звуковые источники на двухмерной и трёхмерной сцене, был написан с использованием DirectSound. Поддерживается потоковое аудио, имеется поддержка аудиокодека Vorbis.

Работа с сетью Reality Engine способен работать с компьютерными сетями, позволяя создавать многопользовательские сетевые игры или режимы игры. Сетевые компоненты движка построены на основе технологии клиент-сервер.

При работе с сетевыми соединениями используется адаптивная деградация данных и предсказание поведения, позволяющие более эффективное взаимодействие пользователей через сетевые соединения с большой задержкой (латентностью). Сетевая подсистема поддерживает голосовую связь. Платформо-независимый сетевой компонент способен работать на выделенных серверах, которые запущены на Microsoft Windows, Linux или Mac OS.

Сетевая система движка широко используется при разработке игр на нём. Например, множество разработчиков какой-либо игры на Reality Engine могут одновременно вносить изменения в одну игровую сцену через множество компьютеров в сети, — эти изменения будут добавляться в сцену, которая будет запущена на сервере. Кроме этого, сервер работает как система управления версиями — он сохраняет и синхронизирует все сборки (билды) и игровые ассеты, которые находятся на уровне во время его создания.

Ещё одной функцией сетевой компоненты Reality Engine являются распределённые вычисления системы освещения. Разработчики игры могут просчитывать Precomputed Radiance Transfer на своих собственных (локальных) компьютерах и потом отправлять результаты вычислений на сервер.

Игровой ИИ

В Reality Engine присутствуют компоненты игрового искусственного интеллекта, позволяющие создавать ИИ-персонажей, например, ботов или NPC. Модуль по работе с игровым ИИ был создан с использованием библиотеки Kynapse от AutoDesk. При сетевой игре ИИ может выполняться как на стороне клиента, так и на стороне сервера; во втором случае на клиент отсылаются лишь действия виртуальных персонажей, просчитанные на сервере.

Присутствуют алгоритмы поиска пути, причём есть и предпросчитанные заготовки, и динамические варианты поиска пути с уклонением от препятствий. Принятие решений основано на модели адаптивного конечного автомата. Боты могут реагировать на такие внешние раздражители, как изображения и звуки.

Редакторы уровней и другие утилиты Reality Engine содержит редактор уровней, имеющий графический интерфейс и работающий по принципу What You See Is What You Get. Для перехода из режима редактирования в режим сцены не нужно время на компиляцию или другую обработку уровня — переключение в режим игры производится сразу. Редактор уровней позволяет создавать и настраивать все ассеты на уровне: точки респавна, неигровых персонажей, игровых предметов, инвентаря и амуниции, узлы путей ИИ-персонажей, источники света и др. Все объекты появляются на сцене сразу и полноценно обрабатываются графическим движком.

Существует набор плагинов к 3ds Max и Maya, которые позволяют экспортировать из этих программ трёхмерные модели, анимационные и другие данные.

Лицензирование Компания Artificial Studios предлагала движок Reality Engine для лицензирования сторонним компаниям. Цена публично не оговаривалась, она определялась индивидуально для лицензиата после собеседования с ним. При лицензировании лицензиат получал полный исходный код движка, полный исходный код фреймворка, технологические демонстрации, все компиляторы и утилиты, а также их исходный код. Лицензиат обеспечивался поддержкой и ежедневными обновлениями движка из онлайновой CVS.

Для потенциальных лицензиатов Artificial Studios предлагала оценочные версии движка с ограниченным исходным кодом. Существовали обучающие лицензии, распространяемые со скидками, по меньшей цене.

После покупки движка компанией Epic Games компания Artificial Studios утратила все права на движок и прекратила его лицензирование, однако продолжила поддержку для уже существующих лицензиатов. Было заявлено, что работы над движком продолжаться: будут выпускаться новые обновления, писаться инструкции, продолжаться поддержка лицензиатов.

В августе 2008 года Тим Джонсон на официальном сайте сообщил, что он и его компания больше не принимают сообщений от лицензиатов движка касательно самого движка.