UE5

Запускаем проекты курса под UE5

Устанавливаем UE5

Обновляем EpicGamesLauncher. После обновления появится новая вкладка UE5. Далее, обычным образом устанавливаем UE5 Early Access на вкладке Library.

Проблема

Невозможно сгенерировать файлы проекта, потому что поменялся путь до UnrealBuildTool (специальная программа для автоматизации UE).

Изменяем версию движка, через контекстное меню (кликаем правой кнопкой мыши на файле .uproject):

Получаем ошибку:

Такая же ошибка возникнет, если мы просто сгенерируем файлы проекта через пункт меню Generate Visual Studio project files.

Решение

Я добавил три .bat файла для генерации файлов проекта в оба репозитория (GeometrySandbox и ShootThemUp):

devops/generate_project_files.bat
generate_project_files_4.26.bat 
generate_project_files_5.0.bat 

Первый родительский скрипт devops/generate_project_files.bat трогать не надо. Это параметризованный скрипт, который меняет версию проекта и генерирует файлы VS:

@echo off

rem Set all paths
SET EnginePath=%~1
SET BuildToolRelativePath=%~2
SET VersionSelector=%~3
SET ProjectPath=%CD%\%~4

rem Change engine version
"%VersionSelector%" /switchversionsilent "%ProjectPath%" "%EnginePath%"

rem Generate project files
"%EnginePath%\%BuildToolRelativePath%" -projectfiles -project="%ProjectPath%" -game -progress

В данный скрипт передаются параметры необходимые для генерации файлов проекта под конкретную версию движка. Происходит это в соответствующих скриптах generate_project_files_4.26.bat и в generate_project_files_5.0.bat. По сути они нужны для специализации параметров родительского скрипта.

generate_project_files_4.26.bat

@echo off

rem Set all paths
SET EnginePath=c:\Epic Games\UE Binary\UE_4.26
SET BuildToolRelativePath=Engine\Binaries\DotNET\UnrealBuildTool.exe
SET VersionSelector=c:\Program Files (x86)\Epic Games\Launcher\Engine\Binaries\Win64\UnrealVersionSelector.exe
SET ProjectName=ShootThemUp.uproject

devops/generate_project_files.bat "%EnginePath%" "%BuildToolRelativePath%" "%VersionSelector%" "%ProjectName%"

Вам необходимо поменять 2 переменные в соответствии с местоположением UE на диске: EnginePath, VersionSelector.

generate_project_files_5.0.bat

То же самое. Обращаю внимание на BuildToolRelativePath, данный путь поменялся в UE5 и из-за этого сейчас проблема с генерацией через контекстное меню. Он был перенесен в поддиректорию UnrealBuildTool:

BuildToolRelativePath=Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe

Тем не менее при вызове данного скрипта окно ошибки будет выводиться:

Это происходит, потому что при переключении версии дополнительно вызывается генератор файлов проекта, в котором ошибка. В этом ничего страшного нет. Просто ее игнорируем и нажимаем OK. Это не исправить, не затрагивая исходники движка. Мы дополнительно, после переключения версии движка, самостоятельно генерируем файлы проекта с правильным путем до UnrealBuildTool.exe

clean_intermediate_files.bat

Дополнительный скрипт для удобства. Он очищает все временные файлы и директории.

include "Camera/CameraShake.h"

Данный заголовочный файл в классе USTUHealthComponent необходимо заменить на базовый инклюд:

include "Camera/CameraShakeBase.h"

Это никак не повлияет на 4.xx версии, поэтому это общее изменение. Обновил это отдельным коммитом.

Резюме

Дополнительно, пути EnginePath, VersionSelector можно определять автоматически через регистр Windows. В данном случае это оверинжиниринг, поэтому мы их указываем явно, ничего страшного в этом нет.

Имя проекта ProjectName.uproject также можно определить автоматически по расширению.

Ветку под UE5 я пока делать не буду, никакие изменения не требуются для запуска вообще. Ближе к делу разберемся.

При смене версий движка, рекомендую удалять все временные файлы. То есть сначала вызывать скрипт clean_intermediate_files.bat и потом один из скриптов генерации. Не забывайте закрывать Visual Studio — файл sln также удаляется в этом скрипте.

Переходить на UE5 не надо. Очень сырая версия. Поизучать интерфейс — ОК. Визуально поменялся только интерфейс (по сути скин). Все настройки, параметры находятся на тех же местах. Проблем (на текущий момент) c переходом на UE5 не будет никаких. Все наши проекты успешно компилируются под эту версию. Кодовая база в этом плане не затронута. Весь код курса будет актуальным и для UE5.

Дополнительно, для удобства можно создать дополнительный скрипт clean_and_gen.bat, который удаляет временные файлы и генерирует файлы проекта одновременно, с двумя строчками внутри: clean_intermediate_files.bat generate_project_files_4.26.bat

Обновляйте репозитории. Коммиты добавлены.

Подробнее в видео уроках

Last updated