Estou construindo um aplicativo de xadrez que terá um sistema de classificação Elo.
Seria mais apropriado atualizar a classificação do jogador com base na classificação no início do jogo ou no final do jogo?
Por exemplo, o jogador A (1600) joga contra o jogador B (1700) e levou uma semana para concluir o jogo (xadrez por correspondência). Durante esta semana, o Jogador A venceu alguns outros jogos e sua classificação se tornou 1650. O Jogador B perdeu alguns jogos e sua classificação se tornou 1680. Agora, o jogo entre o Jogador A e o Jogador B termina.
Devo atualizar as classificações como se:
- 1600 jogou contra 1700 ou
- 1650 pago contra 1680, ou
- algo mais
O que seria mais apropriado e por quê?
Eu usaria a opção 2 por vários motivos. Talvez o mais importante seja o potencial de abuso da opção 1.
Dois jogadores começam no mesmo nível no sistema USCF ou FIDE. Eles jogam uma partida longa com um jogador marcando a grande maioria dos pontos. Eventualmente, as classificações estabilizarão em torno do perdedor (início-400) e do vencedor (início + 400).
Na opção 1, um jogador de 2000 pode iniciar 100 jogos contra um amigo com classificação semelhante, vencer todos eles e, de repente, ser a pessoa com a classificação mais alta no site, com mais de 3000. Entre outras coisas, isso fará com que seu site fique ruim. O jogador que perdeu cairá abaixo de 1000, mas esses pontos são facilmente recuperados, principalmente se ele iniciar 100 jogos contra 1200 jogadores.
A opção 2 é muito mais estável. É usado por todos os principais sites de correspondência que eu conheço (chess.com, redhotpawn etc.)
Editar: Mais cenários. Um jogador de 1800 aceita o desafio de 800. Um mês depois, o antigo 800 está em 1700 e vence o 1800. Quando o 1800 renuncia, ele perde o máximo, em vez do que teria perdido com a verdadeira força de seu oponente.
Um jogador com força de 2000, através de alguma magia negra, adquire uma classificação de 1200. Eles iniciam um monte de jogos contra 1400 e vencem perto de todos eles. A década de 1400 será universalmente desencantada por ter que perder mais de 20 pontos para esse canalha.
fonte
Nem é "correto". Você precisa considerar os efeitos de qualquer estratégia e determinar o que é certo para seu aplicativo . Pessoalmente, eu acho que você deve sempre planejar para o seu aplicativo a ser popular - e uma vez que é popular, as pessoas vão tentar jogo qualquer sistema que você colocar no lugar. Portanto, é necessário considerar os casos de abuso em cada cenário, além de como o sistema atende usuários novos e estabelecidos e decidir quais fatores do sistema são mais importantes para você.
É claro que em cada sistema, você tem uma ampla gama de opções para a implementação real, o que pode ajudar a aprimorar ou atenuar os fatores descritos abaixo, mas vou pular tudo isso, pois não é o que você perguntou.
Eu acho que a pergunta como está é um pouco baseada em opinião para ser respondida definitivamente, então tudo o que vou fazer aqui é apresentar alguns dos principais pontos de cada sistema. Como eu disse, você decide o que é importante para você e sua base de usuários.
Cálculo usando classificações iniciais
Nesse sistema, o principal caso de abuso que você precisa observar é alguém iniciando uma centena de jogos ao mesmo tempo contra uma conta falsa (ou várias), para vencer todos eles e aumentar sua classificação. Isso é razoavelmente detectável e fácil de projetar (na verdade, o sistema Elo já contém algumas restrições a essa manipulação), mas você precisa ficar atento.
A desvantagem desse sistema é que os novos jogadores terão classificações muito instáveis por um tempo e levarão algum tempo para atingir sua verdadeira classificação. Muitos sistemas já lidam com isso aumentando enormemente o fator K para novos jogadores, de modo que suas classificações mudam muito rapidamente nos primeiros 20 a 50 jogos.
Por outro lado, digamos que você tenha um jogador estabelecido com uma classificação alta (por exemplo, 1900), contra um novo jogador com uma classificação provisória mais baixa (por exemplo, 1200). Se a verdadeira força do novo jogador for realmente de mais de 2000, o jogador estabelecido poderá perder muito mais pontos por uma perda (1900 x 1200) do que teria se a pontuação fosse calculada usando as pontuações mais recentes. Obviamente, se o novo jogador estiver jogando apenas contra jogadores de alto nível, alguém terá que pagar a conta, independentemente do sistema que você estiver usando.
Cálculo usando classificações atuais
No sistema de classificações mais recentes, é provável que o principal caso de abuso seja o fato de as pessoas arrastarem jogos ou renunciarem prematuramente a eles, a fim de tirar proveito de quedas ou picos nas classificações de seus oponentes. Por exemplo, se eu estiver em uma sequência de derrotas, para que eu esteja abaixo da minha média de classificação, esse sistema realmente me incentivará a renunciar imediatamente a todos os outros jogos em que não estou ganhando , porque perderei menos agora, renunciando a todos de uma só vez enquanto minha classificação já está baixa, do que faria se esperasse até que minha classificação se recuperasse. Como alternativa, se a classificação do meu oponente cair enquanto o jogo progride, tenho um forte incentivo para que o jogo dure o maior tempo possívelem tempo real, não importa se estou ganhando ou perdendo - porque, de qualquer maneira, quando a classificação do meu oponente se recuperar, vou sair melhor. Esse tipo de jogo do sistema é muito mais difícil de detectar de forma conclusiva.
No entanto, como outros salientaram, os resultados individuais são mais precisos e, portanto, as classificações das pessoas convergem mais rapidamente. Você também diminuirá o efeito do jogo jogado por um 1200 provisório contra um 1900 estabelecido, embora pessoalmente eu ache que isso não seja um grande negócio - jogadores estabelecidos, na minha experiência, não se importam tanto com classificações temporárias perdas como os jogadores mais novos.
fonte
Se você estivesse modelando após o sistema da USCF, estaria olhando para o cenário 2. 1650 jogou contra 1680. Eu mesmo experimentei isso no sistema de classificação da USCF em que participei de um torneio da liga de 10 semanas com a classificação de 1953. E joguei na quarta-feira jogo noturno na minha área por volta da semana 6 e perdi o jogo e minha classificação se tornou 1929. Após a 10ª semana, minha classificação da USCF mostrou meu aumento entre 1929 => 1995 e não 1953 => xex => y.
fonte
A maneira mais correta seria usar a classificação inicial. Por quê? Porque essa foi a classificação que eles concordaram em iniciar a partida e, sabendo o que ganhariam ou perderiam, decidiram iniciá-la, depois de avaliados o risco versus recompensa. Então eu acho que a classificação inicial dos dois jogadores é a melhor solução.
fonte