El desarrollo de videojuegos es un camino lleno de desafíos técnicos, decisiones complejas y, en ocasiones, sacrificios emocionales. Cada herramienta y lenguaje elegido influye profundamente en el ritmo, la calidad y el éxito del proyecto. En el caso del estudio detrás de 'Architect of Ruin', la decisión de migrar de Rust y el motor Bevy a Unity y C# es un ejemplo revelador de cómo la experiencia práctica, la colaboración y la necesidad de adaptabilidad pueden hacer reconsiderar incluso a los más entusiastas defensores de una tecnología. Cuando se inició este proyecto en diciembre de 2023, Rust llamó la atención de su creador debido a su robustez, seguridad y el gozo personal que le provocaba trabajar con este lenguaje. Además, el motor Bevy, basado en un modelo ECS (Entity Component System) puro, prometía un enfoque modular y eficiente, apoyado por una comunidad vibrante y abierta.
Sin embargo, a medida que transcurrió el desarrollo, emergieron obstáculos que comenzaron a minar el ritmo y la salud del proyecto. Uno de los principales retos fue la colaboración. El creador empezó la aventura junto a su hermano, un programador novato. Rust, conocido por su curva de aprendizaje pronunciada y conceptos únicos, dificultaba que el hermano pudiera contribuir de forma efectiva al desarrollo del gameplay. El lenguaje, a pesar de sus ventajas técnicas, presentó un impedimento para que el equipo pudiera trabajar al unísono de manera fluida y eficiente.
La abstracción y la flexibilidad para iterar rápidamente sobre mecánicas de juego fueron aspectos que también acompañaron a esta decisión. Rust está orientado a un nivel bajo, privilegiando el control y la eficiencia, pero a costa de la rapidez y simplicidad en la creación de prototipos de alta abstracción. Esto causó que el proceso de traducir ideas jugables en código se volviera tedioso y, en última instancia, limitara la motivación para seguir trabajando en el núcleo divertido del juego. La naturaleza joven y dinámica de Bevy resultó ser otra fuente de dificultad. El motor incorporaba actualizaciones frecuentes y significativas que, si bien traían novedades interesantes, generaban mucha fricción en el mantenimiento y estabilidad del proyecto.
Bugs inesperados, regresiones en sistemas clave como el renderizado de sprites y cambios constantes en la API provocaban pérdida de tiempo y energía que se traducían en frustración. Otro aspecto que pesa en la industria del desarrollo es la eficiencia del aprendizaje y el soporte que brindan las herramientas modernas, especialmente cuando se aprovechan tecnologías de inteligencia artificial para acelerar el trabajo. En el caso de Rust y Bevy, su ritmo de evolución y falta de una base sólida y madura en ecosistemas de aprendizaje asistido por IA dificultaban el acceso a ayudas contextuales detalladas y rápidas. Por el contrario, lenguajes como C# y motores como Unity cuentan con un historial más amplio, más documentación y una comunidad consolidada que potencian significativamente esta área. Además, la intención de facilitar la modificación o modding del juego representaba un requisito fundamental para el proyecto.
El ecosistema de Rust y Bevy no ofrecía una solución estable y clara para manejar scripting ni una interfaz binaria de aplicación (ABI) segura y consistente, elementos clave para que jugadores y desarrolladores externos puedan crear contenido modificado o expandido con facilidad y confianza. Estas consideraciones llevaron al equipo a revaluar sus opciones a principios de 2025. Iniciaron un análisis exhaustivo enfrentando herramientas como Unreal, Unity, Godot, además de continuar con Bevy o incluso desarrollar propias soluciones. Pese a ciertos prejuicios y malas experiencias previas con Unity, especialmente relacionados con cambios polémicos en su política de precios y una percepción de desconexión con desarrolladores indie, optaron por darle una segunda oportunidad mediante un experimento controlado. El experimento consistió en seleccionar tres funciones críticas del juego para reimplementar en Unity en un plazo de máximo tres semanas: el sistema de tilemap, el sistema de personajes con soporte para Spine, y la interfaz de usuario utilizando Noesis, un framework basado en XAML con una arquitectura similar a Windows Presentation Foundation (WPF).
El objetivo era comprobar la facilidad, productividad y resultados concretos que se podrían obtener y compararlos contra su experiencia en Rust y Bevy. Para sorpresa del equipo, todos estos sistemas fueron trabajados satisfactoriamente en tan solo tres días. La implementación inicial del tilemap y los shaders relacionados fue rápida y eficaz, y esta misma velocidad se replicó en la construcción de la UI y el manejo de los personajes. Lo más importante fue el aumento palpable en la capacidad de colaboración y aportación del hermano, quien aunque era nuevo en C#, pudo contribuir rápidamente y con confianza. La reducción de la verbosidad del código y la eliminación de la compleja infraestructura que implicaba ECS traía consigo un mantenimiento mucho menos pesado y una mejor claridad de la lógica.
Esto se tradujo además en una disminución del estrés provocado por problemas técnicos y una mayor sensación de avance constante. Tras este éxito inicial, el equipo decidió proceder a una migración total, dedicando seis semanas a portar el resto del juego a Unity. Los resultados reafirmaron sus expectativas y mostraron una mejora considerable en la velocidad de iteración sobre características jugables, experiencia más amigable para nuevos colaboradores y una integración más sencilla con herramientas y librerías externas. Desde entonces, el proyecto se ha beneficiado de una comunidad sólida y un ecosistema de herramientas probado que ayuda a acelerar desarrollos complejos como caminos con algoritmos de pathfinding, un área fundamental para muchos videojuegos. No obstante, no todo fue un camino sin complicaciones.
La localización, por ejemplo, representa uno de los desafíos pendientes. Rust cuenta con soluciones maduras como Fluent, que se adaptan muy bien a las necesidades multilingües, pero en Unity aún buscan alternativas que puedan igualar esa calidad y flexibilidad. Esta experiencia revela una lección valiosa para desarrolladores e indies: la elección de herramientas no debe estar motivada únicamente por preferencias personales o la fascinación por la tecnología de moda. Es fundamental analizar el proyecto desde múltiples perspectivas, evaluar las necesidades del equipo, las capacidades de colaboración, la simplicidad para iterar rápido, el soporte comunitario y la estabilidad del entorno. La pasión por Rust y Bevy sigue siendo fuerte en este equipo, quienes expresan respeto y admiración hacia ambas herramientas y su ecosistema.
Reconocen que en otros proyectos estas tecnologías pueden ser las más apropiadas. Sin embargo, para 'Architect of Ruin', primaron las demandas inmediatas de accesibilidad, productividad y consolidación técnica. En definitiva, migrar de Rust a Unity fue una decisión ardua, pero necesaria para poner en marcha el juego en un entorno que permitiese a todos los miembros colaborar eficazmente, iterar sobre ideas de gameplay con rapidez y aprovechar la madurez de un ecosistema robusto y probado. A veces, abandonar la comodidad de un lenguaje querido por una solución más pragmática permite acelerar el camino hacia la visión final, demostrando que la flexibilidad y la adaptabilidad son claves fundamentales en el éxito del desarrollo de videojuegos.