Optimización

Introducción

Godot sigue una filosofía de rendimiento equilibrado. En el campo del rendimiento, siempre hay compensaciones que consisten en la velocidad de intercambio en términos de usabilidad y flexibilidad. Algunos ejemplos prácticos de esto son:

  • Renderizar objetos eficientemente en grandes cantidades es fácil, pero cuando se debe renderizar una escena grande, puede volverse ineficiente. Para resolver esto, se debe agregar el cálculo de visibilidad al renderizado, lo que hace que el renderizado sea menos eficiente, pero, al mismo tiempo, se renderizan menos objetos, por lo que la eficiencia en general mejora.
  • La configuración de las propiedades de cada material para cada objeto que necesita ser renderizado también es lenta. Para resolver esto, los objetos se clasifican por material para reducir los costes, pero al mismo tiempo la clasificación tiene un coste.
  • En la física 3D ocurre una situación similar. Los mejores algoritmos para manejar grandes cantidades de objetos físicos (tales como SAP) son lentos en la inserción/eliminación de objetos y el ray-casting. Los algoritmos que permiten una inserción y eliminación más rápida, así como el ray-casting no serán capaces de manejar tantos objetos activos.

And there are many more examples of this! Game engines strive to be general purpose in nature, so balanced algorithms are always favored over algorithms that might be fast in some situations and slow in others or algorithms that are fast but make usability more difficult.

Godot is not an exception and, while it is designed to have backends swappable for different algorithms, the default ones 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.