Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Производительность

Введение

Godot follows a balanced performance philosophy. In the performance world, there are always tradeoffs, which consist of trading speed for usability and flexibility. Some practical examples of this are:

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

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

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

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

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

Исходя из этого, цель данного раздела - объяснить, как добиться максимальной производительности Godot. Хотя учебники можно читать в любом порядке, хорошей идеей будет начать с General optimization tips.

Общий

CPU

GPU

3D

Потоки