5 puntos por GN⁺ 2025-04-29 | 3 comentarios | Compartir por WhatsApp
  • 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

 
aer0700 2025-04-30

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.

 
qwqwhs 2025-04-30

¿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?

 
GN⁺ 2025-04-29
Comentarios de Hacker News
  • Otro caso más de un proyecto de juego en Rust que fracasa. Es una pena

    • Lleva casi 5 años desarrollando un cliente de metaverso en Rust, y está tomando demasiado tiempo
    • Otra persona hizo un proyecto similar en C#/Unity en menos de 2 años
    • La base de usuarios para desarrollo de juegos 3D en Rust es muy pequeña
    • No hay casos de títulos AAA desarrollados en Rust, y nadie ha resuelto los problemas de rendimiento
    • La pila que usa es Rend3/Egui/Winit/Wgpu/Vulkan, y salvo Vulkan, todo tiene muchos bugs
    • Hay demasiados crates distintos que quieren adueñarse del event loop
    • Los crates suelen refactorizarse cada pocos meses y muchas veces rompen la API
    • En Rust es difícil desreferenciar
    • Rust necesita una forma consistente para propietario único y desreferenciación
    • Los traits de Rust no son objetos y no sirven bien para construir jerarquías de objetos
  • Suena como una buena lección de por qué los motores de juego comerciales dominan el desarrollo de videojuegos

    • Hay muchísimas cosas que hacer para crear un juego, pero la mayoría son problemas ya resueltos
  • Me gusta Rust como reemplazo de C++, pero creo que C++ no es adecuado para la mayoría de los proyectos

    • Parece que mucha gente elige Rust porque piensa que será más eficiente
  • El desarrollo de juegos en Rust es como desarrollar en territorio inexplorado, y requiere muchísimo trabajo

    • Rust todavía no está listo
  • Me gusta Rust, pero es difícil iterar rápido

    • Probé Bevy, pero volví a Godot
  • En un proyecto cambiaron Rust por Go, y la velocidad de iteración mejoró

    • El código es más frágil, pero cree que fue la decisión correcta para la naturaleza del proyecto
  • La alta volatilidad del ecosistema de Rust es una desventaja inesperada

    • Los crates se abandonan con frecuencia, y cree que esto pasa porque quienes los mantienen en realidad quieren usar Rust de forma principal
  • Un desarrollador hizo un motor de juego en C y desarrolla el juego en Lua

    • Hay una separación clara entre el motor y el juego
    • Un juego llamado 'Sapiens' se lanzó con éxito en Steam
  • Trabajar con Rust casi siempre es más difícil

    • Es una opinión basada en experiencia personal
  • El objetivo del proyecto era permitir que un hermano que no programa pudiera contribuir

    • Sentía que había que seguir actualizando constantemente a la versión más reciente
    • Los estudios que usan Unity no actualizan de versión con frecuencia a menos que se corrija un bug específico