Oblivion использует сразу два движка: что такое Engine Wrapper и как он работает
Статья

Oblivion использует сразу два движка: что такое Engine Wrapper и как он работает

Вышедший ремастер The Elder Scrolls IV: Oblivion в очередной раз поднял вопрос о том, где же проходит грань между ремастером и ремейком. Казалось бы, всё просто: если оригинальную игру слегка улучшили, не меняя ее суть, то это ремастер, а если перенесли на другой движок — то ремейк. Однако новинка работает на Unreal Engine 5 и при этом всё равно является ремастером, а не ремейком. Всё дело в том, что речь действительно не идет о глобальных изменениях — скорее, о создании эдакой «оболочки», которую принято называть Engine Wrapper. Попробуем по-простому рассказать, что это за технология и в чем принцип ее работы.

В чем суть

Меню того самого порта Doom на Unity. Источник: Bethesda
Меню того самого порта Doom на Unity. Источник: Bethesda

Дословно Engine Wrapper можно перевести примерно как «обертка для движка», что довольно точно отражает суть. В своей основе подобные ремастеры используют оригинальный код и оригинальный же движок, который «встраивается» в новый и позволяет перехватывать определенные его части. В глобальном понимании Wrapper применительно к программному обеспечению обычно означает, что дополнительная программа позволяет запускать код на железе и/или софте, для которого он не предназначен. Самым простым и понятным примером здесь можно считать эмуляцию: например, специально написанное ПО под Windows позволяет запускать игры для PlayStation, минуя оригинальное железо. Правда, эмуляция позволяет ПК «притворяться» другим железом, в то время как Wrapper обычно работает на программном уровне.

Одним из ранних примеров подобного «оборачивания» старых игр можно считать различные source-порты старых шутеров. Речь, например, о GZDoom: формально это уже другой движок, однако ему для работы необходимы оригинальные файлы. Более яркий пример — официальный порт DOOM от Bethesda, выполненный на Unity: здесь уже речь идет об использовании существующего движка, а не написанного для конкретной цели.

Первопроходцы

Пожалуй, самым известным современным движком для «оборачивания» можно считать KEX Engine, созданный Nightdive Studios. На нем вышло немало различных игр: чаще всего речь идет о шутерах вроде Turok, Blood, Quake или Killing Time, но есть и свои интересные исключения вроде адвенчур Shadow Man и Blade Runner или хоррора The Thing. Все вышеперечисленные игры используют различные движки в оригинале, что не мешает им работать на KEX Engine.

В глобальном смысле KEX — крупная надстройка, работающая на высоком уровне абстракции. Это позволяет запускать оригинальный код почти без вмешательства, а за счет поддержки множества внешних библиотек и API движок «перехватывает» части исполняемой программы и позволяет их заменять на другие. Это дает возможность с легкостью улучшать качество картинки, менять модели на другие, увеличивать фреймрейт и разрешение, а также переводить оригинальный код на многопоточность. Плюс не стоит забывать об упрощении портирования: та же Turok в свое время была эксклюзивом Nintendo 64, но теперь доступна на множестве платформ, в том числе на ПК, PS4, Switch и других.

Сравнение графики Halo 2 и переиздания Anniversary. Источник: reddit

Еще один подобный пример — переиздание Halo 2: Anniversary. В основе лежит оригинальная игра 2001 года, в том числе и ее движок Blam!, отвечающий за внутреннюю логику, триггеры и коллизии. Поверх «прикручен» урезанный рендер от Halo Reach, который берет информацию оригинала и обрабатывает как собственную. Во многом это возможно потому, что игра 2001 года по современным меркам крайне нетребовательна, что позволяет обрабатывать ее практически фоном. Отсюда же, к слову, и возможность переключения на оригинальную картинку через нажатие одной кнопки: обновленный рендер попросту перестает отображаться, а старый, который всё это время работал на фоне, выходит на передний план.

Что насчет Unreal?

Более громким примером можно смело считать GTA: The Trilogy — The Definitive Edition, вышедшую в 2021 году. Игра работает на оригинальном RenderWare, однако для рендеринга использует Unreal Engine 4: это позволяет вносить изменения в графику, не трогая ее суть. В частности, в ремастер переехала физическая модель, ИИ трафика, пешеходов и противников и большая часть анимаций. Вместе с этим есть и правки вроде обновленного интерфейса, улучшенных текстур и замененных моделей, а также переработанных погоды, освещения и растительности. Результат, как известно, вышел не блестящим, но речь сейчас не столько о качестве конкретного продукта, сколько о возможности внесения подобных изменений в принципе.

С Oblivion происходит аналогичная ситуация: под «капотом» у новинки остается всё тот же Gamebryo со всеми родными файлами, поверх которого «натянут» Unreal Engine 5. Энтузиасты спустя пару часов после выхода игры уже обнаружили, что в файлах хранится полный оригинал, который еще и можно «править» официальными инструментами для моддинга образца 2006 года. Правда, попытки вмешательства на базовом уровне могут приводить к ошибкам из-за того, как именно работает Engine Wrapper в конкретном случае. В том числе поэтому нельзя просто портировать существующие моды, хотя и это, возможно, тоже вопрос времени.