Sobre el proyecto
godot-rust es una biblioteca que integra el lenguaje Rust con Godot 4, un motor de juegos de código abierto centrado en una experiencia productiva e integral para 2D y 3D. Utiliza la API GDExtension de Godot, que permite integrar lenguajes y bibliotecas de terceros en el motor.
Filosofía
El enlace se posiciona como una alternativa a GDScript, enfatizando la seguridad de tipos, la escalabilidad y el rendimiento. Los dos lenguajes pueden mezclarse en un proyecto, y las APIs personalizadas de Rust pueden llamarse de manera segura en tipos desde GDScript. El objetivo principal declarado es proporcionar una API de Rust pragmática para desarrolladores de juegos: los flujos de trabajo recurrentes deben ser simples y requerir un mínimo de código repetitivo, y las APIs están diseñadas para ser seguras e idiomáticas en Rust siempre que sea posible. Debido a que interactúa con Godot como un motor C++, el proyecto a veces sigue enfoques no convencionales para mejorar la experiencia del usuario.
Características mostradas en el ejemplo del README
El ejemplo motivador registra una clase de Godot llamada Player que hereda de Sprite2D. Demuestra:
- Declaración de clase mediante la macro derivada GodotClass con inicialización automática y una clase base.
- Herencia mediante composición, dando acceso a los métodos de la clase base.
- Inicialización de campos basada en atributos, incluyendo un valor de puntos de vida predeterminado.
- Acceso a nodos hijos OnReady, autoinicializados cuando se llama a _ready().
- Implementación de métodos virtuales de Godot a través de traits predefinidos (por ejemplo, sobrescribir _ready).
- Conexiones de señales seguras en tipos, como conectar a la señal value_changed de una barra de salud.
- Métodos personalizados expuestos a GDScript mediante el atributo #[func].
- Llamar a métodos de Node en self mediante acceso mutable a la base.
Estado de desarrollo
El README indica que la biblioteca ha evolucionado considerablemente desde 2023 y ahora es utilizable para proyectos como juegos, complementos de editor, herramientas y otras aplicaciones basadas en Godot. Señala que ocasionalmente se introducen cambios disruptivos, generalmente menores y acompañados de guías de migración; los lanzamientos en crates.io siguen SemVer pero van por detrás de la rama master. La gran mayoría de las APIs de Godot se han mapeado a Rust. El enfoque de desarrollo actual está en una experiencia de Rust más natural y patrones de diseño útiles para el desarrollo diario de juegos. Una suite de CI elaborada incluye clippy, pruebas unitarias, pruebas de integración del motor y sanitizadores de memoria, e incluso se prueba la recarga en caliente. Existe soporte experimental para Wasm, Android e iOS, aunque la documentación y las herramientas aún son deficientes.
Cómo empezar y recursos
El README señala el libro godot-rust como el mejor lugar para comenzar, para usarse junto con la documentación de la API. Ejemplos prácticos y juegos pequeños están disponibles en el repositorio demo-projects. Se ofrece ayuda a través de un servidor de Discord con un canal #help.
Licencia y contribuciones
El proyecto utiliza la Licencia Pública de Mozilla 2.0, descrita como un equilibrio entre licencias permisivas y copyleft. Los usuarios pueden usar la biblioteca comercialmente y mantener su propio código cerrado; la condición principal es que las modificaciones a godot-rust en sí deben estar disponibles. Se agradecen las contribuciones, con indicaciones en Contributing.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.