Lolstats
Lolstats es un proyecto personal el que intento aplicar conocimientos de procesamientos de datos e Inteligencia Artificial a las estadísticas extraídas de la API de Riot Games del popular juego League of Legends.
El propósito principal es crear un modelo que inicialmente pueda predecir si una partida resultará en victoria o derrota considerando el historial de partidas de cada jugador y su rendimiento histórico.
Conceptos básicos
A continuación se mencionan los conceptos básicos para tener en cuenta durante el desarrollo de éste proyecto.
League of Legends
League of Legends (LoL) Es un videojuego MOBA (Multiplayer Online Battle Arena) que se encuentra entre los más populares para PC. El juego cuenta con varios modos de juego siendo el principal un mapa 5 contra 5 donde el objetivo es destruir la base enemiga que se encuentra al otro lado de un mapa con tres carriles y una jungla.
Más información:
Grieta del invocador (5v5)
Modo de juego 5 contra 5, donde cada jugador selecciona a un campeón con habilidades únicas. Los 10 jugadores entran a un mapa con 3 carriles y una jungla con las bases en extremos opuestos. Cada jugador debe recolectar oro asesinando súbditos o campeones enemigos o destruyendo estructuras enemigas para poder comprar objetos que mejoren sus habilidades y subir de nivel.
Dentro del juego es común utilizar los siguiente términos:
- Invocador: Es el nombre que se le da a un jugador. Cada jugador tiene su Nombre de invocador único.
- Nivel de Invocador: Jugar partidas otorga experiencia la cual se acumula para subir de nivel.
- Clasificación: El juego permite jugar en modo Clasificación donde el resultado de la partida otorga puntos para colocar al jugador en una tabla de clasificación general de toda la región.
- Región: Por cuestiones de logística los jugadores de distintas regiones geográficas juegan en distintas regiones (servidores). Entre estas regiones se encuentran: Lationamérica Norte, Latinoamércia Sur, Norte América, Europa del Este, Corea, China, etc.
- Rango: Dependiendo de qué tan bueno sea un jugador se le asigna un rango en la clasificación general, yendo de menor a mayor: Hierro, Bronce, Plata, Oro, Platino, Diamante, Maestro y Retador.
- División: Dentro de cada Rango hay subdivisiones, yendo del IV al I. Ej: El siguiente nivel de Oro I es Platino IV.
Dentro de la partida es común utilizar los siguientes términos:
- 5v5: Abreviación de 5 contra 5.
- Campeón: Personaje del juego que tiene estadísticas y habilidades únicas.
- Estadísticas: Características del personaje, principalmente se refiere a su jugabilidad. Ej: Puntos de ataque, puntos de defensa, velocidad de ataque, puntos de vida, etc.
- Habilidades: Movimiento especial de un campeón que tiene efectos especiales. Ej: Hacer daño extra, curar vida, desplazamientos, control de masas, etc.
- Mapa: Terreno de juego.
- Carril: Camino amplio por donde se puede transitar y se mueven los súbditos y campeones.
- Súbdito: Personaje no jugable (NPCs) que ayuda a los jugadores a combatir.
- Jungla: Parte del mapa que no forma parte de los carriles, tiene caminos estrechos y monstruos neutrales.
- Monstruo neutral: Personaje no jugable (NPCs) que no ayuda a ningún equipo pero otorga recompensas al matarlo.
- Oro: Moneda de cambio dentro de la partida, se usa para comprar objetos.
- Objeto: Elemento que se puede equipar a un campeón para mejorar sus estadísticas.
- Build o Itemización: Se le llama así al conjunto de objetos que utiliza un campeón.
- Estructura: Se refiere a las construcciones con las que los jugadores pueden interactuar, generalmente tienen una función y pueden ser destruidas.
- Nivel: Dentro de la partida los campeones mejoran sus estadísticas cuando suben de nivel. Es incremental hasta llegar al nivel 18.
- Experiencia: Matar enemigos o realizar ciertas acciones en la partida otorga experiencia la cual se usa para subir de nivel.
Riot API
Riot Games (compañía creadora de LoL) proporciona para los desarrolladores una Interfaz de Programación de Aplicaciones (API) para obtener los datos de los jugadores y las partidas que hay jugado, ésto con el fin de crear herramientas para ayudar a los jugadores a entender mejor el juego, mostrar estadísticas y comparaciones de objetos, campeones y jugadores, etc.
Una de las herramientas de este tipo más comunes es la página OP GG (https://lan.op.gg) que muestra información de los invocadores, recomendaciones de objetos y cuenta con herramientas de apoyo durante la partida.
De aquí se extraen todos los datos utilizados en este proyecto.
La documentación de la API se encuentra en: https://developer.riotgames.com/apis
Riot Games también proporciona un repositorio de recursos relacionados con el juego para utilizar en conjunto con la API. A este repositorio le llama Data Dragon y contiene información de los campeones, objetos, mapas, rangos, además de recursos como imágenes.
La documentación del repositorio se encuentra en: https://developer.riotgames.com/docs/lol
Inteligencia Artificial
La inteligencia artificial es una rama del Aprendizaje Máquina que se centra en encontrar modelos que sirvan para llevar a cabo una tarea, normalmente de clasificación, utilizando métodos que normalmente incluyen un entrenamiento previo del modelo.
El proceso general de un algoritmo de inteligencia artificial es:
- Obtención de muestras de entrenamiento
- Definición del modelo
- Obtención de características de las muestras
- Entrenamiento del modelo hasta llegar a un error mínimo
- Obtención de muestras de prueba y sus características
- Prueba del modelo
- Liberación del modelo
Recopilación de datos
A continuación se enumera y detalla el proceso de recopilación de datos de las partidas y los jugadores a través de la API de Riot.