Это инструкция о том, как настроить окружение и собрать бинарную версию движка Unreal Engine версии 4.27. В дальнейшем, ее можно доставить другим членам команды, у которых не установлена студия. При этом, сама ветка 4.27 до сих пор поддерживается Эпиками и регулярно получает обновления. Но, в бинарную версию движка из лаунчера эти изменения уже не добавляют и фиксы не выпускают.
Еще одна неприятность с этой версией движка в том, что последней поддерживаемой версией IDE для него была VS 2019. Что неприятно, так как в 2022 появились плюшки для разработки под UE. А с настройками “по умолчанию” 2022-я студия, или не собирает движок совсем, или собирает его с багами. Причем, результат можно увидеть только через несколько часов томительного ожидания.
Также подразумевается, что вы работаете с ОС Windows 10/11, у вас установлена Visual Studio 2022 и всем этим вы умеете пользоваться. ???? И, естественно, у вас есть доступ к исходникам движка на github.com.
Выбор версий MSVC и WinSDK для сборки UE4
Предварительно в студии надо установить:
MSVC версии 142 - средства сборки С++ для VS 2019 для х64/х86 (версия 14.29-16.11)
Пакет SDK для Windows 10 (10.0.18362.0)
По умолчанию UnrealBuildTool использует самую последнюю (Latest) версию установленных компонентов Visual Studio, что может привести к сборке движка с багами. Поэтому необходимо изменить конфигурацию сборки движка (подробные инструкции читаем в документации по Build Configuration). Конфигурационный файл может лежать в нескольких местах, например тут:
%USER_FOLDER%\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
Нам нужен раздел WindowsPlatform
и параметры CompilerVersion
и WindowsSdkVersion
. Значения лучше всего подбирать максимально приближенные к рекомендуемым. Они обычно указываются в Release Notes соотв. движка (4.27) в разделе Platform SDK Upgrades.
Итоговый файл BuildConfiguration.xml
должен выглядеть так:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<WindowsPlatform>
<CompilerVersion>14.29.30133</CompilerVersion>
<WindowsSdkVersion>10.0.18362.0</WindowsSdkVersion>
</WindowsPlatform>
</Configuration>
Debugging Tools for Windows
К сожалению, я не нашел способа добавить этот компонент через стандартный инсталлятор студии. Поэтому инструкция такая:
В установленных программах ищем:
Windows Software Development Kit - Windows 10.0.18362.1
Жмем на 3 точки справа от нее и выбираем
Изменить / Modify
В инсталляторе выбираем пункт
Change
Добавляем пункт
Debugging Tools for Windows
.Net 4.5 Framework Pack
Примечание: Я не уверен что этот пункт нужен, но на дополнительные 4 часа экспериментов терпения не хватит. У меня в процессе сборки встречались модули движка в которых все еще установлен этот таргет, возможно это из-за неправильных первоначальных настроек.
Так, как поддержка 4.5 уже закончилась, то пойдем окольными путями:
Скачать из NuGet Gallery нужный пакет (Download package справа).
Распаковать как ZIP-архив.
Переместить папку
build\.NETFramework\v4.5
вC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5
.Net Famework 4.6.2
Тут проблем нет, надо просто проверить, что в студии установлены:
.Net Famework 4.6.2 Targeting Pack
Пакет SDK для .Net Famework 4.6.2.
Установка движка
Поддержка 4.27 продолжается в ветке 4.27-plus
. Клонируем исходники в папку UE_4.27
:
git clone -b 4.27-plus https://github.com/EpicGames/UnrealEngine.git UE_4.27
Возможны ошибки с выполнением Setup.bat
. Исправляем так. В релизах каждой версии добавлен новый файл Commit.gitdeps.xml. Его нужно скачать и заменить им этот файл: Engine/Build/Commit.gitdeps.xml
. Комментарий от самих Эпиков:
Per a previous announcement on GitHub Disruption. To remedy related download errors, a new Commit.gitdeps.xml file is attached to this release as an Asset. Please replace the existing Engine/Build/Commit.gitdeps.xml with the attached file.
В папке движка UE_4.27 вызвать:
Setup.bat
Кросс-компиляция для Linux
Это флаг
-set:WithLinux=true
в скрипте по сборке движка.
Для 4.27 нужен набор инструментов версии 19. Устанавливаем и проверяем правильность установки при помощи команды:
%LINUX_MULTIARCH_ROOT%x86_64-unknown-linux-gnu\bin\clang++ -v
Подробная инструкция в статье Cross-Compiling for Linux.
Компиляция для Android
Это флаг
-set:WithAndroid=true
в скрипте по сборке движка.
Устанавливаем Android Studio. Можно последнюю версию и с любыми настройками, мы все равно будем переустанавливать все SDK.
После установки и всех обновлений, на экране приветствия выбираем More Actions -> SDK Manager
. Убеждаемся что на этом диалоге внизу стоит галочка Show Package Details
.
Открываем файл Engine/Extras/Android/SetupAndroid.bat
и ищем строку вида:
call "%SDKMANAGER%" "platform-tools" "platforms;android-28" "build-tools;28.0.3" "cmake;3.10.2.4988404" "ndk;21.4.7075529"
Собственно это и есть перечень необходимых SDK для сборки Android игр:
Вкладка
SDK Platforms
. Платформу желательно поставить свежую, напримерAndroid 13.0 (Tiramisu) - Android SDK Platform 33
. Остальные галочки снять, 28-ю платформу ставить не надо.Вкладка
SDK Tools
.Android SDK Build-Tools
, оставляем 2 версии: самую свежую и 28.0.3.Вкладка
SDK Tools
.NDK (Side by side)
, оставляем только 21.4.7075529.Все остальные галочки можно убрать, эмуляторы тоже не понадобятся.
Есть еще такая статья: Setting Up Android SDK and NDK for Unreal. Но относится к ней стоит как к дополнительным материалам, а не как к инструкции для действий.
Модификация движка
Примечание 1: Мой pull request со всеми необходимыми поправками был отменен, поэтому модифицировать движок придется ручками.
Примечание 2: Номера строк могут меняться, поэтому проще поискать в этом месте аналогичный кусочек кода и добавить изменения после него. Ничего нового мы не добавляем, просто расширяем функционал про который разработчики забыли (или забили) добавить.
Файл Engine/Build/InstalledEngineBuild.xml
после строки 79
добавить:
<!-- Whether to use VS2022 -->
<Option Name="VS2022" Restrict="true|false" DefaultValue="false" Description="Use Visual Studio 2022 to build Windows targets. By default, Visual Studio 2017 is used for maximum compatibility"/>
В тот же файл Engine/Build/InstalledEngineBuild.xml
после строки 117
добавить:
<Property Name="VSCompilerArg" Value="-2022" If="$(VS2022)"/>
Файл Engine/Source/Programs/UnrealBuildTool/Platform/Windows/UEBuildWindows.cs
в начало функции TryGetMsBuildPath
(строка 1591
) добавить:
// Get the Visual Studio 2022 install directory
List<DirectoryReference> InstallDirs2022 = WindowsPlatform.FindVisualStudioInstallations(WindowsCompiler.VisualStudio2022).ConvertAll(x => x.BaseDir);
foreach (DirectoryReference InstallDir in InstallDirs2022)
{
FileReference MsBuildLocation = FileReference.Combine(InstallDir, "MSBuild", "Current", "Bin", "MSBuild.exe");
if (FileReference.Exists(MsBuildLocation))
{
OutLocation = MsBuildLocation;
return true;
}
}
Сборка движка
Убедиться что есть 300+ лишних гигабайт на диске.
-
Создать файл
Build_4.27.bat
:@ECHO OFF REM --== Setup ==-- SET MSBuildPath=C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe SET EnginePath=E:\EpicGames\UE_4.27 SET BatchFilesPath=%EnginePath%\Engine\Build\BatchFiles SET AutomationToolPath=%EnginePath%\Engine\Binaries\DotNET\AutomationTool.exe SET RunUAT=%BatchFilesPath%\RunUAT.bat SET BuildPlatform=Win64 SET GameConfigurations=DebugGame;Development;Shipping REM --== Building AutomationTool ==-- IF NOT EXIST "%AutomationToolPath%" ( "%MSBuildPath%" "%EnginePath%\Engine\Source\Programs\AutomationTool\AutomationTool.csproj" ^ -property:Platform=AnyCPU ^ -property:Configuration=Development ^ -target:Rebuild ^ -verbosity:minimal ^ -nologo ) REM --== Building Engine ==-- "%RunUAT%" BuildGraph ^ -Target="Make Installed Build %BuildPlatform%" ^ -Script="%EnginePath%\Engine\Build\InstalledEngineBuild.xml" ^ -Clean ^ -set:GameConfigurations="%GameConfigurations%" ^ -set:HostPlatformOnly=true ^ -set:WithAndroid=true ^ -set:WithLinux=true ^ -set:WithDDC=false ^ -set:VS2022=true ^ -set:BuiltDirectory="%EnginePath%\Build"
Build_4.27.bat
не зависит от расположения движка, все пути берутся из настроек. Но его нужно модифицировать!В разделе
Setup
настроить путиMSBuildPath
иEnginePath
В разделе
Building Engine
удалить строчки-set:WithAndroid=true
или-set:WithLinux=true
если эти системы не нужныЗапустить и ждать… несколько… часов…
В случае успеха, результат будет в папке
UE_4.27\Build\Windows
Эту папку можно переместить в другое место, а исходники удалить.
Регистрация движка
Создать REG файл, при этом поправив путь C:/AllEngines/UE_4.27_Plus
на свой вариант:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Epic Games\Unreal Engine\Builds]
"4.27_Plus"="C:/AllEngines/UE_4.27_Plus"
Запустить от имени администратора. Или внести изменения при помощи regedit
.
Минутка саморекламы
Я буду признателен, если вы скачаете и протестируете демку нашей игры Бесконечная Мгла. Мы ее собирали именно на таком модифицированном движке, и хотелось бы получить максимальный фидбэк о багах и ошибках до полноценного релиза. Да и вообще, любые замечания и комментарии горячо приветствуются!
Полезные ссылки
Комментарии (8)
Malizia
23.08.2023 13:54Работаю с UE4.27 из VS2022, проблем нет. Большое преимущество в VS2022 - она x64, нет ограничений по памяти и, как следствие, может нормально проиндексировать код. Сборку под Андроид можно делать из редактора.
maltsevda Автор
23.08.2023 13:54А проблем и не должно быть... Эта инструкция для тех, кому нужна свежая сборка UE 4.27, со всеми последними апдейтами. Ну или тех, кто собирается вносить свои изменения в движок, и затем бинарные версии уже раздавать внутри команды.
Malizia
23.08.2023 13:54У Вас весь второй абзац про проблемы с VS2022. Или речь про бинарную версию от Эпиков?
maltsevda Автор
23.08.2023 13:54Вы сейчас говорите про сборку игры на бинарной версии движка из лаунчера, сборку игры на базе движка из исходного кода, сборку движка в бинарный вид для последующего распространения? Если мы говорим про VS2022, то как минимум без правильно настроенных SDK последние 2 варианта могут "удивить". А без полной инструкции последний пункт вообще невозможен.
Т.е. данная инструкция не о сборке игры, а о сборке движка и редактора. И если у вас на VS2022 сборка движка проходит без проблем... То, тогда у нас какая-то очень странная студия, можно вашу? :)
Malizia
23.08.2023 13:54Пожалуйста, перечитайте второй параграф Вашего поста и напишите о чем идёт речь.
Еще одна неприятность с этой версией движка в том, что последней поддерживаемой версией IDE для него была VS 2019. Что неприятно, так как в 2022 появились плюшки для разработки под UE. А с настройками “по умолчанию” 2022-я студия, или не собирает движок совсем, или собирает его с багами. Причем, результат можно увидеть только через несколько часов томительного ожидания.
maltsevda Автор
23.08.2023 13:54А с настройками “по умолчанию” 2022-я студия, или не собирает движок совсем, или собирает его с багами. Причем, результат можно увидеть только через несколько часов томительного ожидания.
Речь идет о движке. Т.е. о третьем варианте о котором я написал выше.
Sazonov
Может дешевле таки перейти на более новую версию? Я так понимаю что эпики поддерживают это лишь для того чтобы не отсыхали крупные древние проекты.
maltsevda Автор
Одна из наших игр, до сих пор на 4.23. Просто из-за DX10 и +10 FPS на андроиде. Поэтому смена движка, не совсем простое дело.