El lenguaje de programación Rust no ha hecho más que ganar popularidad en los últimos años, gracias a su enfoque en la seguridad y el rendimiento. Eso hace que muchos lo consideren, también, una de las opciones más prometedoras en el mundo del desarrollo de videojuegos frente a lenguajes más establecidos como C++, Unity (C#) y Godot.
Sin embargo, no todo es tan idílico como parece: después de tres años dedicados a desarrollar videojuegos en Rust, el estudio indie LogLog Games decidió abandonar su apuesta por este lenguaje como herramienta principal de desarrollo, pese a las miles de horas que habían invertido en su uso.
Un comienzo prometedor, pero con desafíos persistentes
Cuando LogLog Games comenzó a utilizar Rust, lo hicieron con altas expectativas. Rust prometía un rendimiento excelente y herramientas que garantizaban la ausencia de errores comunes relacionados con la memoria, algo crucial en un entorno tan exigente como el desarrollo de videojuegos.
Durante este periodo, el equipo lanzó varios juegos en plataformas como Steam, utilizando frameworks como Bevy y Macroquad, además de crear su propio motor 2D desde cero. Sin embargo, a medida que avanzaban en su experiencia, los problemas comenzaron a acumularse.
Uno de los principales retos fue la curva de aprendizaje del lenguaje: Rust es notoriamente complicado para principiantes y, aunque los desarrolladores de LogLog Games no eran precisamente inexpertos (escribieron más de 100.000 líneas de código en esos tres años), muchos de los problemas iniciales no desaparecieron con el tiempo.
El coste oculto de los lenguajes robustos
El principal obstáculo técnico fue el 'borrow checker', una herramienta que asegura que los datos no sean modificados de manera insegura en tiempo de ejecución: si bien esta característica es un pilar del diseño de Rust, en el contexto de los videojuegos —donde la iteración rápida y la flexibilidad son esenciales—, resultó ser una traba constante.
Según explican los desarrolladores,
"El 'checker' obliga a realizar refactorizaciones en los momentos menos convenientes. [...] en el tiempo que un desarrollador de Rust termina de refactorizar su código para cumplir con el 'borrow checker', un desarrollador de C# ya ha probado varias ideas y ha iterado en ellas".
Esto dificultaba la implementación de prototipos rápidos, y hacía que incluso las modificaciones más simples resultaran tediosas y lentas, un lujo que los estudios independientes con recursos limitados no pueden permitirse...
...pero crear un prototipo funcional en poco tiempo es lo que permite a los desarrolladores experimentar y evaluar ideas antes de invertir recursos significativos en su desarrollo completo.
En otros lenguajes, como C# o C++, es común implementar soluciones rápidas y "desordenadas" durante la fase de prototipado, para luego refinarlas. En Rust, esta práctica es casi imposible debido a las restricciones del lenguaje:
"El código en Rust a menudo es más limpio, pero eso no garantiza que el juego sea mejor. Lo que importa no es un sistema perfecto, sino cuán rápido puedes implementar y probar mecánicas para descubrir qué funciona y qué no".
Un ecosistema poco enfocado a videojuegos
A pesar de las críticas, LogLog Games reconoce que Rust tiene fortalezas innegables. El lenguaje es excepcionalmente bueno en áreas como herramientas de línea de comandos, procesamiento de datos y algoritmos. Además, su rendimiento "por defecto" es impresionante, superando a lenguajes como C# incluso sin optimizaciones exhaustivas:
"Rust es un lenguaje que funciona bien para proyectos donde la seguridad y la estabilidad a largo plazo son prioritarias. Pero para nosotros, el desarrollo de videojuegos es sobre velocidad y creatividad. Y en esos aspectos, Rust simplemente no nos ayudó".
Tras tomar la decisión de abandonar Rust, LogLog Games planea volver a usar Unity, aprovechando su ecosistema avanzado y herramientas que favorecen la iteración rápida.
Por el contrario, el ecosistema de Rust carece de herramientas maduras comparables a las que ofrecen Unity o Unreal Engine: ni editores visuales, ni sistemas avanzados de interfaz de usuario, etc.
Un punto recurrente de frustración fue el uso extendido de sistemas de componentes (ECS) en Rust, como el que implementa Bevy. Aunque estos sistemas ofrecen beneficios en memoria y modularidad, logran que
"lo que podría ser una línea de código en Unity o Godot se convierta en una tarea de 30 líneas dividida en múltiples lugares".
Vía | LogLog Games
Imagen | Marcos Merino mediante IA
En Genbeta | Qué es Rust y por qué Elon Musk piensa que será el lenguaje con el que crearemos la 'IA General'
Ver 2 comentarios