Unreal Engine 5
Unreal Engine 5 (UE5) — игровой движок от Epic Games, на котором созданы Fortnite, Gears of War и множество кино-продуктов. Технологии Nanite и Lumen позволяют делать фотореалистичные миры с минимальной ручной настройкой.
1. Что такое Unreal Engine 5
Движок объединяет редактор уровней, систему материалов, физику, анимации, визуальное программирование Blueprints и поддержку С++ в одном инструменте. Лицензия: бесплатная, с отчислением 5% после заработка свыше 1 млн долларов.
| Технология | Назначение |
|---|---|
| Nanite | бесшовные детализированные 3D-модели (геометрия в реальном времени) |
| Lumen | глобальное освещение и отражения без ручного запекания |
| Chaos | физика разрушений и столкновений |
| Niagara | системы частиц: огонь, дым, взрывы |
| Control Rig | прямая работа с костями скелета |
2. Установка и первый запуск
Скачай Epic Games Launcher (официальный сайт), зарегистрируй аккаунт и перейди на вкладку Unreal Engine:
- Нажми Install под версией 5.x.
- Дождись загрузки (десятки гигабайт) и запусти движок.
- В окне выбора проекта возьми шаблон First Person или Third Person.
# Быстрый способ проверить видео-драйверы (Windows)
dxdiag3. Интерфейс редактора
Главные панели редактора:
- Viewport — главное окно, где виден уровень; движение камеры и выделение объектов.
- Outliner — список всех объектов (актёров) на уровне.
- Details — свойства выбранного объекта: положение, поворот, масштаб, материалы.
- Content Browser — файлы проекта: меши, текстуры, звуки, классы.
- Toolbar — играть (Play), сохранить, настройки сборки.
4. Навигация в 3D-пространстве
Управление камерой в Viewport:
# Удержание ПКМ + WASD — движение вперёд/назад/в стороны
# ЛКМ — вращение камеры
# ПКМ — стремительное движение
# Колесо — зум
# ПКМ + W/S — летать вверх/вниз
# Shift — ускориться
# F — сфокусироваться на выбранном объекте
# 1..4 — переключение перспективы/ортографииИщи объекты в Outliner по имени, а не «на глаз» — на больших уровнях так быстрее.
5. Актёры и компоненты
Actor — любой объект на уровне. Component — часть актёра: геометрия, свет, звук, коллизия.
Добавь актёра в уровень:
- В Content Browser найди меш (например,
SM_ChamferCubeиз Starter Content). - Перетащи его в Viewport.
- В Details измени
Transform: Location, Rotation, Scale. - Зажми
Altи перетащи объект — создастся его копия.
# Горячие клавиши редактора
W / E / R # инструменты: переместить / повернуть / масштабировать
Ctrl+C / Ctrl+V # копировать вставиться актёра
End # «прилепить» к земле6. Материалы и освещение
Материал задаёт, как поверхность реагирует на свет. Создание:
- В Content Browser: ПКМ → Materials → Material.
- Двойной клик — откроется редактор нод.
- Выведи в
Base ColorузелVector Parameter— получишь настраиваемый цвет. - Сохрани и перетащи материал на объект в уровень.
Освещение уровня: Directional Light — солнце, Sky Light — небо и рассеянный свет. С включённым Lumen глобальное освещение считается автоматически, в реальном времени.
7. Blueprints — визуальное программирование
Blueprints позволяют писать логику без кода — нодами.
Создай первый Blueprint Class:
- Content Browser → ПКМ → Blueprint Class → выбери родителя (например,
Actor). - Открой его двойным кликом.
- Добавь переменную целого типа и ноды
BeginPlayиPrint String. - Соедини
BeginPlay→Print String, выведи значение переменной.
# Логика Blueprint = события + ноды-функции
BeginPlay # вызывается при появлении актёра в мире
Event Tick # вызывается каждый кадр
Print String # показывает текст на экране (отладка)Event Tick — это выполняется каждый кадр (60 раз в секунду). Для периодической логики используй таймеры или события.8. Взаимодействие и ввод
Реагируй на нажатие клавиши через Project Settings → Enhanced Input. Упрощённо для обучения — событие актёра:
- В Blueprint задействуй
Actor Has Tagи сравнение имени. - Для триггеров используй
OnComponent Begin Overlap— срабатывает при пересечении коллизий. - Проверку выполни в
Event Actor BeginOverlap.
Простой пример — открытие двери по нажатию клавиши E в зоне триггера:
Перетащи на уровень: Box Collision (триггер) + Static Mesh (дверь)
В Blueprint:
Event Actor BeginOverlap -> Show "Нажми E"
Event Actor EndOverlap -> Hide подсказку
IA_Toggle (E) -> Rotate дверь на 90 градусовActorBeginOverlap, InputAction (Enhanced Input). Горячая клавиша в консоли — ~.9. C++ в Unreal Engine
Для серьёзных проектов логику пишут на C++. Движок интегрирует C++ через макросы-разметку:
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"
UCLASS()
class MYGAME_API APickup : public AActor
{
GENERATED_BODY()
public:
APickup();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pickup")
int32 PointValue = 10;
UFUNCTION(BlueprintCallable, Category = "Pickup")
void Collect();
};Реализация в .cpp:
#include "Pickup.h"
void APickup::Collect()
{
Destroy();
}UPROPERTY— свойство, видимое в редакторе и Blueprints.UFUNCTION— функция, доступная из Blueprints.- Классы наследуются от
AActor, компоненты — отUActorComponent.
10. Физика и коллизии
Физика в UE5 — на движке Chaos. Основные понятия:
- Root Component — корень актёра; если это
Static Meshс включённымSimulate Physics— объект упадёт под гравитацией. - Collision Preset — как объект реагирует:
Block(препятствие),Overlap(сигнал пересечения),Ignore. - Character Movement — для персонажа: ходьба, прыжки, гравитация уже настроены.
# Проверка в Blueprint
Cast to Character # есть ли в зоне игры персонаж
Set World Location # телепорт объекта
Add Impulse # пинок физическому объектуCollision Enabled = Query Only (Overlap), для твёрдых тел — полноценные коллизии.11. UI (UMG) и простые эффекты
Интерфейс (HUD, меню) создаётся в Widget Blueprint (UMG):
- Content Browser → ПКМ → User Interface → Widget Blueprint.
- Перетащи на холст панель
Canvas Panelи текстText Block. - В
Event GraphвыведиSet Textузлом из переменной «очки». - Добавь виджет персонажу через
Create WidgetиAdd to Viewport.
Эффекты частиц — система Niagara: Content Browser → ПКМ → FX → Niagara System, выбери шаблон-эмиттер (огонь, искры, дым) и добавь на уровень.
.wav/.mp3 в Content Browser, затем подключи узлом Play Sound 2D к событию (например, к сбору предмета).12. Сборка и пакинг игры
Сохранённый уровень нужно собрать в готовую игру:
- File → Package Project → выбери платформу (Windows, Android, Linux).
- Укажи папку сборки — движок соберёт программы и упакует ассеты.
- Для C++-проектов первая компиляция долгая — это нормально.
# Консольная сборка C++-проекта (требуется Visual Studio / Xcode)
"The Unreal Engine" Build -projectfiles -gameЛучшие практики проекта:
- Держи версии ассетов в системе контроля версий: начни с GitLab и LFS для больших файлов.
- Часто нажимай
Ctrl+Sи делай бэкапы уровня. - Смотри статистику (
Stat FPS) и оптимизируй систематично: текстуры, Nanite, Lumen при настроенных уровнях качества.
13. Ландшафт и наполнение уровней
Пустая плоская сцена не раскрывает движок. Заполните уровень реалистичным окружением — горами, деревьями и травой.
- Ландшафт: вкладка Landscape на панели инструментов — «скульптинг» высот кистью по карте выдавливания.
- Материал земли: Material Blend с несколькими слоями (трава, камни, грязь) по маске высоты.
- Foliage: кисть растительности рисует деревья и кусты по поверхности, расставляя их тысячи за минуту.
- Вода: готовые Water Body (озеро, река) из плагина Water — нарисуйте и настройте прозрачность.
# Параметры кисти ландшафта
Brush Size # радиус кисти (удерживайте Shift для сглаживания)
Brush Falloff # мягкость краёв
Strength # сила подъёма/опускания14. Оптимизация: Nanite, Lumen, LOD
UE5 даёт технологии, которые сами решают часть задач производительности, но требует осознанных настроек.
| Технология | Что делает |
|---|---|
| Nanite | рендерит миллионы треугольников без ручных LOD |
| Lumen | глобальное освещение в реальном времени |
| LOD | автозамена детализации на расстоянии |
| Level Streaming | загрузка частей уровня по необходимости |
Правила: статичные меши в Nanite (через опции Import), освещение — через Lumen с разумным числом источников, динамические объекты — только там, где нужны.
Stat FPS # частота кадров
Stat GPU # загрузка видеокарты
Stat Memory # использование памяти15. Командная работа и плагины
Проекты в UE5 большие: гигабайты ассетов, десятки людей. Рабочий процесс строится на системе контроля версий и плагинах.
- Version Control: Git с LFS для больших файлов или Perforce (стандарт геймдева), см. курс GitLab.
- Lock Files: бинарные ассеты нельзя «слить» без конфликта — настройте запрет параллельного редактирования уровня.
- Плагины: Marketplace и Epic Online Services расширяют движок — устанавливаются через редактор (Edit → Plugins).
- Data Asset и Data Table — выносят баланс игры из кода в редактируемые данные.
# Полезные команды для работы с версиями
git lfs install
git lfs track "*.uasset"
git lfs track "*.umap"16. Камера от третьего лица: Spring Arm
Для персонажа от третьего лица стандарт UE5 — SpringArmComponent: он удерживает камеру на заданном расстоянии, гасит тряску пружиной и не даёт камере провалиться в стены.
1. Добавьте на персонажа SpringArm + CameraComponent
2. Target Arm Length ≈ 300–400, Socket Offset для смещения
3. Включите Camera Rotation Lag — для плавного следования
4. Управляйте вращением камеры через контроллер- коллизии подносят камеру к стене при подлёте — это нормальное поведение, настраивается просчётом дистанции;
- для режима прицеливания используйте отдельный socket-офсет или подмену FOV;
- камеру настраивайте на реальном уровне, а не на тестовом кубе.
17. Анимации персонажа: Anim BP, Blend Space, Control Rig
Скелетные анимации в UE5 соединяются анимационным графом (Anim BP): состояния, переходы и смешивание кадров по скорости движения.
1. Импортируйте скелет + ассеты анимаций (Walk, Run, Jump)
2. Создайте Anim BP и Blend Space по вектору скорости
3. Добавьте переходы состояний (Idle → Walk → Run)
4. Control Rig — для ручных правок поз и осанки- Blend Space смешивает шаг и бег по вашей скорости: плавный переход без смены клипов;
- переходы настраивают по булевым параметрам из Blueprint/C++;
- Control Rig позволяет править позу прямо в редакторе — для расслабленной походки или высоты руки.
18. ИИ врагов: AI Controller, Behavior Tree, Blackboard
Умный враг собирается из трёх деталей: AI Controller владеет персонажем, Blackboard хранит общие факты (цель, точка патруля), а Behavior Tree решает, что делать дальше.
1. Создайте Blackboard: ключи TargetActor, HomeLocation
2. Behavior Tree: Patrol → Sense → SetTarget → Chase → Attack
3. AI Controller настраивает движения и детект (AIPerception)
4. Назначьте AI Controller в классе персонажа- AIPerception обнаруживает игрока по зрению и слуху;
- правила прерывания узлов (Abort) возвращают врага из погони в патруль при потере цели;
- сложные вычисления выносите в функции C++/BP, а дерево держите читаемым.
19. Готовый контент: Megascans, Fab и Marketplace
Не весь контент нужно моделировать самим: библиотека Quixel Megascans и каталог Fab дают готовые ассеты — от сканов природы до строений и звуков.
- Megascans — фотограмметрические материалы и меши; добавляются в проект плагином;
- Fab — единый каталог Epic: модели, материалы, плагины, звук;
- в ежемесячных бесплатных подборках есть годные стартовые наборы для прототипа.
1. Откройте Fab/Library в редакторе
2. Скачайте ассет в проект
3. Проверьте лицензию и требования движка
4. Перетащите из Content Browser на уровеньГотовые ассеты экономят дни, но несут риски: риск кривых полигональных счётчиков и конфликтующих материалов. Заведите папку «ThirdParty» и отмечайте происхождение в описании проекта.
20. GAS: способности, эффекты и модификаторы
Gameplay Ability System (GAS) — фреймворк для RPG-логики: способности (abilities), эффекты (effects), атрибуты и модификаторы. Хоть он сложен, в серьёзных проектах это «стандарт де-факто», потому что несёт всю «игрологию» наружу.
AbilitySystemComponent — хит-ден героя
UAttributeSet — HP, Stamina, Damage
GameplayEffect — баффы/дебаффы (коэффициенты)
Пример: урон = BaseDamage + Damage * Power
с проверкой стаков и приоритетов- способность — объект с предикатами (cost, cooldown, проверки) и «тактами» применения;
- GameplayEffects применяются через граф модификаторов, а не через хардкод;
- GameplayTags — метки для логики: «неподвижен», «дот-яд».
Начинать с GAS стоит не в первом проекте, но лучшие практики сообщества (GASDocumentation) подскажут структуру, которую вы будете благодарить в месяц 12.
21. Material Functions и Decals
Сложный материал тянется на десятки нод — это трудно читать и переиспользовать. Два инструмента чистят материал: Material Functions (переиспользуемые «подпрограммы») и Decals (проекции текстур на поверхность).
Material Function: MF_Grime_Mask
вход: WorldPosition, Intensity
выход: маска для пыли/грязи по высоте
Decal (декаль): кровь, трасса, граффити
проекция на стену без альбедо-переделки- функция инкапсулирует логику: меняется один узел — обновляются все материалы;
- декали — поверхностные эффекты без изменения базового материала объекта;
- декали подстраиваются под нормали поверхности через маску угла;
В большом проекте функции — «библиотека стиля»: MF_Damage_V2 переиспользуется в десятках материалов, а декали решают VFX-детали.
22. Level Streaming и World Partition
Огромный открытый уровень не влезает в память и билд целиком: решение — стриминг. Классика — подгружать тайлы/зоны по близости игрока; в UE5 добавился World Partition — автоматическое разбиение большого мира на ячейки.
Режимы:
- Level Streaming: вручную/по триггерам включать дополнительные уровни
- World Partition: мир делится на скейл-ячейки, загружаемые по сетке
Практика: большие открытые уровни строятся как World Partition,
а интерьеры — отдельными уровнями со стримингом по двери- стриминг «по расстоянию» и по игроку — главный инструмент для больших миров;
- World Partition экономит память и редактирование (миллионы актёров без ручной разметки);
- стриминг — конкурент для спецэффектов: контролируйте зависимость актёров от ячеек.
Правило: что-то должно быть «изначально видимо» — не двигайте «вечный» UI в стрим, а для физики и логики NPC считайте ячейки заранее.
23. Мультиплеер: репликация и RPC
Сеть меняет всё: у каждого игрока своя копия мира, а изменения синхронизируются между ними через репликацию свойств и RPC (удалённые вызовы). Без понимания этих двух механизмов сетевую игру не построить.
// свойство реплицируется (обновляется у всех)
UPROPERTY(ReplicatedUsing = OnRep_Health)
float Health;
// RPC клиент → сервер (проталкивает действие)
UFUNCTION(Server, Reliable)
void FireWeapon();
// RPC сервер → клиенты (результат)
UFUNCTION(NetMulticast, Reliable)
void SpawnBlood(FVector Loc);- репликация — это «синхронизация значений»; реплицируйте минимум, остальное — событием;
- Server/Reliable — «главный» авторитет: клиент предлагает, сервер решает;
- NetMulticast раздаёт эффекты всем, кому нужно.
Правило доверия: никогда не двигайте «значимые» объекты с клиента без сервера — читерство и рассинхрон всегда рядом.
Что дальше
Освоив основы UE5, углуби язык для игровой логики — курс C++ научит классам, указателям и STL. Для 3D-моделей и текстур к уровням подойдёт Blender, а для организации командной разработки — GitLab.