lunes, 9 de junio de 2014

El juego del 2048 tiene un suelo aleatorio


Hace unas semanas comencé a jugar al 2048 (Gabriele Cirulli - http://gabrielecirulli.github.io/2048/).



Comparto la opinión mayoritaria de que es un juego adictivo y a veces desesperante. Su combinación de lógica y aleatoriedad hace que te sientas protagonista de las decisiones, pero que por otra parte temas que un 2 o un 4 aparecidos a destiempo te cierren el juego antes de lo que esperabas.

Para analizarlo mejor lo he implementado en hoja de cálculo. Esto me permite cambiar los símbolos o las reglas de juego, además de poder  idear variantes con desarrollos totalmente distintos y realizar estadísticas.


Existen bastantes páginas con consejos y estrategias para llegar a puntuaciones altas, pero en esta entrada no nos interesan, sino el estudio de la aleatoriedad contenida en el juego.

El “suelo” del juego

Cuando se desarrollan varias partidas en las mismas condiciones se observa que las puntuaciones alcanzadas fluctúan mucho de unas a otras. Según mi experiencia, si no existe un efecto de cansancio, suelen oscilar hasta 4000 puntos si se mantiene la pericia y las estrategias. Son diferencias demasiado acusadas, por lo que debemos pensar que el juego tiene un alto grado de azar.

Para aclarar la cuestión un poco se ha añadido a la implementación en hoja de cálculo el botón “Serie”, que te permite desarrollar el juego de forma aleatoria todas las veces que desees, recogiendo después las estadísticas. En un primer nivel el efecto es el de simular que la persona que juega no tiene estrategia o bien está absolutamente distraída.  A los resultados obtenidos les llamamos el “suelo” del juego, y constituyen la puntuación mínima que se debe esperar en las jugadas.

Simulación aleatoria (Nivel 1)

Para realizar un estudio fiable se ha desarrollado una serie con 1000 jugadas aleatorias. Nuestro modelo de juego las acumula en bruto, para que después se puedan analizar con las herramientas de la hoja de cálculo. Recoge puntuaciones, valor máximo conseguido y movimientos necesarios. Los resultados han sido estos:

Estadística simple

Han resultado estos promedios:



Nota: Como un consejo frecuente en este juego es el de procurar usar sólo dos direcciones en muchas fases del desarrollo, lo hemos implementado también así, que se use abajo y a la derecha de forma preferente, y, sorprendentemente, se ha incrementado algo el rendimiento, a pesar de seguir siendo un proceso aleatorio. Los resultados han subido a 83,2, 822,8 y 81,4 respectivamente. Para una muestra de 1000 intentos no están mal esas diferencias.

Así que jugando al azar sólo se llega a obtener 78,8 como valor máximo (con generosidad redondeamos al 128), muy lejos del 2048 soñado. La puntuación también es pobre, pero no tanto. Es destacable  el número de movimientos, pero es que de forma aleatoria cualquier resultado paga un precio en el exceso de los mismos.

Las desviaciones estándar de la muestra han sido:



Son llamativas, pero no tanto como esperábamos. Si usamos los máximos y mínimos, el grado de aleatoriedad aparece más claro:


Es destacable el hecho de que al jugar aleatoriamente se puedan conseguir casi 3000 puntos y llegar a 256. Por el contrario, tiene que venir la suerte totalmente en contra para llegar sólo a 16. Claro que estos son los casos extremos entre 1000 intentos.

Comparación entre variables

Valor máximo-Puntuación

Esta relación es interesante, porque nos da una medida de la cantidad de puntuaciones menores que acompañan al máximo. Podríamos sospechar que en buenos jugadores esta relación es pequeña, porque saben llegar al máximo de forma más directa, mientras que otras personas titubearán y producirán más resultados secundarios. Los resultados que ves en el gráfico se confirman con otros experimentos: la puntuación suele aproximarse a unas diez veces el valor máximo, con un ajuste bastante bueno, R^2=0,9 aproximadamente. Recuérdese que todo esto sólo es válido para jugadas totalmente aleatorias. Hemos elegido el ajuste lineal porque es el que presenta mejor valor de R^2.



Movimientos – Máximo

Esta relación no es tan fuerte, y nos presenta que para obtener un máximo determinado existe una gama muy amplia de posibles movimientos (pautas horizontales del gráfico). En promedio se consigue un valor máximo que se aproxima a una vez y media el número de movimientos.



Movimientos – Puntuación

Aquí nos encontramos con que el mejor ajuste es el potencial, con tasa de variación creciente y mayor dispersión según avanzamos en el gráfico de izquierda a derecha. Aparte de la pericia de cada persona, en el “suelo aleatorio”,  al crecer el número de movimientos se va obteniendo más rendimiento relativo y resultados más heterogéneos. La acumulación del azar abre las posibilidades.



La imagen de abajo corresponde a un cruce entre las variables Puntuación y Valor máximo (redondeadas a múltiplos convenientes). Vemos claramente que la mayor frecuencia corresponde al máximo 64 y que con ella lo más frecuente es obtener entre 300 y 600 puntos. Así que si obtienes este nivel no se te ocurra presumir.











Simulación con toma de decisiones (Nivel 2)

A nuestra simulación le añadiremos ahora un poco de inteligencia. En lugar de elegir aleatoriamente la dirección del juego, evaluaremos la ganancia en puntos que se puede lograr con un movimiento horizontal o vertical, después se elegirá uno de los dos y entre izquierda- derecha o entre arriba-abajo se tomará la decisión aleatoriamente.

Efectuadas 1000 simulaciones, hemos observado una ganancia apreciable respecto a la simulación aleatoria pura. Era de esperar, pero el incremento no llega al 100%. Sigue existiendo el “suelo” aleatorio del juego, pero más atenuado. Lo vemos en esta imagen de los resultados comparativos:



El incremento logrado en la puntuación es del 85% y en el valor máximo del 73%. Son ganancias apreciables, pero no excesivamente llamativas. Los movimientos se incrementan menos, porque la toma acertada de decisiones disminuye el número de necesarios: sólo se incrementan en un 43%. Es lógico.

También se nota el mayor rendimiento en los cocientes de comparación: por cada movimiento se logran 9,47 si jugamos de forma aleatoria y 12,24 si estudiamos antes las ganancias posibles. El proceso rinde más. La comparación con el valor máximo también se incrementa, de 1,06 a 1,28.
Como comentábamos en el Nivel 1, si sueles lograr 256 como máximo y puntuaciones de 1500 como media, estás jugando como niños de 6 o 7 años.

Comparaciones múltiples

Valor máximo – Puntuación

Sigue teniendo una buena relación lineal, con pendiente algo más baja. Es como si la pequeña inteligencia introducida lograra máximos con menos sumas secundarias, que son las que incrementan la puntuación.



Movimientos – Máximo

Aquí se nota mejor el rendimiento, que si aleatoriamente significaba un punto y medio por cada movimiento, ahora es de casi 2. También es lógico y no llama la atención.



Movimientos – Puntuación

Es muy parecida a la anterior, pero con menos dispersión en los valores mayores. Parece ser una característica del juego y no de la pericia de los jugadores.


Con esto habrás descubierto sobre qué “suelo” juegas. Vemos que existen puntuaciones mínimas que sólo son debidas al azar y que éste puede influir hasta en 3000 puntos, lo que incrementa la desesperación cuando tus planes se vienen abajo al aparecer la cifra no deseada o en la celda menos conveniente.