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)).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.