Sobre o projeto
godot-rust é uma biblioteca que integra a linguagem Rust com o Godot 4, um motor de jogos open-source focado em uma experiência produtiva e completa para 2D e 3D. Ele usa a API GDExtension do Godot, que permite integrar linguagens e bibliotecas de terceiros ao motor.
Filosofia
O binding é posicionado como uma alternativa ao GDScript, enfatizando type safety, escalabilidade e desempenho. As duas linguagens podem ser misturadas em um projeto, e APIs Rust personalizadas podem ser chamadas de forma type-safe a partir do GDScript. O objetivo principal declarado é fornecer uma API Rust pragmática para desenvolvedores de jogos: fluxos de trabalho recorrentes devem ser simples e exigir mínimo boilerplate, e as APIs são projetadas para serem seguras e idiomáticas em Rust sempre que possível. Como interage com o Godot como um motor C++, o projeto às vezes segue abordagens não convencionais para melhorar a experiência do usuário.
Recursos mostrados no exemplo do README
O exemplo motivador registra uma classe Godot Player que herda de Sprite2D. Ele demonstra:
- Declaração de classe via macro derive GodotClass com inicialização automática e uma classe base.
- Herança via composição, dando acesso a métodos da classe base.
- Inicialização de campos baseada em atributos, incluindo um valor padrão de hitpoints.
- Acesso a nós filhos OnReady, auto-inicializado quando _ready() é chamado.
- Implementação de métodos virtuais do Godot através de traits predefinidos (ex.: sobrescrever _ready).
- Conexões de sinais type-safe, como conectar ao sinal value_changed de uma barra de saúde.
- Métodos personalizados expostos ao GDScript via atributo #[func].
- Chamada de métodos Node em self através de acesso base mutável.
Status de desenvolvimento
O README afirma que a biblioteca evoluiu consideravelmente desde 2023 e agora é utilizável para projetos como jogos, plugins de editor, ferramentas e outras aplicações baseadas em Godot. Nota-se que mudanças que quebram compatibilidade são ocasionalmente introduzidas, geralmente menores e acompanhadas de guias de migração; lançamentos no crates.io seguem SemVer, mas ficam atrás do branch master. A grande maioria das APIs do Godot foi mapeada para Rust. O foco atual do desenvolvimento é uma experiência Rust mais natural e padrões de design úteis para o desenvolvimento diário de jogos. Uma suíte CI elaborada inclui clippy, testes unitários, testes de integração com o motor e sanitizadores de memória, e até hot-reload é testado. Existe suporte experimental para Wasm, Android e iOS, embora documentação e ferramentas ainda sejam deficientes.
Começando e recursos
O README aponta o livro godot-rust como o melhor lugar para começar, a ser usado junto com a documentação da API. Exemplos práticos e pequenos jogos estão disponíveis no repositório demo-projects. Ajuda é oferecida via servidor Discord com canal #help.
Licença e contribuição
O projeto usa a Mozilla Public License 2.0, descrita como equilibrando licenças permissivas e copyleft. Usuários podem usar a biblioteca comercialmente e manter seu próprio código fechado; a principal condição é que modificações no próprio godot-rust devem ser disponibilizadas. Contribuições são bem-vindas, com orientações em Contributing.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.