Extrayendo datos acerca del videojuego League of Legends utilizando la API de Riot Games

Benjamin Lopez Mendoza
MCD-UNISON

--

Introducción

League of Legends, comúnmente conocido como LOL es un videojuego multijugador de arena de batalla en línea(MOBA por sus siglas en inglés) desarrollado y publicado por riot games.

En el juego, dos equipos de 5 jugadores luchan en un combate de jugador vs jugador (PVP), cada equipo ocupa y defiende su respectiva mitad del mapa, los equipos se identifican de la siguiente manera:

  • Equipo Azul: Se ubican en la parte inferior izquierda del mapa.
  • Equipo Rojo: Se ubican en la parte superior de derecha del mapa.

Cada jugador controla un personaje conocido como “Campeón”, con habilidades únicas y diferentes estilos de juego.

Durante la batalla, los campeones se van haciendo más poderosos conforme avanza el tiempo de acuerdo a la experiencia y oro. La experiencia aumenta de manera automática las estadísticas base de cada campeón conforme se sube de nivel (Máximo nivel 18). El oro aumenta las estadísticas de los campeones invirtiendo este mismo en objetos que cuentan con diferentes características, las cuales benefician de manera diferente a cada campeón.

En el mapa principal llamado “La Grieta del Invocador” un equipo gana avanzando sobre el área del equipo rival y destruyendo su Nexo, que es una estructura localizada lejos del equipo contrario.

Ahora que conocemos un poco acerca del juego podemos entender que una partida de este genera demasiada información y esta podemos extraerla de la API de RIOT.

La API de RIOT es una REST API que provee la información relacionada con los siguientes puntos:

  • Detalles del Jugador: nombre, nivel, icono de perfil, ID de cuenta.
  • Historial de coincidencias y detalles y líneas de tiempo de coincidencias por nombre de invocador.
  • La información actual del juego de alguien, si hay alguien en el juego.

Requisitos Previos

Los siguientes requisitos deben completarse antes de empezar a utilizar la API de RIOT.

  • Darse de alta en el sitio para desarrolladores de Riot con el fin de obtener una API Key. Sugiero leer la documentación, así como las políticas de la misma para saber los alcances y limitaciones al hacer uso de la misma.
  • Python instalado en tu máquina.
  • Instalar la librería Riot Watcher.

Obteniendo nuestra API key

Para obtener una API key necesitamos darnos de alta en el sitio de desarrolladores de Riot:

  1. - Estando en esta parte del sitio Web seleccionamos la opción SIGN UP NOW

2.- Se te solicitará una cuenta de correo electrónico para registrarte en el sitio.

3.- Se te solicitará tu fecha de nacimiento para la creación de tu cuenta. Tu edad debe ser igual a mayor a 13 años.

4.- Debes elegir tu nombre de usuario.

5.- Capturas tu contraseña.

6.- Una vez terminado el proceso en tu perfil se te mostrara de manera oculta tu API key la cual se utilizará para extraer la información de la API.

Extrayendo los datos

Instalamos la librería de riotwatcher para poder empezar a extraer los datos de la API:

Antes de proceder con el uso de riotwatcher debemos tomar en cuenta que hay mucha información estática que provee la web de RIOT que no viene incluida en la librería, pero que puede ser extraída con un request GET al endpoint de la API en formato JSON, si bien no es información que vaya a manejar durante este escrito creo que es importante que se conozca.

A continuación ejemplos de la información estática:

  • Seasons: Nos ayuda a identificar en que Temporada se jugo el match.
  • Colas de Juego: dentro del juego hay tipos de cola de espera para entrar a una partida, las mas comunes son: partida normal, clasificatoria en solitario y clasificatoria flexible.
  • Modos de Juego: a lo largo de sus casi 11 años ha habido muchos modos de juegos en league of legend de los cuales destacan: URF, Uno para todos, ARAM, por mencionar algunos.
  • Mapas: Identifica en que mapa se jugo la partida, ejemplos: Abismo de los lamentos, grieta del invocador, bosque retorcido.

Primero que nada para hacer la conexión con la API ejecutamos el siguiente código:

Para el desarrollo de este escrito extraeré los datos de mi cuenta personal: “SquareHammer”.

Ejecutamos el siguiente código del cual obtendremos el perfil de invocador y la información de la cola clasificatoria.

A continuación mostramos el resultado de la ejecución de este código:

Del primer resultado se obtiene el valor de la variable id para con ella obtener el segundo resultado la cual nos arroja los valores del perfil del invocador, de los cual lo mas destacable es:

  • Queutype: nos indica en que cola clasificatoria ha participado.
  • Tier: rango del invocador(Iron, Bronze, Silver, Gold,Platinum, Diamond, Master, GrandMaster y Challenger).
  • SummonerName: nos indica el nombre del invocador.
  • LeaguePoints: Es la cantidad de puntos obtenidos entre cada división. Cada división cuenta con cuatro subdivisiones y en cada una de ellas se tienen que obtener 100 para subir de nivel.
  • Wins: Cantidad de victorias durante la temporada.
  • Losses: Cantidad de derrotas durante la temporada.
  • Hotstreak: Indica si el jugador esta en una racha de victorias.

De las variables que no mencione sinceramente de la mayoría desconozco que representa sus valores.

Cuando queremos obtener le historial de partida por nombre de jugador, ejecutamos el siguiente Código:

El resultado es el siguiente:

Este resultado aun lo podemos hacer mas entendible ya que en la columna champion y queue los valores mostrados son solo números que no dicen nada por si solos, entonces tenemos que extraer la información de los campeones y de las colas, lo cual lo haremos con el siguiente código:

Nos da como resultado:

Ahora solo falta obtener la información de las colas de espera:

Obtenemos el siguiente dataframe:

Una vez obtenidos estas dos piezas que nos faltaban procedemos a crear un dataframe como resultado final:

Pero eso no es todo lo que se puede obtener de información, con la información del dataframe anterior podemos acceder a los datos de cada partida por medio del gameId:

El archivo Json obtenido de este request es demasiado extenso como para publicarlo, sin embargo te dejo un enlace con archivo de muestra por si te interesa alguna información extra que no maneje en este escrito.

Como podemos observar solamente obtenemos información numérica difícil de entender por lo que con un poco de la información que ya hemos obtenido anteriormente, más la que obtendremos a continuación haremos que la tabla sea fácil de leer y que sea muy entendible.

De la información que se presenta en la tabla hasta ahorita solo sabemos como obtenemos los nombres de los campeones, quedando pendientes las siguientes columnas:

  • Spell1 — Spell2 (Hechizos de invocador)
  • Item0….Item5
  • Agregaremos SummonerName (Nombre de invocador)
  • Agregaremos el gameid, fecha, así como el id del participante en la tabla.

Obteniendo los Hechizos de invocador

Para poder obtener los hechizos invocador lo extraeremos de Riot Watcher de el apartado de data dragon que es la parte donde se guarda toda la información de la partida, en este caso extraeremos los hechizos de invocador, en este enlace dejo el ejemplo de como se ve el archivo Json para que lo puedan analizarlo con mas detalle.

El resultado es el siguiente, todos los hechizos de invocador que existen en el juego:

Obteniendo los Objetos

Hacemos una visita a data dragon para obtener los datos, aquí dejo un ejemplo del archivo json que nos da como resultado. Ejecutamos el siguiente código:

Obtenemos el siguiente resultado:

Dándole sentido a los datos

Ahora que tenemos la mayoría de los datos, primero mostrare las funciones que realicé para poder obtener y unir toda la información:

Haciendo uso de estas funciones complementamos el código mostrado anteriormente donde solo nos daba como resultado información numérica difícil de entender de buenas a primeras. Procedemos a que ejecutamos el siguiente código:

A continuación tenemos el resultado final de las 23 partidas que consulte en los inicios de este escrito:

Como se puede observar toda la información ya es mas legible y digerible.

Conclusión

League of legends es un videojuego el cual genera demasiada información y si eres amante de los videojuego y de league of legends aquí tienes una forma de extraer los datos gracias a la API de Riot.

--

--