Недавно вышедший ремастер The Elder Scrolls IV: Oblivion вновь актуализировал дискуссию о том, где пролегает граница между ремастером и ремейком. На первый взгляд, все просто: если игру слегка улучшили, сохранив ее основу, это ремастер. Если же ее перенесли на совершенно новый движок — ремейк. Однако новинка работает на Unreal Engine 5 и при этом позиционируется именно как ремастер. Суть в том, что речь не идет о полной переработке. Вместо этого используется особая «оболочка», известная как Engine Wrapper. Попробуем простыми словами объяснить, что это за технология и как она работает.
Дословно «Engine Wrapper» можно перевести как «обертка для движка», что весьма точно описывает ее назначение. В основе таких ремастеров лежит оригинальный код и оригинальный игровой движок, который «встраивается» или интегрируется в новый. Этот Wrapper позволяет перехватывать и модифицировать определенные функции и части старого движка. В более широком смысле Wrapper в программировании — это дополнительный слой программы, позволяющий запускать код на оборудовании или в программной среде, для которой он изначально не предназначался. Наиболее наглядный пример — эмуляция, когда специальная программа на ПК позволяет запускать игры с 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, движок KEX может «перехватывать» отдельные части выполняемой программы и заменять их собственными реализациями. Такой подход позволяет относительно легко улучшать качество графики, подменять старые модели на новые, увеличивать частоту кадров и разрешение, а также адаптировать оригинальный код под многопоточность. Кроме того, значительно упрощается портирование: та же Turok изначально была эксклюзивом Nintendo 64, а теперь доступна на множестве платформ, включая ПК, PS4, Switch и другие.
Еще одним примером подобной реализации служит переиздание Halo 2: Anniversary. Его основой является оригинальная игра 2004 года с ее движком Blam!, отвечающим за внутреннюю игровую логику, триггеры и коллизии. Поверх него «наложен» урезанный графический рендер из Halo Reach, который принимает данные от оригинального движка и обрабатывает их. Это возможно во многом потому, что игра 2004 года по современным меркам крайне нетребовательна к ресурсам, что позволяет ее обрабатывать практически в фоновом режиме. Отсюда, кстати, и реализована возможность моментального переключения на оригинальную графику нажатием одной кнопки: обновленный рендер просто перестает выводиться, а старый, который все это время работал параллельно, появляется на переднем плане.
Более громким и свежим примером можно считать сборник GTA: The Trilogy — The Definitive Edition, вышедший в 2021 году. Игры сборника работают на оригинальном движке RenderWare, но используют Unreal Engine 4 для рендеринга. Это позволило внести графические улучшения, не затрагивая основную игровую логику: физическая модель, ИИ трафика, пешеходов и врагов, а также большая часть анимаций перекочевали из оригиналов. В то же время были внесены изменения вроде обновленного интерфейса, улучшенных текстур, замененных моделей, а также переработаны погодные эффекты, освещение и растительность. Результат, как известно, оказался далек от идеала, но сейчас речь идет не столько о качестве конкретного продукта, сколько о демонстрации принципиальной возможности внесения таких изменений с помощью Engine Wrapper.
Аналогичная ситуация наблюдается и с Oblivion: «под капотом» у новинки остается все тот же движок Gamebryo с оригинальными игровыми файлами, а поверх него «натянута» визуальная часть на Unreal Engine 5. Энтузиасты уже через несколько часов после выхода обнаружили, что в файлах игры содержится полная копия оригинала, которую даже можно модифицировать, используя официальные инструменты для моддинга образца 2006 года. Однако попытки прямого вмешательства на базовом уровне могут приводить к ошибкам, что связано со спецификой работы Engine Wrapper в данном случае. В том числе поэтому прямое портирование существующих модов пока затруднено, хотя это, возможно, лишь вопрос времени.
