- A equipe de desenvolvimento de Architect of Ruin começou inicialmente com o motor Bevy e Rust, mas mudou para Unity e C# por questões práticas
- Apesar das vantagens de Rust e Bevy, surgiram problemas como colaboração, necessidade de abstrações de alto nível, mudanças frequentes de API, queda na eficiência do aprendizado com IA e limitações para modding
- Eles migraram, como teste, 3 funcionalidades principais para Unity e validaram com sucesso em apenas 3 dias, concluindo todo o port em 6 semanas
- Após a mudança, houve redução na quantidade de código, melhora na velocidade de desenvolvimento e a possibilidade de aproveitar ferramentas do ecossistema, aumentando muito a satisfação com o desenvolvimento
- O apreço por Rust e Bevy continua grande, mas o texto enfatiza que foi uma escolha realista para atender às necessidades do projeto
Desenvolvimento inicial com Bevy e Rust
- Aproveitando o modelo ECS do Bevy e as verificações em tempo de compilação características do Rust, a equipe experimentou refatorações rápidas e mais estabilidade
- Implementaram diretamente no Bevy recursos como tilemap, animação esquelética e pipeline de renderização customizado
- Encontraram muita inspiração na paixão da comunidade Bevy e em sua cultura de discussões ativas
Emergent Problems: problemas mais sérios do que o esperado
- Problemas de colaboração: para integrantes da equipe que eram iniciantes em Rust, a complexidade da linguagem virou uma barreira de aprendizado, reduzindo a velocidade de contribuição
- Falta de abstrações de alto nível
- Houve dificuldade para transformar rapidamente ideias de gameplay em código
- Faltou a flexibilidade necessária para prototipagem rápida
- Mudanças frequentes de API: o ritmo acelerado de evolução do Bevy trouxe instabilidade de API e bugs de regressão a cada atualização, o que se tornou desgastante
- Falta de suporte para aprendizado com IA: embora C# e Unity estivessem bem cobertos por aprendizado assistido por IA, Rust e Bevy tinham pouca informação, o que reduzia a produtividade
- Limitações para modding: concluíram que, no ambiente Rust/Bevy, seria difícil garantir scripting estável e compatibilidade de ABI
A decisão de mudar: experimento com Unity
- Fizeram uma análise comparativa entre Unreal, Unity, Godot, manter Bevy e desenvolver um motor próprio
- Unity recebeu a melhor avaliação em facilidade de aprendizado, produtividade, colaboração e possibilidade de modding
Experimento de 10%
- Testaram, em até 3 semanas, 3 tarefas centrais: tilemap, personagem (Spine) e construção de UI
- No fim, concluíram as 3 tarefas em 3 dias e decidiram pela mudança
Processo de port e resultados
- Todos os sistemas e conteúdos foram reimplementados em Unity ao longo de 6 semanas
- Houve redução no volume de código, eliminação de boilerplate e aumento na velocidade de desenvolvimento
- Também melhorou o suporte ao aprendizado com IA, além de permitir o uso ativo de ferramentas do ecossistema Unity, como AStar Pathfinding
A vida depois disso
- Architect of Ruin está atualmente em desenvolvimento sobre Unity, mantendo rápida incorporação de ideias e alta produtividade
- O profundo respeito por Rust e Bevy permanece, mas o texto reforça que era necessário fazer uma escolha adequada ao projeto
- No futuro, pretendem compartilhar mais detalhes da implementação baseada em Unity e da experiência de port
Conclusão
- Reconhecem que falharam em avaliar as opções de forma justa no início
- Avaliam que investiram tempo para mudar de direção, mas no fim ganharam ainda mais tempo
- Perceberam que, para concretizar a visão de desenvolvimento, era importante fazer um julgamento realista além do instinto
3 comentários
Acho que deve haver algum engine de GUI que use Rust como linguagem de script, mas não sei se existe algo usado em nível de produção. De vez em quando aparecem casos de fracasso? sobre fazer jogos com Rust, e... bom, até entendo que apareçam relatos de fracasso, mas o problema é que quase não se ouve falar de casos de sucesso. Imagino que deva haver gente usando bem em algum lugar.
Ou, se for bem usado, talvez não postem porque pensam que todo mundo já está escrevendo nesse nível, não é?
Opiniões do Hacker News
Outro caso de um projeto de jogo em Rust que fracassou. É uma pena
Parece uma boa lição sobre por que engines de jogo comerciais dominaram o desenvolvimento de jogos
Gosto de Rust como substituto para C++, mas acho que C++ não é adequado para a maioria dos projetos
Desenvolver jogos em Rust é como desbravar uma fronteira, e há muito trabalho a fazer
Gosto de Rust, mas é difícil iterar rapidamente
Em um projeto, troquei Rust por Go, e a velocidade de iteração ficou maior
A alta volatilidade do ecossistema Rust é uma desvantagem inesperada
Um desenvolvedor faz a engine de jogo em C e desenvolve o jogo em Lua
Trabalhar em Rust quase sempre é mais difícil
O objetivo do projeto era permitir que o irmão, que não programa, pudesse contribuir