Aplicações de Inteligência Artificial no League of Legends
O LOL (League of Legends) é um MOBA de 5 jogadores semelhante ao Dota 2 que é um dos jogos online mais jogados no mundo todo. Com 1.9 milhões de jogadores em Abril deste ano ativos, 138 milhões de horas assistidas no Twich e o segundo mais popular de todos E-Sports.
É fácil dizer e provar que o LOL foi o jogo que colocou o E-Sports no mapa, algo que todos os jogos que estão nesse meio, como Free Fire, Valorant, Call Of Duty, devem pagar honras ao seu amigo não tão parecido e desprezado pelos que não o jogam.
O que são Bots em um Jogo online?
Um bot no contexto de jogos online é um programa ou sistema que de alguma forma consiga explorar o ambiente e os recursos do jogo sozinho, quase de forma automatizada.
Um bem famoso é o Bot do Tibia, que foi um jogo muito famoso no começo da última década com uma base de jogadores fiéis ate hoje. O bot fazia de tudo, caçar, lotear recursos e trazer esses recursos para o banco do jogo (DP).
O Tonin Calvera foi um dos mais conhecidos como mantenedores de bot do tibia por muito tempo, coletando todos os recursos e matando monstros automaticamente, algo que foi usado por muitos jogadores famosos como o Lord Paulistinha.
Isso foi importante durante um tempo no jogo, em que muitos players odiavam quem usavam bots, mas no fim os grandes players sempre usavam, muitos bots até respondiam mensagens para enganar os jogadores e não serem reportados.
Bots no League of Legends
Atualmente não existe um bot para jogar Lol, obviamente algo para jogar um jogo complexo como um Moba deve ser no nível do AlphaStar (Bots que jogavam Starcraft)ou OpenAI Five (Bots que jogavam Dota 2), fazer algo assim é bem mais difícil do que parece do ponto de vista de recursos e investimento necessário.
(Silva e Chaimowicz, 2017) criaram um bot tutor, que tem o objetivo de ensinar o jogador a se ambientar ao jogo durante o tutorial. Ele é mais como um conselheiro do que algo que realmente guia os jogadores ativamente na gameplay.
Recentemente têm sido criados alguns bots focados em realmente jogar o game. O autor fez o sistema para 3 personagens apenas, Garen, Brand e Ezreal (Que são relativamente fáceis de se jogar).
Esse bot não usa IA, mas apenas o PyAutoGUI, que é uma library de visão computacional, que talvez seja a mais usada no uso de bots atualmente, o problema é que ela não aprende, é um sistema fechado.
Esse bot criado pelo DorskFR, joga até que bem, como você pode ver acima. A Ahri é um personagem com uma dificuldade até que mediana de gameplay, pela necessidade de acertar algumas skills conjuntas.
No link do Github eles mostram gameplays do Jax também, e dos outros supracitados, o Ezreal foi o melhor na minha opinião. Nenhum deles são personagens com mecânicas complexas como Zoe ou Lee sin, mas mostram que a ferramenta funciona contra a IA padrão do Lol.
Agora um Bot que realmente usa IA, é o LeagueAI do Oleffa no Github. O Autor usou o YOLO, que é muito conhecido e usado para reconhecimento de objetos em imagens.
Esse exemplo foi treinado através de vídeos de gameplays, por isso o uso de YOLO foi essencial. Nesse caso do personagem AD Carry chamada Vayne. Ela não é considerada difícil na mecânica, mas com certeza é bem dinâmica no uso das skills e movimentação necessária.
O autor ainda publicou academicamente o seu feito, em (Struckmeier, 2019). Isso é bom para outros pesquisadores tentarem reproduzir os mesmos efeitos em outros personagens com mecânicas simples.
(Lohokare et, al. 2020) fazem a mesma coisa, usando Reinforcement Learning e LSTM (Long Short Term Memory, sugerido inicialmente em [Hochreiter and Schmidhuber, 1997]). Foi adicionado Policy Optimization (PPO) junto com LSTM, tendo inspiração no OpenAI Five citado anteriormente.
Em (F. A. Gers, 1999) os criadores de LSTM vão além, mostrando como fazer o sistema “esquecer” parâmetros aprendidos que são desnecessários, o que na prática faz o programa ser mais rápido.
É como se fosse uma memória hierárquica, em que só o que é relevante fica guardado para ser usado posteriormente, é assim que os Sistemas da Deep Mind, OpenAI e outras citadas nesse post são tão eficazes em larga escala, LSTM é muito importante mesmo pra isso.
Esse modelos tem como objetivo criar um sistema de recompensas e penalidades (Isso com relação ao uso de Reinforcement Learning, especificamente Q-learning) para as ações feitas pela IA ao longo da partida. Uma tabela é feita com as ações corretas, como matar o inimigo, farmar bem, e punições, como morrer, perder a partida e etc…
Nós explicamos com mais detalhes isso no post anterior sobre o Dota 2.
Como o Lol não tem um API fixo como o Dota 2 para eles usarem como base para fazer o bot executar as ações no game, foi usado um banco de dados do MOBA King of Glory como base.
Dá pra ver que eles estavam já a par do Paper do (Struckmeier, 2019) e do (Silva e Chaimowicz, 2017) que citamos anteriormente.
Outros usos de IA no LOL
Algo que define muitas vitórias em um MOBA é a escolha correta dos personagens. Existem diversas composições de time que podem ser erradas em determinadas situações, isso vai depender unicamente do time inimigo já que o o mapa em si não muda.
(Costa et, al . 2019) fazem exatamente isso, um sistema de recomendação de composições usando um algoritmo genético como base para as escolhas. Esse algoritmo tenta criar subsistemas à partir do banco de dados e dar como output as melhores opções, nesse caso os melhores campeões para determinada partida.
Isso é de extrema importância, já que o jogo tem 157 campeões em que somente 10 vão em cada partida, 5 de cada lado. O Número de composições é bem alto, saber quais escolher na hora certa na Seleção de Campeões, é muito difícil em lanes que possuem uma variedade maior, como mid e jungle.
É relevante citar que esse algoritmo não é exatamente de IA, embora entre no nosso contexto.
(Smit, 2019) tem como foco criar um sistema de recomendação de itens, eles usam o modelo chamado Multi-Layer Perceptron (MLP)como base, que é bem simples comparado a outros em IA, nesse caso usando MLPClassifier no Sklearn.
Foram usados outros algoritmos usando o Sklearn como base, são eles: Random Forest (Muito conhecido e usado em várias áreas da ciência), Gradient Boosting, e Extratrees, mas o MLP foi o melhor.
Eles treinaram o sistema para entender qual seriam os melhores itens em determinadas situações se baseando na necessidade do personagem no game.
Um Jogo considerado Esporte
Não subestime essas aplicações, principalmente as de composições que tem aplicações práticas em partidas no nível competitivo. Coachs de League of Legends e outros jogos se beneficiariam e muito se eles superassem em geral estatisticamente humanos nessa simples tarefa.
Como disse antes, a escolha de campeões é fundamental para a vitória nesse MOBA, hoje mesmo eu perdi por escolher o personagem errado na Seleção de Campeões. Escolhi Caitlyn como first pick e acabei me dando mal contra um Ezreal e Yumi que fizeram uma pressão enorme na nossa composição, que tinha uma Karma do meu lado.
Sim saber jogar é importante, mas se o seu adversário é do seu nível, a composição vai fazer uma diferença brutal na vitória, que no contexto competitivo pode valer milhões de dólares em patrocínios e outras questões esportivas que valem muita grana.
Outra aplicação prática para times profissionais é treinar os seus jogadores contra Super Bots como o do AlphaStar e OpenAI five nos seus respectivos jogos, um no Lol faria uma diferença enorme no aprendizado de novas mecânicas de jogo e escolhas na composição de personagens que mudariam o META atual do game.
Referências:
- Vinyals, Oriol et al. “Grandmaster level in StarCraft II using multi-agent reinforcement learning.” Nature (2019): 1–5.
- Berner, Christopher et al. “Dota 2 with Large Scale Deep Reinforcement Learning.” ArXiv abs/1912.06680 (2019): n. pag.
- Silva, V.D., & Chaimowicz, L. (2017). A Tutor Agent for MOBA Games. ArXiv, abs/1706.02832.
- Redmon, Joseph et al. “You Only Look Once: Unified, Real-Time Object Detection.” 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2016): 779–788.
- Struckmeier, Oliver. LeagueAI: Improving object detector performance and flexibility throughautomatically generated training data and domain randomization, 2019. arXiv:1905.13546.
- Hochreiter and Schmidhuber, Long Short-Term Memory, Neural Computation 9(8):1735{1780, 1997.
- F. A. Gers, J. Schmidhuber and F. Cummins, “Learning to forget: continual prediction with LSTM,” 1999 Ninth International Conference on Artificial Neural Networks ICANN 99. (Conf. Publ. №470), 1999, pp. 850–855 vol.2, doi: 10.1049/cp:19991218.
- Greff, K., Srivastava, R.K., Koutník, J., Steunebrink, B.R., & Schmidhuber, J. (2017). LSTM: A Search Space Odyssey. IEEE Transactions on Neural Networks and Learning Systems, 28, 2222–2232.
- Lohokare, A., Shah, A., & Zyda, M. (2020). Deep Learning Bot for League of Legends. Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, 16(1), 322–324.
- Costa, Lincoln Magalhães et al. “An Approach for Team Composition in League of Legends using Genetic Algorithm.” 2019 18th Brazilian Symposium on Computer Games and Digital Entertainment (SBGames) (2019): 52–61.
- Smit, “A machine learning approach for recommending items in League of Legends.” (2019).