El problema de la evasión

4
242
views

Los skills de evasión vienen directamente de Warcraft III y fueron heredados de ahí por el mapa de DotA. Si alguien ha jugado partidas de melee o la campaña misma, debe saber que la Evasión pertenece (además de una cierta cantidad de unidades) al héroe Cazador de Demonios (Demon Hunter/Illidan). Es, además, un concepto clásico cuyo origen puede trazarse en los primeros RPG’s, esos de dados, mapas y tablas. La evasión te otorga la chance de evitar un ataque. Bastante simple. Y, en cierta forma, bastante interesante.

Lo interesante de este concepto es que la función del beneficio de la evasión no crece de forma lineal, a pesar de que muchos creen lo contrario. Este es un error de concepto en el cual muchos diseñadores de juegos han caído, Icefrog y Blizzard incluidos: El Demon Hunter obtenía 10/20/30% de evasión, la Phantom Assassin obtiene 20/30/40/50%. Ambos skills son balanceados linealmente, con un aumento de 10 por nivel.

Ahora bien, muchos se preguntarán cuál es el problema con que la cantidad de evasión crezca de forma lineal. La respuesta está en el párrafo anterior: el beneficio de la evasión no crece de forma lineal. De esta forma, hacer crecer tu evasión de 40% a 50% (Blur de nivel 3 a 4) otorga un beneficio a la HP mucho más grande que incrementarla de 20% a 30% (Blur de nivel 1 a 2). Les pongo un ejemplo sencillísimo:

Cantidad de evasión0% (0) de evasión50% (0.5) de evasión100% (1) de evasión
Factor de incremento de la resistencia física12

El factor Incremento de Resistencia Física se multiplica por la EHP física (concepto con el cual necesito que se familiaricen, el cual significa HP efectiva y toma en cuenta, para el cálculo de la EHP física, la armadura y otros modificadores) para obtener la nueva EHP física, después de aplicado el modificador evasión. ¿No comprenden por qué 100% de evasión aumenta al infinito la resistencia física? Piensen un poco en ello. Piensen en un tipo al cual nunca puedes pegarle. Por más que tenga solo 1, 10, 1000, 10000 de HP, ¿no tendría una resistencia infinita al no poder recibir un solo golpe?

Ahora bien, mi punto es el siguiente: de 0% de evasión a 50% de evasión tenemos un incremento de 1. Si el beneficio de la evasión realmente fuese lineal, el incremento de 50% a 100% sería también de 1. Sin embargo, podemos ver que salta hacia el infinito. No puede ser una función lineal. Una función lineal tiene el siguiente aspecto:

Screenshot_2

Las funciones lineales solo pueden tender al infinito para x=infinito. Sin embargo, nuestra función tiende al infinito cuando la evasión es de 100%. Comúnmente se cree que la función b(e): beneficio por evasión donde e es la cantidad de evasión tiene la siguiente forma:

b(e)=m*e+p (La cual es la forma general de una función lineal, donde m y p son valores constantes)

Cuya curva hemos visto ya arriba. Los valores de m y p solo modifican qué tan empinada está la curva y en qué lugar del plano cartesiano se encuentra. Sigue siendo similar a la gráfica mostrada y, lo más importante, sigue tendiendo al infinito solo cuando e=∞.

Entonces, es nuestro deber (?) encontrar un tipo de función que no sea lineal y que refleje fielmente el beneficio otorgado por la evasión de acuerdo a su porcentaje. Esta función será llamada b(e) y reemplazará a la anterior (cuyo único objetivo era mostrar que estaba errada). ¿Qué sabemos de esta b(e) nueva y mejorada? Volvemos a nuestro cuadro:

  • Cuando e=0 => b(e)=1
  • Cuando e=0.5 => b(e)=2
  • Cuando e=1 => b(e)=∞

¿Qué función cumple con lo expuesto por estos datos? Para empezar, una de las primeras funciones con tendencia al infinito que nos enseñan es 1/x. Llamémosla 1/e para que concuerde con nuestra función. 1/e tiende al infinito cuando es 0. Pero nosotros queremos que tienda al infinito para e=1. Sencillo: cambiémosla por 1/(e-1). Ahora cumple tanto con el tercer requisito como con el primero. Pero cuando e=0.5, lo que nos da es -2 en lugar de 2. ¿Qué hacemos? Nada más sencillo que cambiar de signo a nuestra función. Quedaría de la siguiente forma:

b(e)=1/(1-e)

Cuya gráfica es la siguiente:

Screenshot_3
La función tiende hacia el infinito a medida que se acerca a uno por la izquierda. Como no es posible tener más de 100% (1) de evasión, no nos importa hacia dónde tienda por la izquierda.

Si alguna persona más docta en matemáticas que yo está en contra de la forma por la cual he encontrado esta función, pido mis más sinceras disculpas. Soy consciente de que he ido a tientas. Pero se puede testear fácilmente (lo he hecho, en realidad) en Warcraft III y confirmar así que es la función adecuada.

Aplicando la fórmula a la Phantom Assassin

No nos distraigamos. Tenemos ahora nuestra gráfica, la cual admitimos que es la gráfica de la verdadera función beneficio de la evasión. Ahora nos dedicamos a tabular un par de variables interesantes. Pondremos los valores del skill Blur de la Phantom Assassin y veremos de qué forma crece el beneficio:

Nivel de BlurFactor de evasiónBeneficio real en la EHP
 10.21.25
 20.31.43
 30.41.67
 40.52.00

Pues bien, esto demuestra que el beneficio no aumenta linealmente de ninguna forma. Del nivel 1 al nivel 2 otorga un beneficio de 0.18. De nivel 2 a nivel 3 otorga un 0.24. De nivel 3 a nivel 4 otorga nada más y nada menos que 0.33. Subir Blur de nivel 3 a 4 te otorga casi el doble de beneficio que subirlo de nivel 1 a nivel 2.

Ya que hemos confirmado, con los datos de la propia Phantom Assassin, que Blur está desbalanceado y que su beneficio no aumenta de forma constante en cada nivel que adquiere, debemos encontrar una forma de balancear Blur que haga aumentar de forma constante al beneficio.

¿Cómo lo hacemos?

Pues es simple: funciones inversas.

Una función inversa es muchas cosas. La página 147 del primer volumen de la Introducción al Análisis Matemático de Haaser, La Salle y Sullivan la explica bastante bien. Los tipos sabían del tema. Yo no. Les mostraré unos cuantos ejemplos y espero me sigan el juego.

  • Si f(x)=x+1 entonces su inversa es x-1
    Si f(x)=2*x entonces su inversa es x/2
    Si f(x)=7+2x entonces su inversa es (x-7)/2

Una forma práctica de hallar la inversa de una función f es reemplazar f(x) por x y x por f*(x). Llamaremos f* a la inversa de f, g* a la inversa de g y así. Una vez hayas entendido perfectamente a qué me refiero, podemos seguir.

La función inversa de b(e) es e(b)=1-(1/b).

De esta forma podemos hallar la cantidad de evasión en base a un beneficio dado, en lugar de hacer las cosas al revés, cosa que ya hicimos (hallar el beneficio en base a una cantidad de evasión determinada). Digamos (es solo un ejemplo dado a la ligera) que queremos mantener el beneficio real en niveles 1 y 4, pero hacer que escale correctamente. Armamos la siguiente tabla y usamos nuestra función inversa:

Nivel de BlurBeneficio real en la EHpFactor de evasión
11.250.2
21.50.33
31.750.43
42.000.5

De forma que Blur otorgue 20/33/43/50% de evasión.

Hemos aproximado un tanto los decimales. El cambio puede no parecer grande, pero en realidad empieza a hacerse enorme una vez se supera la barrera del 50%, como veremos en el siguiente apartado.

La cuestión de la Butterfly

Esta es otra de las cuestiones ridículas que provienen de la forma en la cual crece el beneficio de la evasión. ¿Recuerdan la gráfica de nuestra función b(e)? Acá está de nuevo:

Screenshot_3

Si se dedican a observar su comportamiento, llegarán a la misma conclusión a la que llegamos antes: aumentar una evasión de 70% a 80% incrementa mucho más el beneficio que aumentarla de 10% a 20%. ¿Que qué tiene que ver eso con la Butterfly? Pues aquí lo explico.

Deberían saber ya que la posibilidad de evadir ataques de Butterfly no se suma directamente a la de Blur. No funciona como que Blur da 50% y Butterfly da 30% y sumadas dan 80%. Antes bien, ocurre un pequeño cálculo en cada ataque. Phantom Assassin tiene un 50% de evadir ese ataque con Blur. Si no lo evade con Blur (lo cual tiene 50% de posibilidades de ocurrir), tiene el 30% de chances de evadirlo con Butterfly, SOBRE EL PORCENTAJE ANTERIOR. el 30% del 50% es 15%. Esta es la cantidad que se suma al 50% de Blur.

Entonces, una Butterfly incrementa la evasión de la PA de 50% a 65%. “¡Meh!” Dirán los insensatos. “Comprarla en un héroe sin evasión da el 30% completo y eso es mucho más… ¿no?”

No.

Pueden comprobarlo ustedes mismos tabulando los datos en nuestra querida fórmula b(e)=1/(1-e)

Factor de evasiónBeneficio real en la EHP
01
 0.31.43
0.52
0.652.86

Como ven, Butterfly otorga al héroe promedio un beneficio de 0.43. A una Phantom Assassin con Blur maxeado, sin embargo, le otorga el doble de beneficio.

OPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOP

¿Por qué sucede esto? Pues pueden descubrirlo viendo la gráfica: a medida que la cantidad porcentual de evasión se aproxima a 100%, el beneficio que otorga empieza a dispararse. Una evasión lo suficientemente alta simplemente se caga en todo y en todos. Un aumento, por mínimo que sea, cuando la evasión es suficientemente alta, es devastador. Para jugar con el concepto, veamos qué pasa en un héroe promedio que compra dos Butterflies:

Factor de evasiónBeneficio real en la EHP
01
0.31.43
0.512.04

Sí, amiguito: la segunda Butterfly otorga un beneficio mayor que la primera (en lo que a resistencia respecta).

Conclusiones

Es posible que Icefrog no sepa de esto, pero lo dudo. El hombre es una jodida máquina y conocía todas las curiosidades, por mínimas que sean, del sistema de Warcraft III. Me inclino por pensar que simplemente decidió que la diferencia entre cantidad de evasión y beneficio real era lo suficientemente pequeña como para ser descartada. Como sabemos, Icefrog ha preferido siempre unos números bonitos. Y es más bonito que la cantidad de evasión aumente de forma constante por nivel. Esto podía servir y ser ignorado cuando solo existían Drunken Brawler y Jinada con 25% de evasión (Sí, Jinada antes daba evasión) y Blur con 30%. Y, como ya hemos visto antes, cuando la cantidad de evasión es lo suficientemente pequeña, las diferencias con el beneficio real son realmente ínfimas. Sin embargo, ahora existe Blur con 50% y Blur+Butterfly con 65%: las diferencias empiezan a hacerse más evidantes.

4 COMENTARIOS

DEJA UNA RESPUESTA

Por favor escribe tu comentario:
Por favor introduce tu nombre aquí