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