Что дальше: повышаем стабильность UEFN и ускоряем цикл итераций

Авторы: Aurel Cordonnier и Kavita Chodavarapu

Приветствуем разработчиков Fortnite!

В прошлом году мы взяли на себя обязательство https://www.youtube.com/watch?v=M1F5CimXO_8&t=2492s повысить стабильность и скорость итераций в UEFN. Наша цель — сократить время итерации на 50% к июню (или даже сверх этого — обещая меньше, надеемся достичь большего). В этой публикации мы рассказываем об изменениях во внутренних процессах тестирования и QA, направленных на повышение стабильности версий, а также о первых обновлениях, которые появятся в ближайшие месяцы, чтобы ускорить цикл итераций.

Стабильность версии и тестирование

Мы изменили подход к тестированию, сосредоточившись на том, что наиболее важно для вас — островах с высокой вовлечённостью и сложной системой сохранения прогресса. Теперь тестовое покрытие включает дополнительный контент разработчиков, более подверженный регрессиям, благодаря чему мы выявляем критические дефекты раньше — до того, как они начинают влиять на работу разработчиков.

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

Первые результаты обнадёживают. В версии 39.30 мы предотвратили выход в релиз 57% дефектов, а в версиях 39.40 и 39.50 не было ни одного критического дефекта, связанного с контентом разработчиков или системой сохранения прогресса — это прямой результат ускоренного анализа и расширенного тестового покрытия. Показатель escape rate (дефекты, которые всё-таки попадают в конечную версию) также значительно снизился: с 18,5% в версии 39.11 до всего 4,7% в версии 39.40.

Мы понимаем, что внутренние метрики показывают лишь часть картины, поэтому вместе с командой сообщества запускаем ежемесячные опросы о стабильности, чтобы получать обратную связь напрямую от разработчиков и убедиться, что изменения действительно заметны. Эти отзывы помогут нам понять, на чём следует сосредоточить усилия по повышению стабильности.

Инструменты для обеспечения стабильности и управления ресурсами

Наряду с расширением внутренних процессов QA мы также добавляем новые инструменты и рабочие процессы, которые помогут выявлять и исправлять ошибки в проектах до того, как они приведут к сбоям или зависаниям.

  • Инструменты контроля состояния ресурсов: помогают устранять проблемы валидации ресурсов и ошибки нехватки памяти во время итераций благодаря новому пост-импортному мониторингу, отчётности и порогам использования памяти для разных платформ.
  • Обновления пространственного профилировщика: благодаря расширенным возможностям профилирования в UEFN вы сможете быстро выявлять ресурсы с высокой нагрузкой на разных платформах. В том числе — на основе новых результатов прямого расчёта использования памяти и нового представления обзора ресурсов с анализом UObject Objects in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community .

Оптимизация конвертера в формат платформы
Чтобы сократить время подготовки острова к игровой сессии и ускорить процесс итераций, мы перерабатываем конвейер конвертации в UEFN, делая его более эффективным. «Конвертация данных в формат платформы» Приготовление | Fortnite Документация | Epic Developer Community — это процесс преобразования исходных ресурсов в оптимизированный формат, готовый для клиента, чтобы контент быстрее загружался и отображался.

Это будут внутренние улучшения серверной инфраструктуры UEFN, поэтому вам не придётся ничего менять в своём рабочем процессе.

  • Кэш производных данных Zen (кэш производных данных — Using Derived Data Cache in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community мы развёртываем новейшие системы Zen Server на сервере UEFN и внедряем cooked snapshots, чтобы повысить эффективность процесса конвертации и сократить цикл итерации процесса игры на клиенте.
  • Инкрементальная конвертация: мы добавляем систему, которая будет обрабатывать только изменения ресурсов, отправленные из вашего проекта, вместо повторной обработки неизменённых данных.
  • Распределённая компиляция шейдеров: вместо того чтобы выполнять всю компиляцию шейдеров на локальной машине, мы будем распределять её в облаке, что ускорит компиляцию.

Улучшения редактирования по сети
Мы расширяем возможности редактирования по сети, добавляя больше способов выполнения итераций во время сеанса редактирования по сети. Появится поддержка дополнительных типов ресурсов и новые рабочие процессы редактирования непосредственно в редакторе для работы с уже запущенным сеансом.

  • Расширенная поддержка типов ресурсов: вы сможете изменять больше типов ресурсов непосредственно во время сеанса редактирования по сети, что сократит необходимость применения изменений. Например: звуковая шина, видеоряд.
  • Редактирование по сети в игровом режиме: если во время редактирования по сети запустить игровой режим, часть изменений в редакторе UEFN будет применяться без необходимости отправлять изменения и останавливать игру. Например, если вы создаёте полосу препятствий, вы сможете трансформировать объекты и настраивать их положение.
  • Панель истории изменений: показывает, какие изменения в текущем сеансе уже применены, а какие всё ещё требуют применения. Панель будет работать как в режиме редактирования, так и в игровом режиме, пока сеанс активен.

Вы можете отслеживать эти обновления в плане развития инструментов для разработчиков Fortnite Trello . Мы также будем использовать эту тему, чтобы делиться новостями о нашей текущей работе по повышению стабильности и ускорению времени итерации в UEFN.