Unreal Engine 5: симулятор шизофрении для разработчиков

Unreal Engine 5: симулятор шизофрении для разработчиков

Unreal Engine 5 — это не просто инструмент. Это проклятая книга, обернутая в глянцевый UI.

Ты качаешь UE5. Он весит как два Ведьмака, шесть порноархивов и половина твоего SSD.

Unreal Engine 5 — это не игровой движок. Это секта, в которой ты главный проповедник, алтарный мальчик и жертва ритуала одновременно. Ты не разрабатываешь игру. Ты заклинаешь демона.

БезДуховНИК

UE5 — это секта. Кто выжил — тот стал сеньором. Кто сдался — тот пошёл делать idle clicker на Unity. Я остаюсь. Потому что люблю боль. Потому что в каждой строчке C++ — надежда, что завтра я наконец удалю этот костыль. Спойлер: не удалю.

Компиляция шейдеров: искусство смотреть в пустоту

Ты открываешь UE5 в надежде создать игру, но вместо этого — создаёшь депрессию, личный культ и двадцать плагинов, которые ничего не делают. Каждый запуск — русская рулетка.

Появляется надпись: Compiling Shaders (30100). Проходит полчаса, и ты начинаешь верить, что все эти числа — это твои прошлые жизни. Все 30 тысяч.

UE5 компилирует шейдеры, даже если ты просто посмотрел на материал. Даже если ты его не менял. Просто подумал о нём.

Именно в этот момент ты осознаёшь: ты не разработчик. Ты зритель. А твой компьютер — это огненная колесница, несущая тебя в преисподнюю RAM-перегрева и Thermal Throttling.

GAS: это не баг — это фича. Или галлюцинация.

Сначала ты думаешь: "О, модульная система способностей — круто, гибко, по-научному."

Через два дня ты гуглишь:

"Why Ability doesn't activate UE5"

"AttributeSet not replicated"

"How to stop crying when GAS fails"

Ты проходишь стадии принятия:

  1. Отрицание: "Наверное, я просто не добавил Ability в ASC."
  2. Гнев: "КТО ПРИДУМАЛ ЭТУ СРАНЬ?!"
  3. Торг: "Хорошо, пусть будет BlackBox, но только один."
  4. Депрессия: "Я всё равно никому не нужен."
  5. Принятие: "Ладно, напишу свой GAS поверх GAS, чтобы обойти GAS."

Gameplay Ability System — звучит как что-то полезное. На деле — это набор декораций, созданных для демонстрации, как можно потерять рассудок, передавая эффекты по сети.

Хочешь просто добавить рывок? Поздравляю: тебе нужен GameplayAbility, GameplayEffect, GameplayCue, AbilitySet, InputMappingContext, GameplayEvent, Replication, Tags, и верёвка.

Иногда эффект не срабатывает, и ты думаешь — ошибка? Нет. Просто PredictedClientDidNotReceiveAbilityEventBecauseMoonPhaseWasWrong.

Lyra: архитектурный троллинг

Ты открываешь Lyra, смотришь на структуру проекта — и начинаешь реветь. Ты вроде взрослый человек. А тут — сто тысяч ассетов, пятнадцать блюпринтов на одну кнопку, и что-то рычит в фоне. Наверное, это твоя психика.

Unreal Engine 5: симулятор шизофрении для разработчиков

Мы сделали Lyra, чтобы показать, как надо.

Epic

Спасибо, теперь я не знаю, как жить.

Разработчики

Там GAS. Там субсистемы, абилки, анимграфы, хендлеры, компоненты, компоненты компонентов, контексты, эдитивы, девятый круг ада.

Ты хочешь просто выстрелить.

UE5: «Пожалуйста, настрой GameplayAbilitySpec, привяжи TagContainer и добавь InputBinding через Subsystem внутри LocalPlayerController».

Ты: жгёшь всё к херам и уходишь в лес.

Niagara: красота, которая жрёт твой комп и уважение к себе

Сначала — "Вау, частицы!". Пиши свои шейдеры. Импортируй текстуры. Потом — "Почему Niagara System не работает в уровне, но работает в Preview?" Эффект взрыва работает в редакторе, но не в билде.

Unreal Engine 5: симулятор шизофрении для разработчиков

Затем — ты плачешь, потому что Niagara Event не срабатывает. А когда срабатывает, она крашит редактор. Ты пытался создать огонь — а создал портал в безумие.

Nanite и Lumen: как обмануть глаз, убив FPS

Nanite классный, звучит как нанотехнология из будущего.

 «Ты можешь вкинуть сюда хоть статую Давида из фотограмметрии. И она будет лагать красиво.»
 «Ты можешь вкинуть сюда хоть статую Давида из фотограмметрии. И она будет лагать красиво.»

И, разумеется, всё выглядит великолепно. Пока ты не включишь консольные команды stat GPU и не осознаешь, что твоя сцена отжирает больше, чем RTX-дрочильня на 8К с DLSS отключенным по принципу злобы.

Lumen охрененный. Революционное глобальное освещение. Да, выглядит круто. Свет отражается, bounce работает, GI рисует мягкие тени, и ты чувствуешь себя богом. Богом, у которого 60 FPS было в прошлой жизни.

Unreal Engine 5: симулятор шизофрении для разработчиков

Но вот сюрприз:

  • Ландшафт начал светиться ночью.
  • Потолок не закрыт — весь уровень стал кладбищем фреймрейта.
  • Ты сделал фонарик? А теперь представь, что он освещает всё. Включая твою GPU, сердце, печень.

Ты заходишь на форум и видишь обсуждение:

Как сделать нормальный свет в Lumen?

Вопрос

Не делай.

Ответ

Переходишь в документацию — а там пустота. Зато в официальных туториалах один свет, один куб и вечная надежда, что у тебя видеокарта за $2000.

Бонус-тезис: Nanite + Lumen = любовный союз термоядерного уровня

Совмести их — и ты получаешь проект, который невозможно оптимизировать, но невозможно удалить. Потому что ты вложил в него часть себя. И эта часть теперь обитает в Saved/Intermediate.

Blueprints: дверь в рай, которая ведёт в сраный подвал

Blueprints — как первый наркотик. Новички обожают BP. Вроде бы просто: вот Event Begin Play, вот Print String, кайф. Но потом ты открываешь граф на 400 нодов. Делегаты, касты, касты на касты, касты кастов кастов...
Потом ты добавляешь Timeline в Timeline внутри Sequence и привязываешь всё к Event Tick, потому что ты можешь. И потому что дьявол говорит тебе "ДАВАЙ".

100 нодов, переплетение, макросы внутри макросов, Events вызывают Events, а в конце — Delay на 2 секунды, потому что иначе всё ломается.
100 нодов, переплетение, макросы внутри макросов, Events вызывают Events, а в конце — Delay на 2 секунды, потому что иначе всё ломается.

Проходит неделя.

Ты не понимаешь, что происходит. Но работает. Пока ты не пересобираешь проект.

Тогда всё ломается.

Слово "Reparent Blueprint" начинает звучать как приговор. И ты, наконец-понимаешь, что легче было выучить C++. BP хорош для прототипов, но стоит тебе соединить один Event Dispatcher с Delay внутри RepNotify — и всё, ты в аду. Ты хочешь отладку? Лол. Привет, PrintString.

Сборка проекта и Editor crashes

UnrealBuildTool — имя демона, от которого тебя не спасёт ни Clean, ни Rebuild, ни “Переустанови движок нахуй”. Ты правишь одну строчку кода — 20 минут компиляции. Переименовал класс? Добро пожаловать в ад переопределений. Новый модуль? ТЫ СОЗДАЛ ВЕТКУ АПОКАЛИПСИСА.

UE крашится. Часто. Без причины. Иногда ты просто наводишь мышку. Иногда — ничего не делаешь. Иногда он крашится, когда ты уже закрыл его.

Stack trace пишет тебе шепотом:

"Invalid Slate widget pointer"

"Accessed None trying to read property 'DeathWish'"

Ты начинаешь видеть знаки. Ты записываешь их в блокнот. Ты создаешь культ вокруг UUserWidget. Ты называешь свою собаку "Nullptr".

Финал. Зачем мы здесь?

Ты выучил GAS. Ты переписал Lyra. Ты оптимизировал Niagara и приручил Nanite. Ты построил свою систему инвентаря, свою систему диалогов, свои шейдеры и свои собственные шутки про UE5. Ты не разработчик. Ты — шаман. Безумный. Уставший. Удивительно живой.

Unreal Engine 5: симулятор шизофрении для разработчиков

Мы все здесь не потому что "это лучший движок". Мы здесь, потому что мы не можем уйти.

Потому что, несмотря на баги, боль, сумасшествие, мы знаем: Если ты сможешь укротить этого зверя — сможешь и игру сделать. Или хотя бы хороший пост на DTF. Так что береги психику, комп и репозиторий.

И помни: если ты чувствуешь, что сходишь с ума — ты всё делаешь правильно.

2
Начать дискуссию