> For the complete documentation index, see [llms.txt](https://lifeexe-art.gitbook.io/unreal-engine-c-course/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lifeexe-art.gitbook.io/unreal-engine-c-course/ue5.md).

# UE5

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

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

![](/files/-MaxK4Pr_Zm5n6ByehXr)

## Проблема

Невозможно сгенерировать файлы проекта, потому что поменялся путь до **UnrealBuildTool (**&#x441;пециальная программа для автоматизации U&#x45;**).**

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

<div align="left"><img src="/files/-MaxQU68OwW1ZO_vXBif" alt=""></div>

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

![](/files/-MayNi-CCVPGAKwBfVDS)

Такая же ошибка возникнет, если мы просто сгенерируем файлы проекта через пункт меню **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:**

```bash
@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

```bash
@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`

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

![](/files/-MayNi-CCVPGAKwBfVDS)

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

## clean\_intermediate\_files.bat

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

## include "Camera/CameraShake.h"

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

`include "Camera/CameraShakeBase.h"`

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

## Резюме

{% hint style="info" %}
Дополнительно, пути **EnginePath, VersionSelector** можно определять автоматически через регистр **Windows.** В данном случае это оверинжиниринг, поэтому мы их указываем явно, ничего страшного в этом нет.
{% endhint %}

{% hint style="info" %}
Имя проекта **ProjectName.uproject** также можно определить автоматически по расширению.
{% endhint %}

{% hint style="info" %}
Ветку под **UE5** я пока делать не буду, никакие изменения не требуются для запуска вообще. Ближе к делу разберемся.
{% endhint %}

{% hint style="info" %}
При смене версий движка, рекомендую удалять все временные файлы. То есть сначала вызывать скрипт **clean\_intermediate\_files.bat** и потом один из скриптов генерации. Не забывайте закрывать Visual Studio — файл **sln** также удаляется в этом скрипте.
{% endhint %}

{% hint style="danger" %}
Переходить на **UE5** не над&#x43E;**.** Очень сырая версия. Поизучать интерфейс — ОК. Визуально  поменялся только интерфейс (по сути скин). Все настройки, параметры находятся на тех же местах. Проблем (на текущий момент) c переходом на **UE5** не будет никаких.  Все наши проекты успешно компилируются под эту версию. Кодовая база в этом плане не затронута. Весь код курса будет актуальным и для **UE5.**
{% endhint %}

{% hint style="success" %}
Дополнительно, для удобства можно создать дополнительный скрипт **clean\_and\_gen.bat**, который удаляет временные файлы и генерирует файлы проекта одновременно, с двумя строчками внутр&#x438;**:**\
\&#xNAN;*clean\_intermediate\_files.bat* \
*generate\_project\_files\_4.26.bat*
{% endhint %}

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

![](/files/-MayKbGnvJN5mnfDRCUP)

![](/files/-MayObXJrSskosA4v5tC)

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

{% embed url="<https://youtu.be/eqKVuLcLduM>" %}

{% embed url="<https://youtu.be/UixfY-2EoiM>" %}
