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.