Uno de los grandes juegos de PC no tiene bugs, pero se ha hecho viral por lo complejo de su código. He preguntado a un programador sobre Balatro y los problemas de un sistema así

El juego de LocalThunk funciona, que es lo que hay que valorar, pero por curiosidad ahondaremos en qué conlleva tener un código caótico

Balatro 1 1
2 comentarios Facebook Twitter Flipboard E-mail

¿Quién dijo que un juego de cartas no podía tener enamorado a medio mundo? Balatro es el primer juego de LocalThunk, un único desarrollador que en 2021 tuvo una idea: mezclar el póker con el roguelike y el género de construcción de mazos. ¿El resultado? Una absoluta locura, adictiva y con nada menos que un 97% de reseñas positivas en Steam. Eso sí, lo que quizá el "solo dev" canadiense no esperaba es que los jugadores descubrieran cómo eran las entrañas del juego y se hiciera viral por ello. Y es que sí, el código de Balatro es un caos difícil de entender y creado "a lo loco", y hemos preguntado a un game designer sobre qué problemas conlleva esto.

Antes de nada, hay que dejar una cosa meridianamente clara y es que Balatro es bueno así fuera construido con un código de dos líneas. La calidad del roguelike es indiscutible y una cosa hay que tener en cuenta: mientras a LocalThunk le funcione, a nadie afecta, por lo que hablamos de un texto puramente informativo para el que hemos hablado con el compañero Miguel Solo, redactor en Webedia y programador, para arrojar luz sobre uno de los mejores juegos de lo que llevamos de 2024.

Durante la mañana de hoy, la cuenta de Twitter maxbittker subió a la red social de Elon Musk, la actual X, una captura de pantalla del código con el que está construido Balatro. Para los que no saben programación esto asusta como pocas cosas, pero lo peor es que para los que saben, también. Y es que, como podemos ver, hablamos de un archivo único masivo donde al parecer se encadena, casi de forma constante y apelotonada, la estructura condicional "If...Else...End - If" hasta donde alcanza la vista.

Tweet 1782645521888247956 20240423 193152 Via 10015 Io Haz clic en la imagen para acceder a la publicación en Twitter

Pero, pongámonos en situación. A la hora de programar un juego se busca hacer una programación escalable, es decir, diseñar sistemas que puedan funcionar para muchos casos que solo varíen modificando variables generales. Hay códigos complejísimos, otros más simples, pero siempre se busca la optimización de código y tratar de hacer las funciones y los scripts lo más cortos posibles para favorecer la legibilidad.

He aquí el primer problema de un código así, y es que, cuanto más largo y anidado sea el código, más difícil será seguir su flujo lógico y encontrar errores o realizar cambios específicos puede ser un desafío debido a la cantidad de estructuras condicionales. "Ahí veo mucho hard coding. Es decir, meter casos específicos sin ton ni son tipo 'si esto es igual a 3, haz esto otro' en vez de usar variables, un sistema de clases o llamadas a otras funciones que puedan optimizar un poco todo esto. Por ejemplo, reunir a todos los Jokers similares en un mismo tipo de clase para ahorrar código y simplemente toquetear variables, en vez de evaluar cada Joker por separado como parece que hace", cita Miguel.

Balatro

Eso sí, aquí tenemos el primer golpe en la mesa que nos da este código masivo: Balatro está diseñado por una sola persona. La idea de tener un código así, como cita el compañero Miguel Solo, hace muy difícil que el proyecto pueda contar con varios desarrolladores, pero hace las delicias del que se lanza al proceso creativo él solo. Hablamos de su propio laberinto, uno que tiene bien domado y del que sabe sacar buen uso, prueba de ello es que Balatro no tiene ni un solo error en su premisa jugable.

Esto, la falta de errores del juego es sumamente interesante y es que los condicionales encadenados pueden afectar el rendimiento del software. Cada condición debe evaluarse, lo que puede ser costoso en términos de tiempo de ejecución. "O sea que hacer, claramente se puede hacer, pero es la pesadilla de cualquier escuela de programación y sobre todo, es señal clara de que esto es un solo developer. Porque en cualquier equipo le tirarían de las orejas ante el caos que tiene ahí", cita Solo.

La falta de errores o lo bien que funciona el juego es interesante pues los condicionales encadenados pueden afectar el rendimiento del software

Para los que os preguntéis, '¿qué alternativas puede haber a esto?', aunque la programación tiene pautas estandarizadas, cada equipo y juego funcionan en base a sus necesidades. Aun así, en lugar de usar una gran cantidad de condicionales if/else, se pueden explorar otras técnicas de programación, como el uso de patrones de diseño, funciones más pequeñas y modularidad. "Al final como muchos comentan también la cosa es que funciona vaya. Y el juego no tiene bugs al menos que yo haya experimentado o visto por ahí", termina por mencionar el compañero. De hecho, el mismo LocalThunk zanjó el tema con sorna mencionando que "funciona con fe y sueños".

Balatro está a merced de las trampas

Sin embargo, hay un problema inherente a este diseño y a la facilidad con la que se ha accedido al código de Balatro: las trampas. Aunque la publicación de maxbittker en Twitter sea reciente, la problemática del código del roguelike se discutió por su comunidad a comienzos de mes. En Reddit el usuario autumnchiu relató lo "fácil", si tienes conocimientos básicos, que es hacer trampas cambiando ciertos parámetros para aumentar la tasa de aparición de comodines poderosos o legendarios.

Al ser tan sencillo acceder al propio código del juego, disponible en un archivo propio, hay riesgo de llamar la atención de los malos jugadores. Quizá no para el juego, porque al no ser online no hay necesidad, al menos lógica, de hacer trampas contra la IA, pero sí en el componente "desafío para speedrun". Sea como sea, la escena speedrunner del juego no parece haber dado muchos pasos, al menos de forma algo profesional, por lo que Balatro está "a salvo".

En 3DJuegos | Un RPG de acción y fantasía oscura a medio camino entre Diablo y Dark Souls. He pasado 15 horas jugando a No Rest for the Wicked y me tiene entusiasmado

En 3DJuegos | He jugado dos horas a Hades II y estoy emocionado. Todo lo que esperábamos del sucesor de uno de los mejores juegos de los últimos años y más

Comentarios cerrados