В ходе анализа нового файла Interface.u с использованием WOTgreal PE выяснилось, что в стандартном состоянии он не открывается на этапе загрузки. После изучения путей загрузки и внутренних проверочных механизмов были применены хук и корректировки для обхода этих ограничений. В результате удалось добиться корректного парсинга пакета, а также успешно выполнить экспорт в формат .uc.
После этого была предпринята попытка обратной компиляции — из .uc обратно в .u. В процессе поиска подходящего решения был обнаружен специализированный компилятор UnrealScript — UCC.exe, на базе которого и была организована попытка сборки.
Первоначальный подход заключался в сохранении окружения старой версии UCC.exe с одновременной адаптацией под новую версию Core.dll. Однако в процессе запуска возникли проблемы несоответствия import-символов. Для их устранения был проведён полный анализ экспортов Core.dll, после чего недостающие функции и данные были реализованы в виде Proxy DLL.
В рамках этой работы были выполнены следующие действия:
Приведение сигнатур функций между старой и новой версиями (включая переход с ANSI на Wide char)
Реализация wrapper-функций для обеспечения промежуточной совместимости (appSprintf, appStrcat, Parse и др.)
Обработка DATA-экспортов через собственные переменные Proxy, а не через forward (GMalloc, GFileManager, GLogHook и др.)
Согласование calling convention и decorated name
В результате UCC.exe начал корректно запускаться, удалось пройти этап appInit и дойти до стадии компиляции скриптов. Это подтвердилось логами Compiling, где множество классов успешно обрабатывались.
Однако на последующих этапах возникли дополнительные проблемы, связанные с особенностями структуры .u файлов.
Главный вывод, к которому удалось прийти: .u файлы не могут компилироваться изолированно. Это не просто процесс сборки скрипта — он требует наличия всей среды движка: родительских классов, системы типов, defaultproperties, а также пакетов Core и Engine.
Фактически компиляция .u — это не создание одного файла, а восстановление полной объектной модели, понятной движку. В ходе этой работы удалось значительно глубже понять внутреннюю архитектуру Unreal Engine, его пакетную систему и принципы работы UObject.
В итоге можно сказать, что технически задача решаема, однако для доведения её до стабильного состояния потребуется значительное количество времени и ресурсов. С практической точки зрения было принято решение временно отложить эту задачу.
…Возможно, когда-нибудь, при наличии достаточного времени или желания снова погрузиться в эту тему, я к ней вернусь.
В разработке L2 я нахожусь примерно неделю.
Если у кого-то есть инструмент, позволяющий компилировать .u файлы, буду благодарен, если поделитесь.
Telegram : @superduke1390r
После этого была предпринята попытка обратной компиляции — из .uc обратно в .u. В процессе поиска подходящего решения был обнаружен специализированный компилятор UnrealScript — UCC.exe, на базе которого и была организована попытка сборки.
Первоначальный подход заключался в сохранении окружения старой версии UCC.exe с одновременной адаптацией под новую версию Core.dll. Однако в процессе запуска возникли проблемы несоответствия import-символов. Для их устранения был проведён полный анализ экспортов Core.dll, после чего недостающие функции и данные были реализованы в виде Proxy DLL.
В рамках этой работы были выполнены следующие действия:
Приведение сигнатур функций между старой и новой версиями (включая переход с ANSI на Wide char)
Реализация wrapper-функций для обеспечения промежуточной совместимости (appSprintf, appStrcat, Parse и др.)
Обработка DATA-экспортов через собственные переменные Proxy, а не через forward (GMalloc, GFileManager, GLogHook и др.)
Согласование calling convention и decorated name
В результате UCC.exe начал корректно запускаться, удалось пройти этап appInit и дойти до стадии компиляции скриптов. Это подтвердилось логами Compiling, где множество классов успешно обрабатывались.
Однако на последующих этапах возникли дополнительные проблемы, связанные с особенностями структуры .u файлов.
Главный вывод, к которому удалось прийти: .u файлы не могут компилироваться изолированно. Это не просто процесс сборки скрипта — он требует наличия всей среды движка: родительских классов, системы типов, defaultproperties, а также пакетов Core и Engine.
Фактически компиляция .u — это не создание одного файла, а восстановление полной объектной модели, понятной движку. В ходе этой работы удалось значительно глубже понять внутреннюю архитектуру Unreal Engine, его пакетную систему и принципы работы UObject.
В итоге можно сказать, что технически задача решаема, однако для доведения её до стабильного состояния потребуется значительное количество времени и ресурсов. С практической точки зрения было принято решение временно отложить эту задачу.
…Возможно, когда-нибудь, при наличии достаточного времени или желания снова погрузиться в эту тему, я к ней вернусь.
В разработке L2 я нахожусь примерно неделю.
Если у кого-то есть инструмент, позволяющий компилировать .u файлы, буду благодарен, если поделитесь.
Telegram : @superduke1390r


