Registrarse

Caracterización de la curva de dificultad de Pokémon Platino

Estado
Cerrado para nuevas respuestas.

Mikelan98

WaH used to be a bigger place...
Introducción

De vez en cuando me da por ponerme los directs de WaH de fondo mientras me pongo con mis cosas (sí, esos directos que se hacían por Discord hasta que llegué yo, snif). En el que he escuchado recientemente, en concreto, se habló de la saga Pokémon en general y las distintas generaciones. Nunca jamás he estado tan de acuerdo con una persona como con Lon cada vez que hablaba de la cuarta generación. Y una de las cosas de las que se habló eran las curvas de nivel. Por eso, y porque me gusta mucho la estadística aplicada a los videojuegos (sólo hay que ver el thread que hice de las flores híbridas en AC:NL, hace unos meses) voy a estudiarla a fondo.

Hay que reconocer que Pokémon Platino tiene, posiblemente, la mejor curva de dificultad de toda la saga "reciente". Muchos hacks precisamente pecan de tener una curva bastante mal diseñada y, por qué no reconocerlo, creo que mi Pokémon Light Platinum DS también tiene una curva bastante mejorable.

Por eso voy a coger a mi amigo Excel, para desentrañar los misterios de las buenas curvas de nivel, con este juego. Realmente, saldrían unos resultados similares hacerlo en HeartGold o en otro videojuego similar y no demasiado facilón (me refiero a aquellas decepciones llamadas Pokémon Sol y Pokémon Luna), pero cogiendo Pokémon Platino salen unos resultados más fiables y fieles a lo que buscamos (si consideramos que Pokémon Platino es el modelo a seguir en cuanto a curva de dificultad).


Investigación

Cuando uno va a estudiar la curva de nivel de un videojuego, se le vienen a la mente muchas hipótesis o modelos para estudiarla, pero sin duda todos están relacionados con el nivel de los Pokémon de los entrenadores. En la investigación que voy a hacer, voy a omitir completamente los Pokémon salvajes, por dos motivos:


  1. Mucha gente farmea con Pokémon salvajes en las rutas, pero otra mucha gente (entre la que me incluyo) sólo se enfrenta con los Pokémon salvajes que me salgan al paso, y nada más. Incluso hay gente que huye siempre que ve un Pokémon salvaje, lo que es más drástico todavía.
  2. El modelo estadístico que nos salga va a ser mucho más simple y más "usable" que si incluimos los Pokémon salvajes. Es decir, si queremos usar las conclusiones finales para mejorar la curva de dificultad de nuestro hack, es más sencillo no meter por medio a los Pokémon salvajes que hayamos puesto en las rutas de nuestro hack, y simplemente tener en cuenta a los entrenadores.

Así mismo, tenemos que hacer una recopilación ordenada de todos los Pokémon que tienen los entrenadores del juego. Y digo ordenada porque debemos obtener un gráfico que relacione el nivel de los Pokémon rivales con, o bien la cantidad de entrenadores superados, o bien la suma de experiencia recibida, o bien cualquier otra estrategia, pero en la que es sumamente importante el orden (la curva de dificultad no es la misma si primero te enfrentas a 50 Pokémon de nivel 5 y luego a 50 Pokémon de nivel 30, que si te enfrentas a 50 Pokémon de nivel 30 y luego a 50 de nivel 5). El orden va a ser el de encuentro según el walkthrough de Bulbapedia (me parece muy triste que no haya una guía similar completa en WikiDex o Pokéxperto), y evitando poner, en la medida de lo posible, los entrenadores de lugares opcionales (Cueva Extravío, por ejemplo).

En primer lugar, probaremos a representar gráficamente los niveles de los Pokémon de entrenador, directamente y tal cual. En el caso de entrenadores con más de un Pokémon, sus Pokémon aparecerán también tal cual (un entrenador con dos Pokémon concretos es igual a dos entrenadores con un Pokémon concreto).


Rápidamente vemos que, aunque es un modelo extremadamente bueno (hay una relación lineal de casi el 95%), hay muchos puntos por arriba y por abajo de la línea. Si queremos tirar por la vía fácil, podemos usar la ecuación de esa recta para nuestro juego y ya está, pero habría que testear ingame, uno a uno, todos los entrenadores con más de 1 Pokémon en su equipo: podemos apreciar que NO se puede calcular la "fuerza" de los entrenadores con más de 1 Pokémon en su equipo de la forma en la que lo hemos hecho. Hay que buscar una alternativa.

¿Qué podemos hacer? Bueno, está claro que los entrenadores que sólo tienen 1 Pokémon en su equipo no hay que recalcularlos ni hay que hacerles nada. Podemos representar directamente el nivel de los Pokémon de los entrenadores que sólo tienen 1 Pokémon en su equipo.


Esta relación lineal es aún mejor que la anterior (96% de fiabilidad), pero ya sé que los más avispados de vosotros os estaréis preguntando: ¿por qué lo ajustas a una línea recta cuando los puntos no tienen forma de línea recta, sino de potencia? Y tenéis toda la razón. De hecho:


esta curva se parece MUCHÍSIMO a la curva de nivel por experiencia de los Pokémon con crecimiento normal. En naranja está representada la ecuación obtenida de la curva de dificultad (está modificada para que se puedan comparar las potencias: +18 en la ordenada y /40 en la variable), mientras que en azul está representado el crecimiento (nivel alcanzado/experiencia acumulada) de los Pokémon con crecimiento normal.



Vale, ya tenemos la curva de dificultad de todos los entrenadores con 1 Pokémon. Analicémosla. Podemos ver que la primera parte de la gráfica (correspondiente aproximadamente a todos los entrenadores hasta el 2º gimnasio) tienen una distribución siempre creciente, es decir, ningún punto baja con respecto al anterior. Esto nos puede dar una idea de cómo tratar a los entrenadores con más de un Pokémon.

La fórmula (empírica) que he obtenido ha sido:


MEDIA ARITMÉTICA DE LOS NIVELES DEL EQUIPO + Nº DE POKÉMON EN EL EQUIPO

De esta forma, la inmensa mayoría de valores en este rango (los primeros 100 entrenadores aproximadamente) siguen cumpliendo esa premisa en la medida de lo posible. Os presento un gráfico del que vamos a hablar a continuación. Miradlo con detalle:


En primer lugar, explicar los colores:

  • Azul para 1 Pokémon en el equipo
  • Rojo para 2 Pokémon en el equipo
  • Verde para 3 Pokémon en el equipo
  • Amarillo para 4 Pokémon en el equipo
  • Rosa para 5 Pokémon en el equipo
  • Violeta para 6 Pokémon en el equipo

En segundo lugar, os pido que miréis y entendáis por qué hay que ignorar la mayoría de puntos que están por encima de las curvas. Estos puntos corresponden a enfrentamientos con el rival, contra los líderes de gimnasio, contra comandantes del Equipo Galaxia y, para los 5 últimos puntos, contra la Liga Pokémon. Estos datos que "sobresalen" son lo que en estadística se conoce como outliers, valores que no deben ser tenidos en cuenta a la hora de calcular con ellos. Es evidente que este tipo de entrenadores es más fuerte que los demás, por lo que no podemos construir una curva mezclándolos a todos, hay que separarlos.

También podemos apreciar que las curvas se parecen mucho entre ellas (un indicativo de que hemos adaptado bien el re-cálculo de estos entrenadores). Quizás las líneas rosa y violeta se alejen más de las otras, pero tiene una explicación racional. Al principio del juego, los entrenadores con 5 o 6 Pokémon en su equipo son entrenadores fáciles de vencer (Pokécolectores, pescadores con 6 Magikarp...) por lo que aparecen, en un principio, por debajo del resto. Pero cuanto más nos acercamos al final del juego, los entrenadores más fuertes tienen 5 o 6 Pokémon en su equipo (Helio, el Alto Mando y demás), por lo que estas dos líneas acaban por encima de las otras.


Y aquí tenemos la curva que tenemos que analizar y caracterizar, pues es ésta la que nos va a servir para "corregir" nuestras curvas de dificultad en nuestros hacks. Los entrenadores con más de un Pokémon están "recalculados" según la fórmula que he puesto anteriormente, y los entrenadores fuertes (rival, líderes...) están excluidos de la gráfica.

Vamos a probar también otras dos hipótesis que a todos se nos puede pasar por la cabeza: ponderar los Pokémon según su fuerza (no es lo mismo enfrentarse a un Starly de nivel 40 que a un Staraptor de nivel 39) y ponderarlos según la experiencia que otorgan.

Simplemente tenemos que multiplicar la suma de los stats base del Pokémon en cuestión a su nivel, para hacernos una idea de su fuerza general. Pero...


Vemos que tienen una relación potencial más débil que las anteriores (sólo un 86%). Podemos considerar que no se cumple esta hipótesis, y que el nivel que Game Freak le ha asignado a los Pokémon no tiene nada que ver con la fuerza de ese Pokémon (o mejor explicado, no "ponderan" la fuerza del Pokémon con el nivel que le asignan).

Veamos la otra hipótesis, la de la experiencia.


Esta regresión es peor todavía (70%), por lo que también descartamos la hipótesis de que exista alguna relación de la experiencia recibida con la curva de dificultad.


Conclusiones

Ahora que tenemos la ecuación potencial de la curva de dificultad de Pokémon Platino, que es:

Código:
2,4609*x^0,5286
Podemos extrapolarlo a cualquier otra cosa, desde (como ya he dicho) aplicar esa curva a nuestro hack, para que tenga una dificultad lógica (no digo que sea más fácil o difícil, sino que sea consistente), a poder determinar cuánto de fuerte puede ser un entrenador concreto. Volvamos al caso de los outliers (los entrenadores fuertes que hemos descartado: rival, líderes...). En éste gráfico aparecen, en diferentes colores, estos entrenadores fuertes representados en distintos colores, y la curva de dificultad matematizada (en azul).


  • Rojo para comandantes del Equipo Galaxia
  • Verde para líderes de gimnasio
  • Amarillo para combates contra el rival

He omitido al Alto Mando y a Cintia porque considero que el diseño del equipo de esos 5 entrenadores es completamente independiente y debe de ser más dedicado y estar sujeto a muchos testeos.

Como podemos ver, el resultado del gráfico en congruente, estando todos estos grupos más o menos parejos, y teniendo (en líneas generales) sus Pokémon 4 niveles por encima del resto de Pokémon de los entrenadores normales.

Repetir este experimento en vuestro ordenador con Excel es bastante sencillo, aunque puede ser algo tedioso (dependiendo de cuántos entrenadores le habéis metido al hack). Simplemente, haced recuento de todos los entrenadores (adaptando, según la fórmula de la media + nº Pokémon, a todos los entrenadores con más de 1 Pokémon) y representad gráficamente los puntos, con la línea de tendencia de Platino como referencia. Igualmente, podéis comparar las dos constantes de la ecuación que hemos generado con Pokémon Platino: el exponente debe ser el mismo (pues representa el crecimiento mismo de los Pokémon, y un exponente muy diferente alteraría completamente la curva) y el coeficiente lo podemos variar ligeramente para modificar un pelín la dificultad.

Un ejemplo de los entrenadores de Pokémon Light Platinum DS:


Podemos ver claramente que la curva es un desastre, está demasiado elevada y no es uniforme en el crecimiento (pega vaivenes para arriba y para abajo). Ya lo arreglaré para la siguiente demo...
 

Nachoius

Caminante del cielo
Esto me parece un aporte tremendamente importante, y consciente de lo que es desarrollar un videojuego, muchas veces la curva de dificultad es el peor enemigo de los romhackers, que estamos tan dedicados a hacer scripts meter tiles o eventos, que olvidamos los trainers y los dejamos como si no importaran tanto, cuando son junto a los puzzles los principales determinantes de la dificultad de un hack.

Por otro lado creo que es una investigación un poco técnica, para los que estamos mas alegados del mundillo de la estadística nos costará un poco entenderla, me gustaría saber como aplicarla a mi hack, porque no me quedó del todo claro como aplicar la formula. Y de esta manera establecer una buena curva de dificultad. Saludo! ojalá ver aportes como estos mas seguido!
 

Mikelan98

WaH used to be a bigger place...
Vale, aquí os paso un documento de Excel para que podáis compararlo de forma sencilla.


El documento tiene dos hojas: la primera es un ejemplo para que os guiéis, la segunda está en blanco para que calculéis.

Sólo podéis alterar las columnas "#", "Entrenador", "Nombre", "Equipo Pokémon" y "Localización", cuyos valores debéis reemplazar por los vuestros (la primera de ellas, "#", es un valor técnico de NDS, correspondiente al slot del entrenador), aunque realmente lo único importante es que pongáis los niveles. Y la columna "Fuerza" ni se os ocurra tocarla, simplemente la ampliáis si metéis más filas de Pokémon.

Tenéis que meter los niveles con el formato que tienen, "Nv. X", de lo contrario no los reconocerá. Y donde no hay Pokémon hay que borrar el Nv. que viene por defecto. En la celda de la izquierda de los niveles va el correspondiente Pokémon: yo tengo un macro para reemplazar automáticamente los nombres por sus iconos, a vosotros os toca poner los nombres (si queréis ponerlos, si no, lo podéis dejar en blanco, pero a lo mejor os confundís más adelante cuando el documento tenga muchos entrenadores).

A la derecha está la curva: irán apareciendo puntitos verdes que simbolizan vuestra "curva de dificultad", y se tiene que parecer lo máximo posible a la línea azul (curva de dificultad de Pokémon Platino). Igualmente, os he puesto dos parametros que podéis modificar ligeramente, que son la ordenada y el factor de la ecuación de la curva azul: la primera se puede modificar para que el inicio del juego no sea taaaaaan lento en cuanto a dificultad, la segunda recomiendo que se toque muy poco, pero con ella se puede modificar la dificultad en general.
 
Estado
Cerrado para nuevas respuestas.
Arriba