Estoy usando el algoritmo ELO para clasificar a los jugadores en una competencia de pong en curso. La mayoría de los jugadores juegan todos los días, pero tenemos un jugador que no ha jugado en un mes. Mi algoritmo actualmente solo rastrea los puntajes en los últimos 30 días y, como resultado, este jugador está aumentando rápidamente en los rangos, a pesar de nunca haber jugado. Perdió un montón de sus primeros juegos, pero ganó la mayoría de sus últimos juegos, lo que significa que sus pérdidas están bajando de las listas y su resultado está aumentando como resultado.
Obviamente, mi plan para dejar los puntajes después de 30 días no está funcionando. ¿Qué otros métodos puedo usar para penalizar a los jugadores por no jugar a menudo?
Lo único que se me ocurrió hasta ahora es reducir los puntos en función del porcentaje que se basa en los días de inactividad (es decir, si un usuario no ha jugado en una semana, sus puntos solo valen el 70% de lo normal, y tendría que jugar X veces para volver al 100% de los puntos).
Sin embargo, esto parece demasiado arbitrario. ¿Alguien tiene mejores ideas o sugerencias para manejar jugadores inactivos en un entorno activo?
Gracias por adelantado.
fuente
Algoritmos como Elo y TrueSkill determinan la habilidad de un jugador en función del resultado de cada juego jugado, sin tener en cuenta el paso del tiempo. Sin embargo, ambos algoritmos vienen con un factor de "incertidumbre": en el caso de Elo, hay un nivel
K Factor
que generalmente se establece alto para los nuevos jugadores, de modo que su calificación de Elo convergerá rápidamente en su calificación de habilidad "verdadera". Después de un tiempo establecido o un número establecido de juegos,K Factor
normalmente se reduce, por lo que la calificación cambia menos entre juegos.Lo que está viendo es un comportamiento típico de Elo (dependiendo de su implementación de Elo): su jugador ha jugado menos juegos que sus competidores, lo que lo convierte en un "nuevo jugador" con un mayor
K Factor
; ¡ya que está ganando sus juegos, el algoritmo lo ve como un jugador mejor calificado y le otorga una clasificación más alta!Tenga en cuenta que los algoritmos de clasificación generalmente se usan solo para comparaciones entre jugadores, y no para determinar el resultado de las competiciones, dado su comportamiento. Dado que desea recompensar la participación, le recomendaría calificar a los jugadores en la competencia de otra manera. Algunas sugerencias:
Tenga en cuenta que ninguna de estas soluciones dará un resultado completamente "justo", ya que los jugadores que juegan más tendrán una puntuación más alta que los jugadores que no lo hacen. La única forma de garantizar la equidad es que los jugadores jueguen un número idéntico de juegos.
fuente
No sé sobre el algoritmo ELO, pero ¿qué tal si en lugar de penalizar a las personas que no juegan a menudo, recompensas a las personas que juegan a menudo? Por ejemplo, si hiciste tu puntaje algo como:
Entonces, las personas que juegan a menudo probablemente terminarían jugando más juegos y teniendo más oportunidades de lograr una puntuación más alta.
Y otra cosa que es posible que desee cambiar es evitar que la depuración de puntajes antiguos tenga un impacto en el puntaje total del jugador. Esa es la razón principal por la que ese jugador está subiendo en las filas (y también por qué eventualmente se caerá por completo de las listas).
Además, las personas que juegan seriamente por un tiempo y logran un gran historial, probablemente no estarán felices de saber que sus logros eventualmente se desvanecerán y desaparecerán. Ese sistema es seriamente desalentador.
Esto se soluciona fácilmente simplemente manteniendo un caché del "total de juegos jugados" y la "proporción de ganar / perder" de cada jugador, incluso después de eliminar los puntajes.
Con esa información, puede deducir fácilmente cuántas victorias y pérdidas tuvo el jugador y actualizarlas en consecuencia cada vez que juega de nuevo.
fuente