¿Qué es GDNative?

Introducción

GDNative es una tecnología específica de Godot que permite que el motor interactúe con bibliotecas compartidas nativas en tiempo de ejecución. Puedes utilizarla para ejecutar código nativo sin compilarlo junto al motor.

Nota

GDNative no es un lenguaje de scripting y no tiene relación con GDScript.

Diferencias entre los modulos de GDNative y C++

Puedes utilizar tanto GDNative como módulos de C++ para ejecutar código C o C++ en un proyecto de Godot.

Ambos también te permiten integrar bibliotecas de terceros en Godot. La elección entre ellos depende de tus necesidades específicas.

Ventajas de GDNative

A diferencia de los módulos, GDNative no requiere compilar el código fuente del motor, lo que facilita la distribución de tu trabajo. Te brinda acceso a la mayoría de la API disponible en GDScript y C#, lo que te permite codificar la lógica del juego con un control completo en cuanto al rendimiento. Es ideal si necesitas código de alto rendimiento que te gustaría distribuir como complemento en la biblioteca de activos.

Tambien:

  • GDNative no se limita solo a C y C++. Gracias a las librerías de terceros, puedes usarlo con muchos otros lenguajes.

  • Puedes utilizar la misma biblioteca GDNative compilada tanto en el editor como en el proyecto exportado. Con los módulos de C++, debes volver a compilar todas las plantillas de exportación que planeas utilizar si necesitas su funcionalidad en tiempo de ejecución.

  • GDNative solo requiere que compiles tu biblioteca, no el motor completo. A diferencia de los módulos de C++, que se compilan estáticamente en el motor. Cada vez que cambias un módulo, necesitas volver a compilar el motor. Incluso con compilaciones incrementales, este proceso es más lento que el uso de GDNative. GDNative ofrece una ventaja significativa en términos de velocidad y facilidad de desarrollo al permitirte actualizar y probar tus bibliotecas sin tener que recompilar todo el motor.

Ventajas de los módulos de C++

Recomendamos Módulos C++ en caso donde GDNative no sea suficiente:

  • Los módulos de C++ proporcionan una integración más profunda con el motor. El acceso de GDNative está limitado a lo que expone la API de scripting.

  • Puedes utilizar módulos de C++ para proporcionar características adicionales en un proyecto sin tener que llevar archivos de bibliotecas nativas. Esto se extiende también a los proyectos exportados.

  • Los módulos de C++ son compatibles en todas las plataformas. En contraste, GDNative tiene un soporte limitado en HTML5 (no se puede utilizar junto con el multi-threading) y no es compatible con Universal Windows Platform (UWP).

  • Los módulos de C++ pueden ser más rápidos que GDNative, especialmente cuando el código requiere mucha comunicación a través de la API de scripting.

Lenguajes soportados

Los desarrolladores de Godot oficialmente admiten los siguientes enlaces de lenguaje para GDNative:

Nota

No hay planes para admitir oficialmente otros lenguajes con GDNative. Dicho esto, la comunidad ofrece varios enlaces para otros lenguajes (ver más abajo).

Los enlaces a continuación son desarrollados y mantenidos por la comunidad:

Nota

No todos los enlaces mencionados aquí pueden estar listos para producción. Asegúrate de investigar exhaustivamente las opciones antes de comenzar un proyecto con alguno de ellos. Además, verifica si el enlace es compatible con la versión de Godot que estás utilizando.

Compatibilidad de versiones

A diferencia de Godot en sí mismo <doc_release_policy>, GDNative tiene requisitos de compatibilidad de versiones más estrictos, ya que depende de ptrcalls de bajo nivel para funcionar.

Los complementos de GDNative compilados para una versión específica de Godot solo están garantizados para funcionar con la misma serie de lanzamientos menores. Por ejemplo, un complemento de GDNative compilado para Godot 3.4 solo funcionará con Godot 3.4, 3.4.1, 3.4.2... pero no con Godot 3.3 o 3.5.