Hearthstone

Análisis de los desarrolladores: El balance de la Arena visto desde la ciencia

Análisis de los desarrolladores: El balance de la Arena visto desde la ciencia

¡Hola! Soy Tian, científico de datos sénior del equipo de Hearthstone. Hoy hablaremos sobre la matemática que determina el balance de la Arena. 

Las partidas de la Arena se juegan todo el tiempo y generan miles de datos que podemos usar para mejorar el balance. Son MUCHOS datos. Si yo trabajara en Laboratorios Bum, ¡apuesto a que estaría en el departamento de ciencias matemáticas!

¿Cómo se logra el balance?

ABunchOfKnobs_option02.jpgEl proceso para ajustar el balance de la Arena consta de dos etapas. Primero, determinamos a qué lista o listas pertenecerá cada carta (una lista es un grupo de cartas de rendimiento similar). Las cartas por lo general encajan en dos listas, y dividimos las listas en legendarias y no legendarias. La lista a la que pertenecerá cada carta se decide según su tasa de victorias y las veces que se elige durante las partidas. Eso significa que las tres cartas que ves al momento de elegir tienen un nivel de poder similar.

Luego, ajustamos las tasas de victorias entre las nueve clases. Lo ideal es que se acerquen todo lo posible al 50%. Esto se logra ajustando el peso de cada carta. El peso es un número que representa la probabilidad relativa de que una carta aparezca durante la creación del mazo. Cuanto mayor sea el peso de la carta, mayor será la probabilidad de que el juego la ofrezca. Si el peso de una carta cambia, también cambian las probabilidades de ver la lista a la que pertenece.

Se necesitan muchos datos para que el sistema funcione, pero gracias a la enorme cantidad de partidas de la Arena que se juegan día a día, tenemos suficientes datos a nuestra disposición. 

ThreeSteps_EK_600x260.png

Para utilizar estos datos y ajustar el balance del juego, debemos seguir tres pasos. 

  1. Construir un modelo
  2. Resolver problemas de optimización con restricciones
  3. Calcular los pesos

Tras este proceso, debemos programar los hotfixes para aplicar estos cambios.

Construir un modelo

Si juegas en la Arena a menudo, seguramente tengas experiencia en calcular las probabilidades de victoria. Algunas cartas influyen en esas probabilidades más que otras. Por ejemplo, robar el Rey Exánime afecta tu probabilidad de victoria mucho más que robar un Pingüino patinador.

EN_SnowFlippaLichKing.png

Supongamos que robas al Rey Exánime durante una partida. Quizás te preguntes: “Ahora que he robado el Rey Exánime, ¿cuál es mi probabilidad de victoria? ¿Será de 60%? ¿Será de 50%? ¿Cómo puedo evaluarlo cuantitativamente?” Luego, supongamos que robas una Barrera de hielo en tu siguiente turno: seguramente volverás a preguntarte cuál es tu probabilidad de victoria.

Hemos construido un modelo de aprendizaje automático para responder esos interrogantes. Ingresamos miles de datos al sistema y, con los datos de cada partida de la Arena jugada, el modelo aprende a predecir la probabilidad de victoria según la información que recibe. En términos formales, “entrenamos” al modelo que construimos. De esta forma, puede decirnos cómo influye una carta X en la probabilidad de victoria. 

Resolver problemas de optimización con restricciones 

ABunchOfKnobs_option03.jpg

Imaginemos que el modelo es una máquina con un montón de perillas ajustables. Cada perilla está vinculada con una carta específica. Cuando giras una perilla, modificas los números relacionados con esa carta.

Supongamos que, antes de girar una perilla, la caja te indica que la probabilidad de victoria actual es del 40%. Tras girar la perilla, la probabilidad de victoria pronosticada cambia al 46%. Esta situación plantea una pregunta muy interesante: si giraras varias perillas, ¿podrías ajustar la probabilidad de victorias a un porcentaje deseado?

La conclusión de esta pregunta es que necesitamos construir un problema de optimización. En términos matemáticos, queremos encontrar la mejor solución entre todas las soluciones posibles. Queremos que nuestro objetivo se acerque todo lo posible a lo que deseamos. Y para ello debemos “girar algunas perillas” al mismo tiempo. En términos formales, minimizamos una función objetivo en un vector de alta dimensionalidad.

Para el balance de la Arena, queremos que la tasa de victoria pronosticada se acerque todo lo posible al 50%, independientemente de la clase. Para lograrlo, ajustamos los números relacionados con cada carta.

Sin embargo, no podemos manipular las perillas arbitrariamente: existen ciertas restricciones que programamos en nuestra “máquina”. 

  • El nuevo número debe estar en un margen de ±30% de un valor fijo. Los cambios drásticos pueden perjudicar la experiencia de juego.
  • Si queremos reducir el poder de una clase en la Arena, sus mejores cartas tienen que aparecer con menos frecuencia que sus cartas más poderosas. Y ocurre lo contrario para hacer que una clase sea más fuerte.
  • También existen ciertas restricciones físicas para que el problema conserve su validez. Por ejemplo, el aumento total de la probabilidad de aparición debe ser igual a la reducción (en términos matemáticos, suma cero).

Calcular los pesos

HeavyLooking.pngEl último paso para ajustar el balance con los datos de la Arena es modificar el peso asignado de cada carta según los resultados de los dos primeros pasos. En general, una carta de peso 2 aparecerá con el doble de frecuencia que una de peso 1. La optimización con restricciones nos indica “qué perillas girar” y “cuánto girarlas”. Luego, vinculamos cada “perilla” con la probabilidad de que cada carta aparezca durante la creación del mazo. De esta forma sabemos en qué medida debemos modificar el peso de cada carta, más allá de otros modificadores basados en sus características (por ejemplo, si es un hechizo o un arma, a qué expansión pertenece, etc.).

Nivelar el campo de juego

Después de esta etapa de balance, la tasa de victorias de las nueve clases debería ser del 50% aproximadamente. Sin embargo, hubo situaciones poco comunes en las que, tras el proceso de balance, la tasa de victorias no fue la ideal. Eso puede suceder si la tasa de victorias de una clase está muy lejos del 50% antes de ajustar los pesos. Aunque no se alcancen los números ideales, serán mucho mejores que antes.

Como este sistema puede usar los datos de la Arena para aplicar la matemática computacional avanzada y el aprendizaje automático, nos permite determinar si es necesario aumentar o disminuir el poder de una clase, y elegir el peso óptimo para cada carta de cada clase.

ABunchOfKnobs_option05.jpg

¡Esperamos que esta información sobre el sistema de microajustes para la Arena te haya resultado interesante! Comparte tus opiniones y preguntas en la sección de los comentarios. 

Artículo siguiente

Noticias destacadas