Заикания и подтормаживания стали настоящей проблемой для игр на высокотехнологичном движке Unreal Engine. В крупных релизах на ПК, таких как A Plague Tale: Requiem, Senua's Saga: Hellblade II и даже в недавней Black Myth: Wukong, игроки сталкиваются с резкими просадками кадров. Это явление, известное как stuttering (заикания), возникает из-за компиляции шейдеров и требует от разработчиков постоянных патчей после выхода игр. Казалось, что это бич современной игровой индустрии с которым не смогут совладать разработчики, но у создателей движка компании Epic Games похоже есть решение.
Как сообщается, основная причина проблемы кроется в способе работы современных игровых движков с графическим процессором. Когда игра использует сложные визуальные эффекты, ее код должен быть переведен в понятный для видеокарты формат — процесс, называемый компиляцией шейдеров. Если игра делает это во время геймплея, нагрузка на процессор приводит к кратковременным, но ощутимым зависаниям.
До версии Unreal Engine 5.2 основной метод борьбы с заиканиями заключался в создании кеша заранее скомпилированных Pipeline State Objects (PSO). Однако этот способ требовал значительных ресурсов и плохо работал в играх с динамическим контентом. Теперь в последних версиях движка внедрена система PSO Pre-Caching, которая предварительно загружает нужные шейдеры во время загрузки уровня или при появлении объекта в кадре. Это снижает вероятность заиканий, так как процесс компиляции происходит до момента отображения графики на экране. Например, Fortnite использует около 10 000 PSO за матч, хотя потенциально их число могло бы исчисляться миллионами.
Epic признает, что новая система не решает проблему полностью. Глобальные шейдеры, такие как те, что используются в пост-обработке (размытие в движении, тени, отражения), все еще могут вызывать кратковременные подвисания. Разработчики движка продолжают работу над устранением этих недостатков. Кроме того, кеш PSO может занимать много памяти, и Epic сейчас ищет способы автоматического управления его размером.
Хотя полностью избавиться от заиканий пока не удалось, Epic Games уверяет, что окончательное решение уже близко. Компания рекомендует разработчикам использовать последние версии движка, регулярно анализировать появление зависаний во время разработки и избегать устаревших API, таких как DirectX 11, которые не дают эффективных инструментов для борьбы с этой проблемой. Если все пойдет по плану, будущие игры на Unreal Engine смогут обходиться без проблем с заиканиями, а игрокам не придется ждать патчей после релиза.