Sobre el proyecto

# Born React Native Godot React Native Godot permite incrustar el motor Godot dentro de aplicaciones React Native. Fue creado por [Born](https://born.com) y desarrollado por [Migeran](https://migeran.com) en colaboración. ## Características principales * Compatible con Android e iOS, construido sobre [LibGodot](https://github.com/migeran/libgodot). * Usado en producción por Born, sirviendo a millones de usuarios. * Iniciar, detener y reiniciar el motor Godot; cada reinicio puede cargar un proyecto Godot diferente. * Pausar y reanudar la instancia de Godot en ejecución. * Godot se ejecuta en un hilo separado, manteniendo la interfaz de usuario y el hilo de JavaScript de React Native responsivos. * Incrustar la ventana principal de Godot y sus subventanas en la misma o diferentes pantallas. * Acceder a la API completa de Godot desde TypeScript/JavaScript: instanciar objetos, llamar métodos, obtener/establecer propiedades, conectar señales y pasar callables de JS a Godot. ## Comenzando con la aplicación de ejemplo La [aplicación de ejemplo](example/) demuestra las características principales. Después de instalar los requisitos previos (por ejemplo, mediante ASDF para Node, Java, Gradle, Ruby) y exportar las muestras de Godot (`./export_godot_GodotTest.sh android|ios`, etc.), descargar las bibliotecas precompiladas y ejecutar en iOS o Android como de costumbre con `yarn ios` / `yarn android`. Un script conveniente `update_deps.sh` maneja la configuración. ## Tu primera aplicación React Native Godot 1. Instalar desde npm: `yarn add @borndotcom/react-native-godot` 2. Descargar paquetes LibGodot precompilados: `yarn download-prebuilt` (no distribuidos a través de npm; esto permite compilaciones personalizadas). 3. Importar y usar la vista: `import { RTNGodot, RTNGodotView, runOnGodotThread } from "@borndotcom/react-native-godot"`. 4. Agregar `<RTNGodotView style={...}/>` (por defecto usa la ventana principal de Godot). 5. Inicializar Godot en el hilo de Godot llamando a `RTNGodot.createInstance([...])` con argumentos de línea de comandos. Puntos clave: - Usar `--display-driver embedded` para incrustar en React Native. - En Android, pasar una ruta de carpeta (por ejemplo, `--path /main`) o PCK; en iOS, usar `--main-pack` con un archivo pack. Se recomienda la descarga en tiempo de ejecución de aplicaciones Godot para un tamaño más pequeño y actualizaciones más fáciles. 6. Detener con `RTNGodot.destroyInstance()` en el hilo de Godot; pausar/reanudar desde el hilo principal de JS mediante `RTNGodot.pause()` / `RTNGodot.resume()`. Exporta tu proyecto Godot como PCK o ZIP; el ejemplo incluye scripts auxiliares. ## Uso de la API de Godot Accede a la API mediante `RTNGodot.API()`: ```typescript let Godot = RTNGodot.API(); var engine = Godot.Engine; var vector = Godot.Vector2(); vector.x = 1.0; vector.y = 2.0; var sceneTree = engine.get_main_loop(); var root = sceneTree.get_root(); ``` Conecta señales con `.connect(function() { ... })` y pasa funciones de JS como Callables a métodos de Godot (por ejemplo, desde el GDScript de un Node personalizado). ## Hilos y JavaScript Godot se ejecuta en su propio hilo. Para interactuar desde JavaScript, la biblioteca usa [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) para ejecutar JS workletizado en el hilo de Godot mediante `runOnGodotThread()`. Este es el enfoque recomendado; las llamadas directas desde el hilo principal de RN son posibles pero limitadas (por ejemplo, el acceso al Scene Tree no es seguro para hilos) y las referencias de objetos no son intercambiables entre contextos. ## Temas avanzados * **Compilaciones personalizadas de LibGodot**: Clonar LibGodot (rama `libgodot_migeran_45`), compilar con los scripts proporcionados y sobrescribir las rutas de descarga mediante variables de entorno (por ejemplo, `LIBGODOT_XCFRAMEWORK_PATH`). * **Depuración de código nativo**: Para iOS, compilar un LibGodot de desarrollo y establecer puntos de interrupción en Xcode; para Android, agregar directorios de símbolos y opcionalmente enlazar simbólicamente el árbol fuente de Godot. * **Depuración remota en el editor de Godot**: Pasar `--remote-debug tcp://<host>:6007` y usar `adb reverse` en Android; establecer el Host Remoto del editor en iOS. ## Licencia Publicado bajo la licencia MIT. ## Soporte Soporte comercial y desarrollo ofrecidos por [Migeran](https://migeran.com). Born está contratando ingenieros de React Native (ver [born.com](https://born.com)).