суббота, 15 июля 2023 г.

Сборка UnrealEng для мака с процессором Apple Silicon


Юрий «yurembo» Язев

Unreal Engine пятой версии и выше компилируется в macOS на процессоре Apple Silicon прямо «из коробки», потому что изначально имеет их поддержку. В то же время версия 4.х движка специально под них не затачивалась и, следовательно, не обязана собираться в таком случае без танцев с бубном.

На новом проекте мне надо было скомпилировать UE 4.27.2 на маке с процессором M1, являющимся участником линейки Apple Silicon. Я скачал исходники движка из нужной ветки GitHub’а — UE 4.27-plus. Следуя описанию установки из официальной документации, я скачал дополнительный бинарный контент путем выполнения скрипта Setup.command. После этого с помощью скрипта GenerateProjectFiles.command создал файлы решения для компиляции компонентов движка.

Затем посредством созданного файла решения UE4.xcworkspace я запустил Xcode и загрузил в него компоненты движка. Следуя все той же документации, в первую очередь компилирую проект ShaderCompileWorker. Через небольшой промежуток времени сталкиваюсь с ошибками линковки. Из чего следует, что товарищ ShaderCompileWorker не построился, а без него движок работать не будет.

рис. 1. Ошибки построения проекта ShaderCompileWorker в Xcode

На самом деле для компиляции ShaderCompileWorker есть специальный скрипт. В терминале переходим в каталог /UnrealEngine-4.27-plus/Engine/Build/BatchFiles/Mac и выполняем скрипт build.sh сначала с параметром -clean, чтобы очистить папку от результатов прошлой компиляции. Дополнительно между именем скрипта и параметром надо добавить целевую платформу компиляции, в нашем случае: Mac Development. В итоге, с учетом всех нюансов, получаем следующую команду:

./Build.sh ShaderCompileWorker Mac Development -clean
рис. 2. Терминал: очистка каталога

После этого для построения компонента ShaderCompileWorker надо выполнить эту же команду только без параметра -clean. В результате, построение завершается успешно и в выводе отсутствуют записи об ошибках (показан только хвост вывода):

рис. 3. Терминал: результат компиляции

Теперь можно снова открыть Xcode, выбрать проект UE4 и построить движок. У меня компиляция движка длилась 5,5 часов. UnrealEng на любой платформе долго строится — слишком большой проект. После этого движок будет готов к работе.