Сборка 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 на любой платформе долго строится — слишком большой проект. После этого движок будет готов к работе.