Sobre o projeto

# Born React Native Godot React Native Godot permite incorporar o Godot Engine em aplicativos React Native. Foi criado pela [Born](https://born.com) e desenvolvido pela [Migeran](https://migeran.com) em colaboração. ## Principais Recursos * Suporta Android e iOS, construído sobre [LibGodot](https://github.com/migeran/libgodot). * Usado em produção pela Born, atendendo milhões de usuários. * Inicie, pare e reinicie o Godot Engine; cada reinício pode carregar um projeto Godot diferente. * Pause e retome a instância Godot em execução. * O Godot roda em uma thread separada, mantendo a UI e a thread JavaScript do React Native responsivas. * Incorpore a janela principal do Godot e suas subjanelas na mesma tela ou em telas diferentes. * Acesse a API completa do Godot a partir de TypeScript/JavaScript: instancie objetos, chame métodos, obtenha/defina propriedades, conecte-se a sinais e passe callables JS para o Godot. ## Começando com o Aplicativo de Exemplo O [aplicativo de exemplo](example/) demonstra os principais recursos. Após instalar os pré-requisitos (por exemplo, via ASDF para Node, Java, Gradle, Ruby) e exportar as amostras Godot (`./export_godot_GodotTest.sh android|ios`, etc.), baixe as bibliotecas pré-compiladas e execute no iOS ou Android normalmente com `yarn ios` / `yarn android`. Um script conveniente `update_deps.sh` cuida da configuração. ## Seu Primeiro Aplicativo React Native Godot 1. Instale a partir do npm: `yarn add @borndotcom/react-native-godot` 2. Baixe os pacotes LibGodot pré-compilados: `yarn download-prebuilt` (não distribuídos via npm; isso permite builds personalizados). 3. Importe e use a view: `import { RTNGodot, RTNGodotView, runOnGodotThread } from "@borndotcom/react-native-godot"`. 4. Adicione `<RTNGodotView style={...}/>` (padrão para a janela principal do Godot). 5. Inicialize o Godot na thread do Godot chamando `RTNGodot.createInstance([...])` com argumentos de linha de comando. Pontos-chave: - Use `--display-driver embedded` para incorporar no React Native. - No Android, passe um caminho de pasta (por exemplo, `--path /main`) ou PCK; no iOS, use `--main-pack` com um arquivo de pack. O download em tempo de execução de aplicativos Godot é recomendado para tamanho menor e atualizações mais fáceis. 6. Pare com `RTNGodot.destroyInstance()` na thread do Godot; pause/retome a partir da thread principal JS via `RTNGodot.pause()` / `RTNGodot.resume()`. Exporte seu projeto Godot como PCK ou ZIP; o exemplo inclui scripts auxiliares. ## Uso da API Godot Acesse a API via `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(); ``` Conecte-se a sinais com `.connect(function() { ... })` e passe funções JS como Callables para métodos Godot (por exemplo, a partir do GDScript de um Node personalizado). ## Threading e JavaScript O Godot roda em sua própria thread. Para interagir a partir do JavaScript, a biblioteca usa [react-native-worklets-core](https://github.com/margelo/react-native-worklets-core) para executar JS workletizado na thread do Godot via `runOnGodotThread()`. Esta é a abordagem recomendada; chamadas diretas da thread principal do RN são possíveis, mas limitadas (por exemplo, o acesso à Scene Tree não é thread-safe) e referências de objetos não são intercambiáveis entre contextos. ## Tópicos Avançados * **Builds LibGodot personalizados**: Clone o LibGodot (branch `libgodot_migeran_45`), compile com os scripts fornecidos e sobrescreva os caminhos de download via variáveis de ambiente (por exemplo, `LIBGODOT_XCFRAMEWORK_PATH`). * **Depuração de código nativo**: Para iOS, compile um LibGodot de desenvolvimento e defina breakpoints no Xcode; para Android, adicione diretórios de símbolos e, opcionalmente, crie symlinks para a árvore de fontes do Godot. * **Depuração remota no Godot Editor**: Passe `--remote-debug tcp://<host>:6007` e use `adb reverse` no Android; defina o Remote Host do editor no iOS. ## Licença Lançado sob a licença MIT. ## Suporte Suporte comercial e desenvolvimento são oferecidos pela [Migeran](https://migeran.com). A Born está contratando engenheiros React Native (veja [born.com](https://born.com)).