- Mié Ago 09, 2017 7:01 pm
#197875
Buenas tardes a todos,
Soy relativamente nuevo en el foro pero llevo jugando Smash un par de años. Ahora que estoy por aquí, y tras ver varias clasificaciones de regiones, y comunidades, veo que siempre hay alguien que pregunta por qué A está en puesto tal y no en el cual, o también que a veces las condiciones para aparecer en el ránking se rompen por incluir a algún jugador que merece estar pero no las cumple exactamente.
Por ello, la idea sería hacer un sistema de puntuación, tipo ELO, como en el ajedrez, que permita rankear a los jugadores de forma automática y evitar problemas de rankeo, así como evitar tener que poner torneos imprescindibles para entrar a tal o cual ránking.
Se puede utilizar un sistema ya existente, como el propio ELO para ajedrez, por supuesto que sí. Sin embargo, creo que el sistema es modificable para tratar de adaptarlo al hecho de que Smash cada región tiene su comunidad y está todo bastante descentralizado. Por ello, he decidido crear un sistema basado en ELO que permite rankear a los jugadores teniendo un poco más en cuenta las particularidades de Smash.
Para estar más seguro de que el sistema funciona, he hecho simulaciones de torneos (2 años, un total de 20 torneos en el país a lo largo del año, con jugadores de diferentes skills, aleatoriedad, etc etc). En la simulación los resultados son prometedores. Por supuesto, que en el papel funcione y que en la simulación funcione no quiere decir que en la realidad funcione, pero cuantas más garantías mejor.
Disclaimer: esto es una paranoia mental mía, así que puede funcionar o no. Eso sí, soy físico, así que estoy cualificado para las paranoias mentales que incluyen matemáticas. Si os gusta la idea, no dudéis en señalar TODOS los fallos o problemas que le encontréis para ver si funciona.
Si no, al menos igual se puede adoptar con modificaciones pequeñas el ELO normal.
Para los interesados en todos los detalles sobre la simulación y las fórmulas que uso para calcular el ELO os dejo este pdf.
También es importante que leáis las FAQ del sistema.
Descripción rápida.
El sistema otorga una puntuación a dos cosas:
1) A los jugadores. La puntuación mínima es 50, y de ahí se puede ir subiendo.
2) A los torneos. La puntuación otorgada es una medida del prestigio del torneo, y está entre 0 y 1000.
¿Cómo funciona?
Se calcula el prestigio del torneo mediante el número y el ELO promedio de los participantes. Cuanta más gente participe o mejores sean, más prestigio tendrá.
Los jugadores ganan ELO dependiendo de su clasificación en el torneo. El ELO se suma a su puntuación actual. Torneos más prestigiosos otorgan más ELO, esto es, quedar primero en un torneo de prestigio 900 es mejor que quedar primero en un torneo de prestigio 500.
En los torneos que son sagas (como Tech Republic, que ha habido 1,2 y ahora el 3), el ELO se mantiene hasta la próxima edición, y luego es sustituido por el nuevo resultado. Es decir, si tienes 60 puntos de ELO y en el Tech Republic 2 ganaste 5 puntos, y ahora vas al TR3 y ganas 7, tu nuevo ELO es 60 - 5+ 7= 62.
Si el torneo no incluye nuevas sagas, al año siguiente el ELO obtenido en él se elimina.
FAQ
¿Será el ELO buen indicador para la habilidad de un jugador?
Los torneos simulados parecen indicar que sí. Los jugadores de mayor skill son los que tienen mayor ELO, con una correlación media de 0.85 tras dos temporadas usando el sistema. Podéis ver una gráfica en el PDF que he dejado anteriormente.
¿Cómo se inicia el sistema?
Todos los jugadores empiezan con la misma cantidad de ELO, y poco a poco se irá estabilizando. Tardará un tiempo en estabilizarse del todo, que según las simulaciones, ronda las 2-4 temporadas. Sin embargo, las simulaciones toman los participantes del torneo aleatoriamente, cosa que en la realidad no pasa y podría acelerar esta convergencia.
¡Aún así, eso es mucho tiempo de convergencia!
Sí, efectivamente, pero hay otra solución. Si las comunidades aportan datos de torneos anteriores, es posible iniciar el sistema de ELO usando datos de estos torneos, para que desde el primer momento haya una clasificación ELO. Eso no solo será útil para evitar confusiones al principio, también acelerará la convergencia del sistema.
También será útil para tratar de ajustar un poco los multiplicadores que aparecen, para que el rango de prestigios y ELOs sea amplio. Es decir, no queremos que todos los torneos de España tengan valores entre 995 y 1000 o que siendo el mínimo de ELO una puntuación de 50 el mejor de España tenga 50.84. Esto se puede ajustar con los valores numéricos del modelo y, si se pueden ajustar desde el principio, mejor.
¿La clasificación ELO eliminará los ránkings "convencionales"?
¡No, en absoluto! Las comunidades son totalmente libres de continuar realizando los ránkings de la forma que les parezca mejor. La clasificación ELO es una clasificación paralela: por ejemplo, en el caso del fútbol, las selecciones tienen el ránking de la FIFA y el ránking por ELO, y ambos son diferentes.
Eso sí, los dos ránkings son muy parecidos en las primeras posiciones, y esto sería deseable para nuestro sistema de ELO.
¿Qué pasa si el sistema de ELO no funciona?
Bueno, si está claro cuál es el problema del sistema, se puede ir modificando. Sin embargo, si no funciona en absoluto, se puede descartar por completo el modelo. Por eso insisto en que las comunidades pueden seguir elaborando ránkings propios. Mientras el ELO esté en pruebas, esto es más que recomendable.
¿Qué nivel de centralización requiere este sistema?
En principio, ninguna: una vez finalizado el torneo, el TO, con la clasificación en mano, puede calcular el nuevo ELO de los participantes... y así de sencillo.
Sin embargo, para más seguridad y un control del ránking nacional estaría bien tener el sistema centralizado; esto requiere el apoyo de Smash Bros Spain. En este caso mi propuesta sería utilizar una arquitectura cliente-servidor en la que el TO local envíe una petición de actualizacióin de ELO a SBS. La petición debe incluir dos partes:
- Inscripción del torneo: se debe informar a SBS de la realización de un torneo. Esta petición de inscripción se acompañará de la publicidad oficial, que ha debido ser publicada en una fuente de Internet accesible (el foro de SBS, Facebook...). No hace falta hacer la inscripción en cuanto se haga la publicidad, se puede dejar un tiempo prudencial para que se vaya apuntando gente.
El prestigio estimado de un torneo debe ser público y actualizado con las nuevas inscripciones de jugadores. Si el torneo es una saga, debe aparecer el prestigio que obtuvo la edición anterior. SBS debe asegurar que el prestigio es visible en la publicidad.
- La clasificación final del torneo. Esta debe haber sido publicada de forma que los participantes hayan podido quejarse y corregir errores en la clasificación (por ejemplo, en smashl.gg o un post en el foro). Tras un tiempo prudencial tras la publicación de resultados, esta se introducirá en un software automático que calculará el nuevo ELO de los jugadores.
Desde el punto de vista técnico, una cosa que se podría hacer es programar un software cliente-servidor con la siguiente arquitectura:
- El TO rellena un formulario con los enlaces de publicidad del torneo, si es o no una nueva saga y el nombre del torneo. Pulsa en "enviar".
- SBS recibe la petición del TO. Asegura que está todo correcto y pulsa en aceptar.
- El TO ahora puede rellenar un formulario en el que hace la clasificación. Esto se hará tras esperar a quejas de jugadores. El formulario se envía a SBS junto con un enlace oficial de la publicación para comprobar que todo es correcto.
El ránking de ELO nacional estaría por tanto siempre actualizado y disponible en un servidor, y podría ser accesible en cualquier momento por cualquier jugador. El último cambio de ELO de cada jugador debería ser visible. Un software para calcular cambios de ELO según una clasificación debería estar disponible para cualquiera que quiera comprobar que todo está correcto.
¿Qué opciones tiene una comunidad para hinchar el ELO de sus jugadores de forma ilegal?
Esta pregunta uno se la hace para tratar de subsanar posibles sistemas de fraude, ya sea intencional o simplemente casual debido a las particularidades de alguna comunidad en concreto.
La única forma de subir el ELO de un jugador injustamente es que el torneo aumente su prestigio, y esto involucra a una comunidad completa, lo cual es complicado. Supongamos igualmente que se hace: el aumento del ELO de la comunidad completa irá subiendo poco a poco el prestigio de los siguientes torneos, de modo que al final estos torneos fraudulentos atraerán a tops, que ganarán a gran parte de la gente local y bajarán su ELO al mandarlos a lo más bajo del podio.
Por tanto, si se intenta subir el ELO injustamente, al final los torneos con suculento prestigio atraen a tops que reestablecerán el equilibrio natural a nivel local.
Por otro lado, hay una situación concreta que no requiere este mecanismo de ajuste natural y evita de entrada el inflamiento de ELO. SBS debe limitar el número de torneos locales que no sean orientados a sagas. Cada comunidad suele tener unos tops que ganan a menudo los torneos locales. Si una comunidad tiene un par de sagas, ganarán el ELO correspondiente a dos torneos de prestigio local. Si una comunidad realiza muchísimos torneos que no son sagas, empezarán a sumar ELO de forma indiscriminada, lo cual no interesa.
Por eso es importante que SBS reciba la publicidad del torneo y se asegure de que está disponible para todos los jugadores: para evitar inflamiento por organización excesiva de torneos, así como para conseguir que una comunidad con ELO inflado atraiga tops que reduzcan el ELO medio y restablezcan el orden.
¿Fomenta este sistema ir a más torneos en nuevas comunidades?
¡Sí! El ELO se va sumando con cada nuevo torneo que participes. Incluso quedando el último del torneo, mejoras tu ELO, aunque sea un poquito. Si quieres ser mejor, tienes que participar en muchos torneos. Si puedes ganar en torneos de prestigio, tu ELO subirá como la espuma.
¿Cómo aumento el prestigio de mis torneos para que venga gente?
Primero, tratando de hacer buena publicidad, dando una buena venue, buen premio, buen rollo... lo típico que haces para que tu torneo sea grande. En esas condiciones, su prestigio aumentará, atrayendo a tops.
¿Es posible medir el rendimiento de una comunidad completa con este sistema?
En principio sí, usando medidas como el ELO promedio de la comunidad de jugadores. Si quieres que tu comunidad prospere, sus miembros deben viajar fuera, ganar torneos en otras comunidades, y subir el ELO medio.
No hace falta que todos sus miembros viajen: si un miembro de Smash Granada gana el Tech Republic 3, de prestigio bastante alto, y vuelve, el ELO promedio de nuestra comunidad habrá aumentado un poco gracias al aumento de ELO de este miembro. El próximo torneo local en Granada tendrá un poco más de prestigio, debido a este aumento del ELO promedio, de modo que todos los miembros de la comunidad se beneficiarán de un (pequeñísimo) aumento en la puntuación al final del torneo local.
Creo que tu sistema tiene algún problema que no aparece mencionado por ninguna parte y es importante.
No dudes en decírmelo por aquí o escribirme por PM. Toda crítica para mejorar el sistema es bien recibida. Lo único que pido es que razonéis vuestra crítica correctamente para poder ver bien dónde está el problema y tratar de arreglarlo.
Creo que la idea del ELO es buena, pero el sistema en sí le veo demasiados problemas.
También es razonable. Soy de la opinión de que tener un buen sistema de ELO beneficiaría a la comunidad Smash. Si veis que este es inadecuado y no es subsanable, y que por ejemplo el ELO estándar del ajedrez es mejor, o cualquiera otra idea que se os ocurra, planteadla bien explicada en otros posts.
Puedo incluso proporcionaros el código de simulación de torneos que he usado o bien hacer yo mismo las simulaciones de vuestro sistema, para ver cuáles son las diferencias con este sistema. Una vez hubiera varias opciones, sería cuestión de discutir ventajas y desventajas de cada una y escoger la mejor.
*****
Pues esto es todo. Miradlo bien, y espero vuestras opiniones. ¿Es buena idea tener un sistema de ELO? ¿Creéis que esta modificación merece la pena? ¿Alguna idea para mejorarla?
Y gracias por leer el post tan largo
Soy relativamente nuevo en el foro pero llevo jugando Smash un par de años. Ahora que estoy por aquí, y tras ver varias clasificaciones de regiones, y comunidades, veo que siempre hay alguien que pregunta por qué A está en puesto tal y no en el cual, o también que a veces las condiciones para aparecer en el ránking se rompen por incluir a algún jugador que merece estar pero no las cumple exactamente.
Por ello, la idea sería hacer un sistema de puntuación, tipo ELO, como en el ajedrez, que permita rankear a los jugadores de forma automática y evitar problemas de rankeo, así como evitar tener que poner torneos imprescindibles para entrar a tal o cual ránking.
Se puede utilizar un sistema ya existente, como el propio ELO para ajedrez, por supuesto que sí. Sin embargo, creo que el sistema es modificable para tratar de adaptarlo al hecho de que Smash cada región tiene su comunidad y está todo bastante descentralizado. Por ello, he decidido crear un sistema basado en ELO que permite rankear a los jugadores teniendo un poco más en cuenta las particularidades de Smash.
Para estar más seguro de que el sistema funciona, he hecho simulaciones de torneos (2 años, un total de 20 torneos en el país a lo largo del año, con jugadores de diferentes skills, aleatoriedad, etc etc). En la simulación los resultados son prometedores. Por supuesto, que en el papel funcione y que en la simulación funcione no quiere decir que en la realidad funcione, pero cuantas más garantías mejor.
Disclaimer: esto es una paranoia mental mía, así que puede funcionar o no. Eso sí, soy físico, así que estoy cualificado para las paranoias mentales que incluyen matemáticas. Si os gusta la idea, no dudéis en señalar TODOS los fallos o problemas que le encontréis para ver si funciona.
Si no, al menos igual se puede adoptar con modificaciones pequeñas el ELO normal.
Para los interesados en todos los detalles sobre la simulación y las fórmulas que uso para calcular el ELO os dejo este pdf.
También es importante que leáis las FAQ del sistema.
Descripción rápida.
El sistema otorga una puntuación a dos cosas:
1) A los jugadores. La puntuación mínima es 50, y de ahí se puede ir subiendo.
2) A los torneos. La puntuación otorgada es una medida del prestigio del torneo, y está entre 0 y 1000.
¿Cómo funciona?
Se calcula el prestigio del torneo mediante el número y el ELO promedio de los participantes. Cuanta más gente participe o mejores sean, más prestigio tendrá.
Los jugadores ganan ELO dependiendo de su clasificación en el torneo. El ELO se suma a su puntuación actual. Torneos más prestigiosos otorgan más ELO, esto es, quedar primero en un torneo de prestigio 900 es mejor que quedar primero en un torneo de prestigio 500.
En los torneos que son sagas (como Tech Republic, que ha habido 1,2 y ahora el 3), el ELO se mantiene hasta la próxima edición, y luego es sustituido por el nuevo resultado. Es decir, si tienes 60 puntos de ELO y en el Tech Republic 2 ganaste 5 puntos, y ahora vas al TR3 y ganas 7, tu nuevo ELO es 60 - 5+ 7= 62.
Si el torneo no incluye nuevas sagas, al año siguiente el ELO obtenido en él se elimina.
FAQ
¿Será el ELO buen indicador para la habilidad de un jugador?
Los torneos simulados parecen indicar que sí. Los jugadores de mayor skill son los que tienen mayor ELO, con una correlación media de 0.85 tras dos temporadas usando el sistema. Podéis ver una gráfica en el PDF que he dejado anteriormente.
¿Cómo se inicia el sistema?
Todos los jugadores empiezan con la misma cantidad de ELO, y poco a poco se irá estabilizando. Tardará un tiempo en estabilizarse del todo, que según las simulaciones, ronda las 2-4 temporadas. Sin embargo, las simulaciones toman los participantes del torneo aleatoriamente, cosa que en la realidad no pasa y podría acelerar esta convergencia.
¡Aún así, eso es mucho tiempo de convergencia!
Sí, efectivamente, pero hay otra solución. Si las comunidades aportan datos de torneos anteriores, es posible iniciar el sistema de ELO usando datos de estos torneos, para que desde el primer momento haya una clasificación ELO. Eso no solo será útil para evitar confusiones al principio, también acelerará la convergencia del sistema.
También será útil para tratar de ajustar un poco los multiplicadores que aparecen, para que el rango de prestigios y ELOs sea amplio. Es decir, no queremos que todos los torneos de España tengan valores entre 995 y 1000 o que siendo el mínimo de ELO una puntuación de 50 el mejor de España tenga 50.84. Esto se puede ajustar con los valores numéricos del modelo y, si se pueden ajustar desde el principio, mejor.
¿La clasificación ELO eliminará los ránkings "convencionales"?
¡No, en absoluto! Las comunidades son totalmente libres de continuar realizando los ránkings de la forma que les parezca mejor. La clasificación ELO es una clasificación paralela: por ejemplo, en el caso del fútbol, las selecciones tienen el ránking de la FIFA y el ránking por ELO, y ambos son diferentes.
Eso sí, los dos ránkings son muy parecidos en las primeras posiciones, y esto sería deseable para nuestro sistema de ELO.
¿Qué pasa si el sistema de ELO no funciona?
Bueno, si está claro cuál es el problema del sistema, se puede ir modificando. Sin embargo, si no funciona en absoluto, se puede descartar por completo el modelo. Por eso insisto en que las comunidades pueden seguir elaborando ránkings propios. Mientras el ELO esté en pruebas, esto es más que recomendable.
¿Qué nivel de centralización requiere este sistema?
En principio, ninguna: una vez finalizado el torneo, el TO, con la clasificación en mano, puede calcular el nuevo ELO de los participantes... y así de sencillo.
Sin embargo, para más seguridad y un control del ránking nacional estaría bien tener el sistema centralizado; esto requiere el apoyo de Smash Bros Spain. En este caso mi propuesta sería utilizar una arquitectura cliente-servidor en la que el TO local envíe una petición de actualizacióin de ELO a SBS. La petición debe incluir dos partes:
- Inscripción del torneo: se debe informar a SBS de la realización de un torneo. Esta petición de inscripción se acompañará de la publicidad oficial, que ha debido ser publicada en una fuente de Internet accesible (el foro de SBS, Facebook...). No hace falta hacer la inscripción en cuanto se haga la publicidad, se puede dejar un tiempo prudencial para que se vaya apuntando gente.
El prestigio estimado de un torneo debe ser público y actualizado con las nuevas inscripciones de jugadores. Si el torneo es una saga, debe aparecer el prestigio que obtuvo la edición anterior. SBS debe asegurar que el prestigio es visible en la publicidad.
- La clasificación final del torneo. Esta debe haber sido publicada de forma que los participantes hayan podido quejarse y corregir errores en la clasificación (por ejemplo, en smashl.gg o un post en el foro). Tras un tiempo prudencial tras la publicación de resultados, esta se introducirá en un software automático que calculará el nuevo ELO de los jugadores.
Desde el punto de vista técnico, una cosa que se podría hacer es programar un software cliente-servidor con la siguiente arquitectura:
- El TO rellena un formulario con los enlaces de publicidad del torneo, si es o no una nueva saga y el nombre del torneo. Pulsa en "enviar".
- SBS recibe la petición del TO. Asegura que está todo correcto y pulsa en aceptar.
- El TO ahora puede rellenar un formulario en el que hace la clasificación. Esto se hará tras esperar a quejas de jugadores. El formulario se envía a SBS junto con un enlace oficial de la publicación para comprobar que todo es correcto.
El ránking de ELO nacional estaría por tanto siempre actualizado y disponible en un servidor, y podría ser accesible en cualquier momento por cualquier jugador. El último cambio de ELO de cada jugador debería ser visible. Un software para calcular cambios de ELO según una clasificación debería estar disponible para cualquiera que quiera comprobar que todo está correcto.
¿Qué opciones tiene una comunidad para hinchar el ELO de sus jugadores de forma ilegal?
Esta pregunta uno se la hace para tratar de subsanar posibles sistemas de fraude, ya sea intencional o simplemente casual debido a las particularidades de alguna comunidad en concreto.
La única forma de subir el ELO de un jugador injustamente es que el torneo aumente su prestigio, y esto involucra a una comunidad completa, lo cual es complicado. Supongamos igualmente que se hace: el aumento del ELO de la comunidad completa irá subiendo poco a poco el prestigio de los siguientes torneos, de modo que al final estos torneos fraudulentos atraerán a tops, que ganarán a gran parte de la gente local y bajarán su ELO al mandarlos a lo más bajo del podio.
Por tanto, si se intenta subir el ELO injustamente, al final los torneos con suculento prestigio atraen a tops que reestablecerán el equilibrio natural a nivel local.
Por otro lado, hay una situación concreta que no requiere este mecanismo de ajuste natural y evita de entrada el inflamiento de ELO. SBS debe limitar el número de torneos locales que no sean orientados a sagas. Cada comunidad suele tener unos tops que ganan a menudo los torneos locales. Si una comunidad tiene un par de sagas, ganarán el ELO correspondiente a dos torneos de prestigio local. Si una comunidad realiza muchísimos torneos que no son sagas, empezarán a sumar ELO de forma indiscriminada, lo cual no interesa.
Por eso es importante que SBS reciba la publicidad del torneo y se asegure de que está disponible para todos los jugadores: para evitar inflamiento por organización excesiva de torneos, así como para conseguir que una comunidad con ELO inflado atraiga tops que reduzcan el ELO medio y restablezcan el orden.
¿Fomenta este sistema ir a más torneos en nuevas comunidades?
¡Sí! El ELO se va sumando con cada nuevo torneo que participes. Incluso quedando el último del torneo, mejoras tu ELO, aunque sea un poquito. Si quieres ser mejor, tienes que participar en muchos torneos. Si puedes ganar en torneos de prestigio, tu ELO subirá como la espuma.
¿Cómo aumento el prestigio de mis torneos para que venga gente?
Primero, tratando de hacer buena publicidad, dando una buena venue, buen premio, buen rollo... lo típico que haces para que tu torneo sea grande. En esas condiciones, su prestigio aumentará, atrayendo a tops.
¿Es posible medir el rendimiento de una comunidad completa con este sistema?
En principio sí, usando medidas como el ELO promedio de la comunidad de jugadores. Si quieres que tu comunidad prospere, sus miembros deben viajar fuera, ganar torneos en otras comunidades, y subir el ELO medio.
No hace falta que todos sus miembros viajen: si un miembro de Smash Granada gana el Tech Republic 3, de prestigio bastante alto, y vuelve, el ELO promedio de nuestra comunidad habrá aumentado un poco gracias al aumento de ELO de este miembro. El próximo torneo local en Granada tendrá un poco más de prestigio, debido a este aumento del ELO promedio, de modo que todos los miembros de la comunidad se beneficiarán de un (pequeñísimo) aumento en la puntuación al final del torneo local.
Creo que tu sistema tiene algún problema que no aparece mencionado por ninguna parte y es importante.
No dudes en decírmelo por aquí o escribirme por PM. Toda crítica para mejorar el sistema es bien recibida. Lo único que pido es que razonéis vuestra crítica correctamente para poder ver bien dónde está el problema y tratar de arreglarlo.
Creo que la idea del ELO es buena, pero el sistema en sí le veo demasiados problemas.
También es razonable. Soy de la opinión de que tener un buen sistema de ELO beneficiaría a la comunidad Smash. Si veis que este es inadecuado y no es subsanable, y que por ejemplo el ELO estándar del ajedrez es mejor, o cualquiera otra idea que se os ocurra, planteadla bien explicada en otros posts.
Puedo incluso proporcionaros el código de simulación de torneos que he usado o bien hacer yo mismo las simulaciones de vuestro sistema, para ver cuáles son las diferencias con este sistema. Una vez hubiera varias opciones, sería cuestión de discutir ventajas y desventajas de cada una y escoger la mejor.
*****
Pues esto es todo. Miradlo bien, y espero vuestras opiniones. ¿Es buena idea tener un sistema de ELO? ¿Creéis que esta modificación merece la pena? ¿Alguna idea para mejorarla?
Y gracias por leer el post tan largo