- Hacker: persona que utiliza sus conocimientos para el beneficio de la comunidad aunque suponga daños para unos pocos.
- Cracker: persona que utiliza sus conocimientos para el beneficio propio o de unos pocos a costa del daño para muchos.
La segunda cosa que aclarar: mi forma de aprender las cosas se basa en el funcionamiento de las mismas. Al igual que los físicos fueron creando y cambiando sus modelos atómicos, yo creo (en mi cabeza) modelos sobre la informática, que voy cambiando según aprendo. Por ello, si alguna vez cometo algún error, probablemente sea debido a esto y acepto y agradezco cualquier corrección sobre el tema en cuestión.
Ahora sí, empiezo el post con lo que sé sobre el funcionamiento de los trucos en los videojuegos. Como ya he remarcado alguna vez, un videojuego no es más que un programa informático y, como tal, su funcionamiento se basa en el uso del procesador, la memoria y más elementos del ordenador correspondiente. La parte implicada en esto es la memoria.
En este componente el ordenador (recordemos que las consolas son ordenadores también) almacena toda la información que gestiona. Incluyendo programas. Programas que tienen datos, variables. Por ejemplo, los datos de un Pokémon están en la memoria de una 3DS que tenga el juego arrancado. En un ordenador de sobremesa podríamos tener la información de nuestra munición durante una partida de Team Fortress 2 (por decir algo).
La cuestión es, ¿de qué sirve saber esto? Está claro: si sabemos dónde está algo en la memoria podemos tocarlo. Si es un número podríamos decir que fuera 99 constantemente, así nunca nos quedaríamos sin PS en un Pokémon o sin munición en un TF2.
¿Seguro? Bueno, en realidad no. En Pokémon XY no podemos hacer esto porque no podemos tocar la memoria (al menos sin abrirla, hacer soldaduras y tener el grado de Ingeniería de Computadores). En Team Fortress 2 tampoco podríamos tocarlo, pero por una razón muy distinta: la información NO ESTÁ EN NUESTRA MEMORIA, ESTÁ EN EL SERVIDOR.
Esta "ligera" diferencia es importantísima en un juego con multijugador online. Si cualquiera pudiera cambiar cualquier dato accediendo a la memoria, los juegos serían injugables. ¿Por qué no lo son? Porque la información está centralizada. Sí, por supuesto que nuestro ordenador sabe que tenemos 15 balas, pero quien le dice cuántas tiene es el servidor. Cuando gastas una bala se lo dices al servidor, y el servidor te quita una bala. Y cuando disparas es el servidor quien te dice si le has dado a alguien.
¿Y a qué parte de Pokémon quiero llegar? Pues a que parece que GameFreak no sabe esto. No sabe algo que yo aprendí en una charla en la universidad que debió de durar como 40 minutos.
¿Cómo es y cómo debería ser el online de Pokémon XY?
Empiezo por "cómo debería ser", es más divertido leer las burradas después. El funcionamiento de un combate tendría que ser tal que así:
- Fase 1: elección de movimientos
Los jugadores eligen sus respectivos movimientos, y el servidor (Y SÓLO EL SERVIDOR) sabe ambos movimientos. El jugador A no sabe qué ha elegido B, ni viceversa. En realidad no me refiero a "el jugador", sino a "la consola del jugador". La información sobre el movimiento del otro no ha llegado a la consola aún. - Fase 2: cálculo de daños según los Pokémon
En este punto el servidor calcula todo lo que ocurre en el turno, pero las consolas siguen sin saber qué ha pasado. - Fase 3: envío del resultado
El servidor informa a ambas consolas del resultado. En ambas ocurren los mismos hechos: se ataca en el mismo orden, se hace el mismo daño, etc... Vamos, lo normal. - Fase 4: volver a Fase 1 si el combate no ha acabado, si no pues sí se ha acabado y ya.
Un online bonito, funcional, bien programado, sin ningún problema.
OH, WAIT, IT'S NOT.
Game Freak no ha programado esto así. Imagino que han sido lo suficientemente cutres como para querer ahorrarse el dinero de los servidores potentes y poder poner unos más baratos. ¿Cómo? Pues haciendo que no sean los ordenadores quienes calculen las cosas, que sean las consolas. ¿Qué tiene esto de malo? Pues está claro, para calcular las cosas necesita saber los datos del otro equipo. En algún momento todos, TODOS los datos del contrincante han llegado a nuestra consola.
¡Pero Tempi, tú has dicho antes que no podemos mirar los datos que sabe una consola! D:
Cierto, no podemos saber los datos que "hay" en nuestra consola, pero sí podemos saber los que pasan por el router (al fin y al cabo es nuestro router), y si jugamos online, los datos del contrincante han tenido que pasar por él. Ahí está la clave. En lugar de enchufar la consola a un router normal, la enchufamos a nuestro ordenador, que está conectado a internet. El ordenador hace de puente entre la consola y la red y, además, nos dice todo lo que queramos sobre los datos que pasan por él.
Ya está, ya hemos roto el online de un juego que, una vez te lo pasas (y es rapidillo) es lo único que tiene. A ver si nos ponemos las pilas de una vez con la seguridad informática, Game Freak, que dinero para invertir tenéis de sobra.


