Fiestas LAN
- Durante 16 años, hemos organizado una fiesta LAN cada año con amigos.
- La fiesta dura 4-5 días y pueden participar hasta 12 personas.
- Principalmente jugamos Dota 2, pero también disfrutamos otros juegos como Counter-Strike y Warcraft 3.
- Como era difícil elegir los equipos, terminamos desarrollando un sistema automatizado.
Dota 2
- Dota 2 se juega en formato 5v5, y los equipos desequilibrados le quitan diversión a la partida.
- Hay una gran diferencia de habilidad entre los participantes, así que elegir equipos es complicado.
Método para elegir equipos
- Se usaba un sistema en el que dos líderes elegían jugadores por turnos.
- Pero este método tomaba mucho tiempo y solía producir equipos parecidos, lo que se volvía aburrido.
Problemas de elegir equipos manualmente
- Toma mucho tiempo y se vuelve aburrido.
- Con frecuencia se forman equipos parecidos.
- Nadie quiere asumir el rol de líder.
- A menudo se forman equipos desequilibrados.
Resolverlo con código
- Después de recopilar datos, se generaron equipos automáticamente en Colab usando un sistema de rating Elo.
- Cada jugador empieza con 1000 puntos Elo; gana 20 puntos al vencer y pierde 20 puntos al perder.
Mejora 1: pasar varias veces por los datos
- En el sistema Elo, si derrotas a un jugador con Elo más alto, ganas más puntos.
- El Elo se calcula pasando varias veces por los datos.
Mejora 2: convertirlo en algo parecido a un modelo de ML
- Se usa Elo como modelo para predecir la probabilidad de victoria de un equipo.
- Se define una función de pérdida L2 y se optimiza el modelo mediante backpropagation.
Mejora 3: volver probabilísticos los resultados históricos
- Para evitar el overfitting, la probabilidad de victoria en partidas históricas se fija en 75% o 95%.
- Así, el modelo puede generalizar en lugar de memorizar todas las partidas.
Resultado
- El nuevo sistema puede predecir la probabilidad de victoria incluso con tamaños de equipo desequilibrados.
- Ya está lista la primera alineación para la próxima fiesta LAN.
Aún no hay comentarios.