viernes, 15 de noviembre de 2013

Pseudoaleatoriedad y cómo aprovecharnos de ella - Calibrar el RNG Reporter

¡Videotutorial >aquí<!

    Cuando tiramos una moneda al aire nunca sabremos de qué lado caerá, y por tanto decimos que es aleatorio. Realmente no lo es, existen infinitas variables que regulan su movimiento y deciden cómo caerá. Aún así, nos resulta imposible estudiarlas todas, de modo que a efectos prácticos sí es aleatorio.

   No ocurre igual en la informática. Un ordenador no puede tener infinitas variables (tendría que tener infinita memoria), luego podemos estudiarlas y averiguar cómo funciona. Quizás en un ordenador grande no podamos hacerlo sin el código, pero en uno de potencia más o menos reducida sí. Una consola portátil, por ejemplo.









   Pongamos ejemplos más visuales.
Esquema básico de toda función





Ejemplo de función matemática



    Cuando nos encontramos con un Pokémon, atacamos con un ataque de precisión menor que 100, nos sale un shiny... ¿es de verdad aleatorio? Obviamente no, la DS toma unas entradas, las pasa por una función y devuelve un valor o conjunto de valores. Esta función es el "Random Number Generator".

Función que se aplica al encontrarnos con un Pokémon


    De esta forma, si queremos obtener un shiny, lo único que tenemos que hacer es darle la vuelta a la función: que según lo que queremos nos diga qué valores deben tomar sus entradas. Pero esto no lo haremos nosotros a mano, sino que lo haremos con un programa llamado RNG Reporter (link).

    Lo primero es "despejar las variables". Pongamos que capturamos un Pokémon. Nosotros podemos saber todos sus datos, es decir, sabemos el Pokémon y todas sus características. Por otro lado, tenemos un programa que calcula a la perfección la función RNG. Si sabemos la salida y el método para llegar a ella, nos es posible calcular esos datos de la DS desconocidos.

Esto es exactamente lo que vamos a hacer. Necesitaremos:
  • Un Pokémon con Dulce Aroma.
  • La MasterBall (tranquilos, que no se gasta).
  • Pokémon Blanco/Negro. No vale Blanco 2/Negro 2 porque no funciona bien.
  • DS Lite/antigua. Las i y la 3DS se pueden usar, pero es necesario usar un reloj externo que tenga exactamente la misma hora (incluyendo los segundos). Mejor DS Lite, hacedme caso.
  1. Lo que haremos ahora será calibrar el programa para que haga los cálculos para nuestra consola y juego. Lo abrimos y le damos a "DS Parameters Search".
    En la ventana que nos aparece, rellenamos los huecos de la izquierda: versión, lenguaje (del juego), tipo de DS (recomiendo la DS tocha o la Lite, con las i y la 3DS se complica demasiado) y dirección MAC. La dirección MAC se puede ver entrando a los ajustes del WiFi desde cualquier juego con CWF.
  2. Ahora abrimos el juego, vamos a una zona con Pokémon de nivel alto (la cueva que da paso al Boquete Gigante es un buen sitio) y guardamos.
  3. Cerramos el juego.
  4. Encendemos la DS pero sin arrancar el juego.
  5. Paso importante: tenemos que apuntar bien la fecha y hora a la que arrancamos el juego. Incluso el segundo. Lo mejor es esperar a que la manecilla de los segundos vaya al 0 o a los 30. Tenemos que darle poco después del segundo anterior.

    Me explico: encendemos la consola, quitamos la advertencia de seguridad, miramos la fecha y hora. Miramos atentamente el reloj hasta que alcance los 29 o los 59 segundos. Justo abrimos el juego. La pantalla se pondrá en blanco, y oiremos el tic del reloj llegando a los 30 ó 0 segundos (aunque no veamos ya el reloj).
    ¡Recordad ver el vídeo, se entiende mucho mejor!
  6. Segundo paso importante: no tocar ningún botón e ir con cuidado. Pulsamos A para quitar la animación de la estrella, pulsamos A de nuevo cuando en la pantalla diga "Pulsa Start para empezar", pulsamos A para empezar la partida, luego B para no activar el C-Gear, y luego A para confirmarlo.
    En cuanto salga la estación en la que está el juego, machacamos la X hasta que salga el menú.
  7. Usamos Dulce Aroma.
  8. Saldrá un Pokémon, que capturaremos con la MasterBall. Como tenemos espacio en el equipo, se quedará ahí. Vamos y miramos sus datos.
  9. En la pantalla de introducción de datos de RNG Reporter (donde pusimos la versión del juego y demás) le damos a "Calculate IV from stats", donde meteremos los datos del Pokémon capturado. Cuando esté todo, le damos a "Check IVs", y si no hay ningún error, le damos a "Ok".
  10. En la pantalla de datos otra vez, metemos la fecha y hora. Le damos a "Search". En la tabla inferior derecha, "Results", tendrá que salir una fila de datos. Hacemos click derecho y le damos a "Send to profile".
  11. En la ventanita que nos sale le ponemos un nombre al perfil y, si lo conocemos, nuestro ID secreto (imprescindible para sacar shinies).
    Y ya está, ya hemos calibrado el RNG para nuestro juego y consola. Al principio cuesta un poco, pero cuando se coge práctica, se tarda nada. Es muy importante saber hacer bien los pasos 5 y 6, ya que no se utilizan sólo en la calibración. Si queréis comprobar si lo hacéis igual siempre, intentad encender la consola siempre a la misma hora y comprobad que el Pokémon que os sale con Dulce Aroma es el mismo y tiene los mismos datos.
    Por último, me gustaría mencionar a @marc_robledo en el post, fue quien me enseñó a hacer RNG. Al fin y al cabo uno no nace sabiendo xD

    La próxima guía tratará la obtención de huevos perfectos usando el RNG Reporter.

No hay comentarios:

Publicar un comentario