Оптимизация

Введение

Godot придерживается философии сбалансированной производительности. В мире производительности всегда есть компромиссы, которые заключаются в обмене скорости на удобство и гибкость. Некоторые практические примеры этого:

  • Эффективно рендерить большое количество объектов легко, но когда нужно отрисовать большую сцену, это может стать неэффективным. Чтобы решить эту проблему, необходимо добавить к рендерингу вычисления видимости. Это делает рендеринг менее эффективным, но в то же время рендерингу подвергается меньшее количество объектов. Таким образом, общая эффективность рендеринга повышается.

  • Настройка свойств каждого материала для каждого объекта, который необходимо визуализировать, также занимает много времени. Чтобы решить эту проблему, объекты сортируются по материалам для снижения затрат. В то же время сортировка имеет свою цену.

  • В 3D-физике происходит похожая ситуация. Лучшие алгоритмы для обработки большого количества физических объектов (например, SAP) медленно вставляют/удаляют объекты и передают лучи. Алгоритмы, которые позволяют быстрее вставлять и удалять объекты, а также передавать лучи, не смогут справиться с большим количеством активных объектов.

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

Godot is not an exception to this. While it is designed to have backends swappable for different algorithms, the default backends prioritize balance and flexibility over performance.

With this clear, the aim of this tutorial section is to explain how to get the maximum performance out of Godot. While the tutorials can be read in any order, it is a good idea to start from General optimization tips.

Общий

CPU

GPU

2D

3D

Многопоточность