LAN party
- Há 16 anos, realizamos uma LAN party todos os anos com amigos.
- A festa dura de 4 a 5 dias, com participação de até 12 pessoas.
- Jogamos principalmente Dota 2, mas também curtimos vários outros jogos, como Counter-Strike e Warcraft 3.
- Como era difícil escolher os times, acabei desenvolvendo um sistema automatizado.
Dota 2
- Dota 2 é jogado em 5v5, e times desequilibrados deixam a partida menos divertida.
- Como a diferença de habilidade entre os participantes é grande, montar os times é difícil.
Como os times eram escolhidos
- Usávamos um sistema em que dois líderes escolhiam os jogadores alternadamente.
- Porém, esse método levava muito tempo e acabava ficando entediante, porque times parecidos eram formados com frequência.
Problemas da escolha manual de times
- Leva muito tempo e fica entediante.
- Times parecidos são formados com frequência.
- Ninguém quer assumir o papel de líder.
- Times desequilibrados são formados com frequência.
Resolvendo com código
- Depois de coletar os dados, os times passaram a ser gerados automaticamente no Colab usando um sistema de rating Elo.
- Cada jogador começa com 1000 pontos de Elo, ganha 20 pontos ao vencer e perde 20 pontos ao perder.
Melhoria 1: passar pelos dados várias vezes
- No sistema Elo, vencer um jogador com Elo mais alto rende mais pontos.
- O Elo é calculado passando pelos dados várias vezes.
Melhoria 2: transformar em algo parecido com um modelo de ML
- O Elo é usado como modelo para prever a probabilidade de vitória de um time.
- Uma função de perda L2 é definida, e o modelo é otimizado por meio de backpropagation.
Melhoria 3: transformar os resultados históricos em probabilísticos
- Para evitar overfitting, a probabilidade de vitória nos jogos históricos é definida em 75% ou 95%.
- Com isso, o modelo consegue generalizar sem memorizar todas as partidas.
Resultado
- O novo sistema consegue prever a probabilidade de vitória mesmo com tamanhos de time desequilibrados.
- A primeira escalação para a próxima LAN party está pronta.
Ainda não há comentários.