Sobre el proyecto

Godot-Python es un proyecto que busca llevar el soporte del lenguaje Python al motor de juegos Godot como un módulo de scripting. Permite a los desarrolladores escribir guiones de juego en Python en lugar de GDScript, aprovechando el ecosistema y la sintaxis de Python. **Características principales:** - **Scripting en Python en Godot:** Usar clases Python que heredan de nodos de Godot (por ejemplo, `Node2D`, `KinematicBody`) y exponerlas al motor mediante el decorador `@exposed`. - **Exports:** Definir atributos y propiedades exportados usando `export(<tipo>)` para integrarlos con el inspector de Godot. - **Acceso completo a la API:** Acceder a la API de Godot a través de bindings generados (por ejemplo, `Vector2`, `ResourceLoader`). - **Clases auxiliares:** Las clases Python no expuestas pueden usarse internamente para lógica. - **Sistema de compilación:** Basado en Scons, Cython y Jinja2, con soporte para Linux, Windows y macOS. - **Pruebas y ejemplos:** Incluye pruebas basadas en pytest y un proyecto de ejemplo de Pong. **Estado actual:** El proyecto está en plena refactorización para soportar Godot 4, que es incompatible con la base de código actual. El desarrollo se realiza en la rama `godot4-meson`. La rama master apunta a Godot 3.x. **Instalación:** Los usuarios pueden instalarlo mediante la biblioteca de activos de Godot, descargarlo desde el sitio web de la biblioteca de activos o obtener compilaciones específicas de plataforma desde la página de versiones. **Ejemplo de uso:** ```python from godot import exposed, export, Vector2, Node2D, ResourceLoader @exposed class Player(Node2D): name = export(str) @export(int) @property def age(self): return self._age @age.setter def age(self, value): self._age = value def talk(self, msg): print(f"I'm saying {msg}") def _ready(self): self._age = 42 print(self.get_name()) def _process(self, delta): self.position += Vector2(10, 10) * delta ``` **Compilación desde el código fuente:** Requiere Python >= 3.7 y un compilador C. Los pasos incluyen inicializar los submódulos para las cabeceras de GDNative, crear un entorno virtual, instalar las dependencias y ejecutar Scons con comandos específicos de plataforma (por ejemplo, `scons platform=x11-64 release`). **Preguntas frecuentes destacadas:** - **Exportación de proyectos:** Se necesita una exportación manual; copie el entorno de Python y el binario de Godot a la carpeta de release. - **Uso de paquetes de Python:** Instale pip mediante `ensurepip` y luego use `pip install` para añadir paquetes al intérprete integrado. - **Depuración con PyCharm:** Cambie el nombre del binario de Godot para que incluya 'python' y use "Attach to Local Process". - **Carga automática de guiones:** Configúrelo en `project.godot` bajo `[autoload]` y `[gdnative]`. - **PoolArrays:** Use el administrador de contexto `arr.raw_access()` para un acceso eficiente, pero tenga cuidado con la seguridad de la memoria. **Nota:** El proyecto no se mantiene activamente para Godot 3, y los usuarios deben consultar la rama `godot4-meson` para futuras actualizaciones.