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.