- El equipo de desarrollo de Architect of Ruin comenzó al principio con el motor Bevy y Rust, pero cambió a Unity y C# debido a problemas prácticos
- A pesar de las ventajas de Rust y Bevy, surgieron problemas como la colaboración, la necesidad de abstracciones de alto nivel, los cambios frecuentes en la API, la menor eficiencia para aprender con ayuda de IA y las limitaciones para el modding
- Probaron portar 3 funciones clave a Unity y lograron validarlo con éxito en solo 3 días, completando el port completo en 6 semanas
- Después del cambio, se redujo la cantidad de código, mejoró la velocidad de desarrollo y además pudieron aprovechar herramientas del ecosistema, lo que elevó mucho la satisfacción del equipo
- Aunque siguen apreciando profundamente a Rust y Bevy, destacan que fue una decisión realista para cumplir con los requisitos del proyecto
Desarrollo inicial con Bevy y Rust
- Disfrutaban del modelo ECS de Bevy y de las verificaciones en tiempo de compilación propias de Rust, experimentando refactorizaciones rápidas y estabilidad
- Implementaron directamente en Bevy elementos como tilemaps, animación esquelética y un pipeline de renderizado personalizado
- Recibieron mucha inspiración de la pasión de la comunidad de Bevy y de su cultura de debate activo
Emergent Problems: problemas más serios de lo esperado
- Problemas de colaboración: para integrantes del equipo que eran principiantes en Rust, la complejidad del lenguaje actuó como una barrera de aprendizaje, reduciendo la velocidad de contribución
- Falta de abstracciones de alto nivel
- Surgieron dificultades para llevar rápidamente las ideas de gameplay al código
- Faltaba la flexibilidad necesaria para el prototipado rápido
- Cambios frecuentes en la API: el rápido ritmo de evolución de Bevy los agotó por la inestabilidad de la API y los bugs de regresión que aparecían con cada actualización
- Falta de soporte para aprendizaje con IA: aunque C# y Unity estaban bien cubiertos para el aprendizaje asistido por IA, Rust y Bevy tenían menos información disponible, lo que redujo la productividad
- Limitaciones para el modding: concluyeron que en el entorno de Rust/Bevy era difícil asegurar scripting estable y compatibilidad ABI
La decisión de cambiar: experimento con Unity
- Compararon y analizaron Unreal, Unity, Godot, mantener Bevy y desarrollar un motor propio
- Unity obtuvo la puntuación más alta en aprendizaje, productividad, facilidad de colaboración y posibilidades de modding
Experimento del 10%
- Probaron 3 tareas clave en menos de 3 semanas: tilemap, personaje (Spine) y construcción de UI
- Como resultado, completaron las 3 tareas en 3 días y decidieron hacer el cambio
Proceso y resultados del port
- Reimplementaron todos los sistemas y contenidos en Unity durante 6 semanas
- Experimentaron menos código, eliminación de boilerplate y mayor velocidad de desarrollo
- Mejoró el soporte para aprendizaje con IA y pudieron aprovechar activamente herramientas del ecosistema de Unity, como AStar Pathfinding
La vida después
- Architect of Ruin se está desarrollando actualmente sobre Unity, manteniendo una rápida incorporación de ideas y alta productividad
- Su profundo respeto por Rust y Bevy sigue intacto, pero recalcan que era necesaria una elección adecuada para el proyecto
- Planean compartir más adelante detalles de la implementación sobre Unity y la experiencia del port
Conclusión
- Reconocen que al inicio no evaluaron las opciones de manera justa
- Invirtieron tiempo en cambiar de rumbo, pero concluyen que al final ganaron más tiempo
- Comprendieron que, para hacer realidad la visión de desarrollo, era importante un juicio realista que fuera más allá del instinto
3 comentarios
Creo que probablemente debe haber algún motor GUI que use Rust como lenguaje de scripting, pero no sé si exista alguno que se use a nivel de producción. De vez en cuando aparecen casos de fracaso? sobre hacer juegos con Rust y, bueno... que aparezcan casos de fracaso es entendible, pero sí se siente raro que casi no se escuchen historias de éxito. Seguro que debe haber gente usándolo bien en alguna parte.
¿No será que, al contrario, si lo usan bien, piensan que todos ya lo están usando a este nivel y por eso no lo publican?
Comentarios de Hacker News
Otro caso más de un proyecto de juego en Rust que fracasa. Es una pena
Suena como una buena lección de por qué los motores de juego comerciales dominan el desarrollo de videojuegos
Me gusta Rust como reemplazo de C++, pero creo que C++ no es adecuado para la mayoría de los proyectos
El desarrollo de juegos en Rust es como desarrollar en territorio inexplorado, y requiere muchísimo trabajo
Me gusta Rust, pero es difícil iterar rápido
En un proyecto cambiaron Rust por Go, y la velocidad de iteración mejoró
La alta volatilidad del ecosistema de Rust es una desventaja inesperada
Un desarrollador hizo un motor de juego en C y desarrolla el juego en Lua
Trabajar con Rust casi siempre es más difícil
El objetivo del proyecto era permitir que un hermano que no programa pudiera contribuir