# 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>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lifeexe-art.gitbook.io/unreal-engine-c-course/ue5.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
