Сборка Unreal Engine из исходников для Linux.
Подготовка.
Загрузка исходного кода и прочих компонентов движка будет осуществляться с помощью git путём клонирования среза репозитория.
Репозиторий Unreal Engine размещён на Github и является приватным:
https://github.com/EpicGames/UnrealEngine
При отсутствии аккаунта и регистрации Github ID будет подобная картина:
Для получения доступа потребуется регистрация на Github и добавление Github ID в профиль на UnrealEngine.com. Официальная инструкция: https://github.com/EpicGames/Signup
Следующим этапом является загрузка компонентов движка из репозитория.
В связи с политикой безопасности Github загрузку компонентов можно осуществить только после настройки двухфакторной аутентификации или с задействованием ssh с шифрованием. Первый вариант крайне нежелателен, так как зависит от третьей стороны, поэтому лучше использовать загрузку по ssh. Настройка ключей шифрования и аккаунта описаны в этой заметке:
Загрузка исходников Unreal Engine.
После настройки всего необходимого для загрузки по ssh, остаётся получить ссылку на репозиторий. Сделать это можно следующим образом:
В данном примере рассмотрен вариант загрузки из ветки 4.27-plus, которая на момент 2023 года всё ещё является актуальной для разработчиков, доделывающих свои проекты на Unreal Engine 4.
Посмотреть на ветку в репозитории можно так:
После определения желаемой ветки, в терминале открыть каталог, в который планируется загрузить все компоненты движка из репозитория. Пример:
В данном случае в терминале открыт каталог /home/$USER/Programs/. Если начать загрузку без перехода в конкретный каталог, файлы окажутся в корне домашнего каталога.
Примечание: Движок со всеми компонентами и срезом git занимает более 100 Гб.
Теперь можно начать загрузку компонентов путём клонирования среза репозитория:
git clone -b 4.27-plus git@github.com:EpicGames/UnrealEngine.git
-b — опция служит для указания конкретной ветки. В данном случае это 4.27-plus.
Если все манипуляции по настройке ssh осуществлены верно, будет предложено ввести пароль (passphrase) для использования ключа, а после начнётся загрузка компонентов:
Конечный результат должен иметь подобный вид:
Сборка Unreal Engine.
Официальная инструкция: https://github.com/EpicGames/UnrealEngine/blob/4.27-plus/Engine/Build/BatchFiles/Linux/README.md
Все загруженные компоненты движка будут находиться в каталоге UnrealEngine. Его необходимо открыть в терминале. Тем самым, исходя из условий примера, должен получиться следующий путь:
/home/$USER/Programs/UnrealEngine/
Внутри каталога UnrealEngine находится файл Setup.sh. Это сценарий командной оболочки, который инициирует подготовку рабочей среды, загрузку дополнительных компонентов движка (в основном разнообразные проприетарные компоненты) и сборку библиотеки LinuxNativeDialogs.
Осуществить запуск сценария из терминала, в котором открыт каталог UnrealEngine:
./Setup.sh
Должен начаться процесс подготовки и последующая загрузка дополнительных компонентов.
В процессе будет предложено зарегистрировать файловые типы (MIME-типы), относящиеся к движку:
Register Unreal File types?
Имеет смысл ответить утвердительно.
Итогом работы Setup.sh станет сообщение об успешном завершении: «Setup successful.«
Теперь необходимо осуществить конфигурирование сборки, по завершению которого в /home/$USER/Programs/UnrealEngine/ будут созданы make-файл и CMakelists.txt, а так же файлы проекта для различных сред программирования (KDevelop, QtCreator и прочих):
./GenerateProjectFiles.sh
Пример успешного завершения:
Пример части содержимого /home/$USER/Programs/UnrealEngine/:
Наконец остаётся осуществить сборку (компиляцию) компонентов движка из исходного кода.
Чтобы не собирать «всё на свете» лучше явно задать необходимое. Оптимальный вариант:
make CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game UE4Client UE4Server BlankProgram SlateViewer UnrealHeaderTool UnrealFrontend UnrealInsights
Примечание: Для минимальной сборки достаточно CrashReportClient, ShaderCompileWorker, UnrealLightmass, UnrealPak и UE4Editor.
Сборка занимает довольно продолжительное время (около часа), загружает процессор на 100% и потребует более 5 Гб ОЗУ с пределом до 1 Гб на поток.
По каждому собранному модулю будет выведено время, затраченное на сборку:
По завершению сборки можно запускать редактор Unreal Engine — UE4Editor:
./Engine/Binaries/Linux/UE4Editor
Первый запуск будет относительно долгим из-за перекомпиляции шейдерного кэша.
Теперь можно работать: