Долгосрочный инженерный проект · новый стандарт, начат с нуля
UE C++ Academy — не справочник, а инженерная школа Unreal Engine
Каждая тема объясняет не «что использовать», а «почему это существует», «какую проблему решает», «как устроено внутри» и «когда так делать нельзя». Цель — чтобы после прочтения темы не оставалось логичного вопроса без ответа, и чтобы ты научился сам приходить к архитектурным решениям Epic, а не запоминал их как список фактов.
Как построена каждая тема
Гибкий стандарт: 11 обязательных разделов для любой темы + разделы, которые появляются автоматически, если тема их естественно порождает — без искусственных пунктов вроде «влияние на Multiplayer» у статьи про
const.Что это?
Короткая ориентирующая формулировка перед глубоким погружением.
Почему существует?
Проблема → причина, а не факт без контекста.
Какую проблему решает?
Конкретный, воспроизводимый сценарий поломки наивного подхода.
Как устроено?
Ограничения → архитектурное решение → реализация, с примерами из Engine Source.
Когда использовать / нельзя
Границы применимости — без них тема порождает карго-культ.
Примеры
Полностью рабочий код с построчным разбором — псевдокод запрещён.
Типичные ошибки
Отдельно для новичков и middle, с объяснением механизма поломки.
Практика
Задания, заставляющие воспроизвести рассуждение, а не скопировать пример.
FAQ
Вопросы, которые реально возникают у внимательного читателя.
Итоги
Утверждения, которые читатель должен суметь произнести своими словами.
+ по необходимости
GC, Reflection, Blueprint, Multiplayer, сериализация, производительность — если тема их естественно порождает.
Прежде чем начать
Компас поверх всего курса — не тема, а способ мышления, который повторяется в каждой следующей теме.
💡
Двенадцать сквозных «Почему» (UObject, указатели, GC, Reflection, Component, Composition, Modules, Plugins, Subsystem, Gameplay Tags, Data Assets, Primary Assets) в одном месте — прочитай эту страницу первой, и дальше каждая новая тема курса будет опознаваться как вариация уже знакомого рассуждения, а не новый набор фактов.
Эталонная статья
Золотой стандарт качества и глубины для всего проекта — с неё стоит начать, даже если ты уже опытный разработчик.
★
Engine → Framework → почему UObject → почему Reflection → почему Garbage Collector → почему появились макросы → как всё это связано в одну цепочку причин. После этой статьи остальные темы курса читаются не как отдельные факты, а как применение одного и того же способа рассуждения.
Дорожная карта — 9 уровней
Девять последовательных уровней вместо шестнадцати разрозненных кластеров — каждый следующий уровень объясняется через предыдущий, а не сам по себе. Единственное исключение — Level 5: шесть его прикладных систем идут параллельно, а не по порядку.
0
Level 0 — Как мыслит Unreal
Зачем вообще существует остальной курс: когда документации Epic ещё достаточно, а когда пора открывать исходники движка, и как физически ориентироваться в .h/.cpp-файлах ещё до того, как ты узнал, что такое UObject.
1
Level 1 — Object System
Опирается на Level 0 — после него любой UCLASS()/UPROPERTY() объясняется как конкретное следствие Reflection, Garbage Collector, Package и CDO, а не как магический синтаксис.
UObject: архитектура объекта
Class Default Object (CDO)
UObject::Outer
Reflection
Garbage Collector
UPROPERTY
UFUNCTION
UINTERFACE
EObjectFlags
FName / FString / FText
UPackage
Asset Registry
UStruct: общий класс под капотом
TSubclassOf<T>
Cast<> vs dynamic_cast
NewObject / CreateDefaultSubobject
UObject в памяти
2
Level 2 — Объекты рантайма
Опирается на Object System — сначала сам Actor и его компоненты, и только когда естественно возникает вопрос «как хранить список компонентов», инструменты: TArray/TMap и два непересекающихся мира указателей.
3
Level 3 — Gameplay Framework
Опирается на Level 2 — полный состав ролей фреймворка (Pawn/Controller/Character/GameMode/GameState/GameInstance/Subsystem) и Delegates как инструмент, до того как AI/UI/GAS начнут молча на них полагаться.
4
Level 4 — Data
Опирается на UObject и мягкие ссылки — как описывать растущий контент данными, а не кодом, до того как GAS и AI начнут на этом строиться.
Level 5 — Systems
Шесть параллельных прикладных систем, а не последовательность — порядок между 5.A–5.F не жёсткий, каждая опирается только на Level 0–4 (и Network Prediction в GAS — ещё и на Level 6, Multiplayer).
5A
5.A — Input
Как игровое намерение отделяется от физической клавиши: Input Actions и Mapping Contexts вместо жёстко зашитых Action/Axis Mappings.
5B
5.B — UI
Как строится интерфейс через UMG, как управлять стеком экранов и фокусом через CommonUI, и как разорвать прямую связь виджета с игровыми объектами через MVVM.
5C
5.C — Gameplay Ability System
Фреймворк способностей поверх UFUNCTION: сеть, отмена, стоимость ресурсов и совместимость эффектов одним согласованным решением — вплоть до Network Prediction на стыке с Multiplayer.
5D
5.D — AI
Как решение «что делать NPC» выражается деревом переиспользуемых нод, как задачи и дерево обмениваются данными через общее хранилище, и как декларативно искать лучшую точку в мире.
5E
5.E — World Streaming
Как игровой мир, физически не помещающийся в память целиком, загружается по частям: вручную, автоматически по сетке, и логическими слоями поверх неё.
5F
5.F — Animation
Как логика позы скелета выделяется в отдельный объект с собственным графом, как одноразовые действия проигрываются поверх постоянного блендинга, и как поза адаптируется к геометрии в рантайме.
6
Level 6 — Multiplayer
Опирается на UPROPERTY и Owner/GetOwner() — сервер и клиент видят один и тот же актор по-разному, и этого достаточно, чтобы вернуться и по-настоящему закрыть Network Prediction из Level 5.
7
Level 7 — Engine Internals
Новый уровень целиком — что происходит с проектом между «написал код» и «игрок запустил exe»: Header Tool, UnrealBuildTool, модули, плагины, сериализация, Cook, рантайм-загрузка, потоки и аллокаторы памяти.
Foundation
Compile: от .cpp до игры ★ флагман
UnrealBuildTool
Modules и .Build.cs
Plugins и .uplugin
FArchive: сериализация
Cooker
Runtime Loading
Game Thread и Task Graph
FMalloc: аллокаторы памяти
Advanced
UBT: граф компиляции
UnrealHeaderTool изнутри
Build.cs и Target.cs
Конвейер компиляции целиком
Внутри .generated.h
Hot Reload vs Live Coding
Packaging: Build+Cook+Stage+Package
Как плагин попадает в память
FMemory и GMalloc
Alignment и Cache Lines
TArray изнутри
TMap / TSet изнутри
8
Level 8 — Production
Новый уровень целиком, завершающий курс — как не только писать код, но и диагностировать и чинить существующий, держать бюджет кадра, сохранять прогресс и структурировать проект, который переживёт больше одного разработчика.
Отладка
UE_LOG
Visual Logger
Gameplay Debugger
DrawDebug*
Unreal Insights
stat-команды
Оптимизация
Оптимизация Tick и Timer
AsyncTask и ParallelFor
Профилирование как способ мышления
Сохранение
USaveGame
Архитектура
Архитектура большого проекта
Профилирование (Advanced)
Trace изнутри
Свой Trace Channel
CSV Profiler
Gameplay Debugger по сети
LLM: Low Level Memory Tracker
GPU-профилирование
Анализ одного кадра
Архитектурные паттерны
Композиция vs наследование
Subsystem Pattern
Observer через делегаты
Factory Pattern: SpawnActor
Command Pattern в GAS
Dependency Injection в Unreal
Afterword — сквозные статьи
Не новый материал, а экзамен на то, умеешь ли ты видеть систему целиком: пять статей связывают всё, что было изучено по отдельности, в сквозные истории — от нажатия клавиши до кадра на экране, от запуска процесса до полного жизненного цикла игры.
✦
Afterword — Engineering Flows
Опирается на весь курс целиком — каждая статья проходит один сквозной путь через события, изученные по отдельности в Level 0–8, и складывает их в одну проверяемую по исходникам хронологию.
Примени всё вместе
Пройти 9 уровней изолированно достаточно, чтобы понять каждую идею — недостаточно, чтобы почувствовать, как десятки таких идей уживаются в одном живом классе. Второй, параллельный трек курса — один и тот же персонаж, растущий вместе с прохождением уровней.
🎮
Один непрерывно растущий проект вместо шестнадцати параллельных вех — почти каждый уровень добавляет реальную, работающую часть той же самой игры выживания: от голого Actor и компонентов через Enhanced Input, DataAsset-предметы, UMG/MVVM, Multiplayer, GAS-способности и AI-противника до сохранения и профилирования, с обязательным условием: решения прошлых шагов не переписываются тихо, только через осознанный рефакторинг — так же, как в настоящем проекте.
Теги
#engine
#framework
#uobject
#reflection
#garbage-collector
#upropety
#owner
#architecture
#actor
#component
#ufunction
#uinterface
#blueprint
#smart-pointers
#soft-reference
#multiplayer
#rpc
#pawn
#controller
#gamemode
#delegates
#tarray
#tmap
#containers
#input
#gas
#attributeset
#gameplayeffect
#prediction
#umg
#commonui
#mvvm
#gameplaytags
#dataasset
#datatable
#assetmanager
#behaviortree
#blackboard
#eqs
#levelstreaming
#worldpartition
#datalayer
#animinstance
#animmontage
#ik
#documentation
#source-reading
#dependencies
#cdo
#outer
#eobjectflags
#fname
#package
#asset-registry
#transform
#tick
#spawnactor
#uworld
#character
#gameinstance
#subsystem
#relevancy
#dormancy
#unreal-header-tool
#hot-reload
#unrealbuildtool
#modules
#plugins
#farchive
#cooker
#async-loading
#threading
#game-thread
#fmalloc
#uelog
#visual-logger
#gameplay-debugger
#draw-debug
#unreal-insights
#stat-commands
#tick-optimization
#taskgraph
#profiling
#savegame
#god-class
#ustruct
#tsubclassof
#cast
#newobject
#memory-layout
#world-context
#tactoriterator
#collision
#linetrace
#chaos
#playercontroller
#localplayer
#gameplaystatics
#primarydataasset
#config
#developersettings
#input-subsystem
#slate
#widget-lifecycle
#commoninput
#executioncalculation
#modifiermagnitudecalculation
#gameplaycue
#aiperceptioncomponent
#navmesh
#smartobjects
#pcg
#foliage
#hlod
#nanite
#lumen
#state-machine
#blendspace
#linked-anim-layers
#motion-warping
#root-motion
#animinstanceproxy
#actor-channel
#netdriver
#replayout
#replicationgraph
#fastarrayserializer
#client-side-prediction
#netmode
#seamlesstravel
#action-graph
#unrealheadertool
#target-cs
#compilation-pipeline
#generated-h
#live-coding
#packaging
#pluginmanager
#fmemory
#cache-line
#tarray-memory
#tsparsearray
#trace
#trace-channel
#csv-profiler
#ai-debugging
#llm
#gpu-profiling
#frame-analysis
#composition
#singleton-alternative
#observer-pattern
#factory-pattern
#command-pattern
#dependency-injection
#engine-lifecycle
#streamable-manager
#activateability
#frame-pipeline
#repnotify
Как использовался старый проект
Прежний проект (папка на уровень выше) не удалён и остаётся справочным материалом — источником идей, готовых объяснений и примеров кода. Ни одна статья здесь не является копией: каждая тема анализируется заново, проверяется, дополняется и приводится к единому стандарту, описанному выше.