Cuándo y cómo evitar el uso de nodos para todo

Los nodos son económicos de producir, pero incluso estos tienen sus límites. Un proyecto puede tener decenas de miles de nodos haciendo cosas. Sin embargo, cuanto más complejo es su comportamiento, mayor es la tensión que cada uno añade al rendimiento de un proyecto.

Godot proporciona objetos más ligeros para crear APIs que los nodos utilizan. Recuerda tenerlos en cuenta como opciones a la hora de diseñar cómo deseas construir las características de tu proyecto.

  1. Object: El objeto más liviano existente, Object debe administrar la memoria manualmente. Dicho esto, no es difícil crear una estructura de datos propia, o estructura tipo nodos, que también serán más livianas que la clase Node.

    • Example: Ver el nodo Tree. Este soporta un gran nivel de personalización para una tabla de contenidos con un número arbitrario de filas y columnas. Los datos que este usa para generar la visualización es un árbol de objetos TreeItem.
    • Ventajas: Simplificando la API propia para objetos de poco alcance, ayuda a mejorar la accesibilidad y el tiempo de iteración. En lugar de trabajar con la librería de Node completa, se crea un conjunto reducido de Objects desde donde un nodo puede generar y administrar los sub-nodos apropiados.

    Nota

    Hay que tener cuidado al manipularlos. Se puede almacenar un objeto en una variable, pero estas referencias pueden perder su valor sin previo aviso. Por ejemplo, si el creador del objeto decide eliminarlo de improviso, esto provocaría un estado de error al acceder a él.

  2. Reference: Sólo un poco más complicado que Object. Registran las referencias a sí mismos, borrándose de la memoria cuando no existen más referencias. Son útiles para la mayoría de los casos en que se necesitan datos en una clase personalizada.

    • Ejemplo: Ver el objeto File. Este funciona como un Objeto regular, excepto que uno no necesita borrarlo.
    • Ventajas: las mismas que Object.
  3. Resource: Algo más complejo que Reference. Tiene la habilidad innata de serializar/deserializar (grabar y cargar) sus propiedades desde/hacia un archivo de recursos de Godot.

    • Ejemplo: Scripts, PackedScene (para archivos de escena) y otros tipos como las clases AudioEffect. Cada uno de esos puede ser guardado y cargado, por eso extienden de Resource.
    • Advantages: Mucho ya se ha mencionado anteriormente sobre las ventajas de Resource sobre métodos tradicionales de almacenamiento de datos. En el contexto del uso de Resources sobre Nodos, manitenen la ventaja de su compatibilidad con el Inspector. Mientras son casi tan livianos como Object/Reference, pueden mostrar y exportar propiedades en el Inspector. Esto les permite cumplir el propósito de usabilidad de sub-nodos así como mejorar el desempeño si se planea tener muchos Resource/Node en las escenas.