5 pontos por GN⁺ 2025-04-29 | 3 comentários | Compartilhar no WhatsApp
  • 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

 
aer0700 2025-04-30

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.

 
qwqwhs 2025-04-30

Ou, se for bem usado, talvez não postem porque pensam que todo mundo já está escrevendo nesse nível, não é?

 
GN⁺ 2025-04-29
Opiniões do Hacker News
  • Outro caso de um projeto de jogo em Rust que fracassou. É uma pena

    • Estou desenvolvendo um cliente de metaverso em Rust há quase 5 anos, e está demorando demais
    • Outra pessoa fez um projeto parecido em C#/Unity em menos de 2 anos
    • A base de usuários de desenvolvimento de jogos 3D em Rust é muito pequena
    • Não há casos de títulos AAA desenvolvidos em Rust, nem de alguém que tenha resolvido os problemas de desempenho
    • A stack em uso é Rend3/Egui/Winit/Wgpu/Vulkan, e exceto pelo Vulkan, tudo tem muitos bugs
    • Há crates demais tentando controlar o loop de eventos
    • Os crates são refatorados a cada poucos meses, e a API costuma quebrar
    • Desreferenciar em Rust é difícil
    • Rust precisa de uma forma consistente para proprietário único e desreferenciamento
    • Os traits de Rust não são objetos e não servem bem para montar hierarquias de objetos
  • Parece uma boa lição sobre por que engines de jogo comerciais dominaram o desenvolvimento de jogos

    • Há muito trabalho necessário para fazer um jogo, mas a maior parte são problemas já resolvidos
  • Gosto de Rust como substituto para C++, mas acho que C++ não é adequado para a maioria dos projetos

    • Parece que muita gente escolhe Rust por achar que ele é mais eficiente
  • Desenvolver jogos em Rust é como desbravar uma fronteira, e há muito trabalho a fazer

    • Rust ainda não está pronto
  • Gosto de Rust, mas é difícil iterar rapidamente

    • Já usei Bevy, mas voltei para Godot
  • Em um projeto, troquei Rust por Go, e a velocidade de iteração ficou maior

    • O código fica mais frágil, mas acho que foi a escolha certa para a natureza do projeto
  • A alta volatilidade do ecossistema Rust é uma desvantagem inesperada

    • Os crates são abandonados com frequência, e acho que isso acontece porque as pessoas querem usar Rust como linguagem principal
  • Um desenvolvedor faz a engine de jogo em C e desenvolve o jogo em Lua

    • Há uma separação clara entre a engine e o jogo
    • O jogo chamado 'Sapiens' foi lançado com sucesso na Steam
  • Trabalhar em Rust quase sempre é mais difícil

    • Esta é uma opinião baseada em experiência pessoal
  • O objetivo do projeto era permitir que o irmão, que não programa, pudesse contribuir

    • Havia a sensação de que era preciso continuar atualizando para a versão mais recente
    • Estúdios que usam Unity não atualizam de versão com frequência, a menos que um bug específico tenha sido corrigido