19 Октября 2021  •  The Crust

Боль оптимизации

Привет, это команда VEOM Studio. Хотим поделиться последними новостями.
 

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

Наша команда за недавнее время проделала хорошую работу над оптимизацией, благодаря чему нам удалось увеличить FPS на 80%.
 

Что мы сделали:

  • Мы выявили узкое место в алгоритме, определяющем очередность задач и выдающем их роботу, исходя из его текущей локации. Мы отрефакторили его и полностью переписали на C++. 
     
  • Вдобавок мы ввели дополнительный алгоритм очереди для роботов, который распределяет задачи, устраняя пиковые нагрузки, благодаря чему FPS стал еще выше и стабильнее.
     
  • Ранее для роботов мы использовали класс «Character», однако теперь заменили его на «Pawn», поскольку он более легковесный.
     
  • Наличие в игре множества анимированных моделей колонистов и роботов, которых мы создаем с помощью Skeleton Mesh, оказывает значительное влияние на производительность игры. Мы нашли несколько способов улучшить быстродействие, воплотили одни из них и активно работаем над другими.
     
  • Мы улучшили алгоритм генерации земли на подземном уровне и исправили его баги, так что игра теперь загружается намного быстрее.
     
  • Несколько мелких улучшений в алгоритмах зарядки роботов и логистики между складами.

 

Также мы провели большую работу с освещением зданий. Обычно в играх используются подготовленные игровые уровни, где свет можно запечь заранее, избегая таким образом использования динамического света. Запечение света обычно происходит при подготовке игры, когда делают модели и уровни. С нашим масштабным строительством и большим количеством модулей, а также учитывая то, что мы играем в темноте, количество источников света на сцене получается очень большим. 

Для решения этой задачи мы написали свой алгоритм освещения зданий. Алгоритм понимает когда здание меняет состояние и перезапекает свой свет. Также свет перезапекается при построении и удалении модулей рядом со светом для поддержания актуальности карты света и правильного отображения теней.
После внедрения алгоритма в рабочий проект ожидаем увидеть существенный прирост FPS.

 

Шаг за шагом мы приближаемся к тому уровню оптимизации, который сможем назвать образцовым. Оставайтесь на связи и следите за обновлениями!