Se as pessoas querem bot, eu não acho que você possa realmente pará-las.
É claro que você pode implementar muitas medidas que tornam a botagem mais ou menos dolorosa. Mas você só pode fazer muito antes que sua base de código se transforme em uma bagunça gigantesca que é um inferno para manter, propensa a erros e irrita usuários legítimos. Enquanto isso, os botters sempre encontrarão uma maneira de derrotar suas contramedidas:
- Há mais deles do que você
- Eles têm mais tempo livre em suas mãos (você precisa dividir o tempo entre o desenvolvimento real e a prova de bot, eles podem hackear o código bot o dia todo)
- À medida que você cria salvaguardas estranhas e desafiadoras, os autores dos bots serão ainda mais incentivados, porque é divertido quebrar sua proteção contra bots
- Se houver um mercado negro de pessoas lucrando comercialmente com bots, quanto mais você escrever um bot, mais valiosos os bots de trabalho se tornarão, assim você incentivará os bots
Você basicamente ficará preso em uma corrida armamentista com os botters e, com base na lógica ao longo dos pontos acima, assim como na minha experiência com esses jogos, você não será capaz de acompanhar.
Alguns desenvolvedores de jogos empregam medidas anti-trapaça extremamente agressivas: por exemplo, o Steam verifica a memória e o sistema de arquivos em busca de hacks, e os infratores podem ser punidos com a perda de contas no valor de centenas de dólares. No entanto, ainda existem bots e outros hacks para jogos Steam, e alguns deles funcionam até a metade do tempo. Ao contrário deles, você tem uma API aberta ao usuário e nenhum controle sobre o computador do usuário. É uma batalha difícil desde o início.
O problema que você está tentando resolver é essencialmente um teste de Turing: exceto que é um teste de Turing muito fácil, porque você não pode trapacear exigindo problemas difíceis de IA, como a linguagem. Não importa quantas heurísticas você crie, seria trivial para um botter adicionar um pouco de aleatoriedade à ação do bot para imitar quase exatamente um humano. Nem seria muito difícil ter o bot observando você jogar um pouco e aprender a cronometrar ações exatamente como você. Então, quando você bane o bot, o botter publica um enorme discurso no fórum sobre como ele é apenas um jogador dedicado (e talvez ele seja realmente um falso positivo) e seu público principal de jogadores hardcore se opõe a você.
Torne o jogo muito divertido de bot
A principal razão pela qual alguém usa um bot é porque existe uma parte do jogo que eles querem pular. Se eles gostassem do jogo e o achassem divertido, eles não teriam o bot jogando, eles jogariam eles mesmos.
Mas se o jogo é tão chato, por que jogá-lo? Presumivelmente, algumas partes do jogo são chatas e obrigatórias para chegar a partes divertidas. Por exemplo, nos MMOs, todo mundo adora subir de nível, mas ninguém quer matar 42.324 ratos venenosos para obter o XP. Então eles deixaram o bot triturar e aparecer para fazer a parte divertida.
Isso não é uma crítica a você ou ao seu jogo, mas claramente pelo menos alguns jogadores acham algumas partes do seu jogo tediosas. Você deve ver se consegue reduzir essas partes tediosas e tentar adicionar decisões mais difíceis e significativas: os bots não são bons em estratégia profunda ou pensamento lateral em comparação à inteligência humana e, além disso, os humanos gostam de tomar decisões difíceis no jogo.
Pela sua descrição, tenho a impressão de que este é um jogo de navegador semelhante ao Travian, onde há uma fila de compilação com uma única melhor ordem de compilação e determinadas tarefas de "manutenção" (como manter as operações agrícolas) que devem ser executadas. Você diz que não há conflito, mas em qualquer drama MMO e política mesquinha é inevitável (IMO é a principal atração), então eu tenho certeza que seus jogadores encontrarão maneiras de atacar. Com esses tipos de jogos, muito do tédio vem dessas tarefas de "manutenção" - o que os jogadores realmente querem fazer é fazer alianças e jogar o jogo da diplomacia com clãs rivais, a manutenção se torna uma espécie de imposto onde você precisa acordar até um alarme em horários estranhos para poder entrar nessa divertida parte diplomática. Então corte o tédio:
Infelizmente, essa abordagem nem sempre funciona. Nem todos os jogadores têm a mesma tolerância ao tédio ou o mesmo conceito de diversão. Você poderia ter um mecânico de destaque que 99% dos seus jogadores gostam, mas o 1% acha chato. E se o 1% começar a escrever bots, arruinando a diversão dos 99%? Mas, finalmente, é uma questão de grau. Você nunca pode remover completamente as bots, mas pode minimizar os danos.
Undercut botters
Muitos dos efeitos realmente negativos dos bots vêm de autores de bot que comercializam seu trabalho. Se este for o seu caso, você pode simplesmente competir com os bots. Muitos jogos online baseados em tempo real já possuem recursos premium que permitem pular o tempo e automação (como filas de criação estendidas). Isso equivale a um bot oficial sancionado pelo desenvolvedor. Se você os tiver, e os precificar adequadamente, os jogadores comprarão seu prêmio em vez de comprar bots. A boa notícia é que você é o responsável pela API e, portanto, sempre tem uma grande vantagem no desenvolvimento de automação de qualidade para seu próprio jogo; dessa vez, é uma batalha perdida para os botters.
Isso não elimina botters amadores ou pessoas que acham que seu prêmio não é um bom valor pelo dinheiro, então novamente a eficácia dessa abordagem depende da situação.
Procure-os manualmente
Como eu disse acima, o que você está fazendo é essencialmente um teste de Turing. Como a interação com humanos é famosa por ser um desafio difícil para o teste de Turing, você pode tentar aproveitá-lo.
Inspecione manualmente os jogadores de nível superior e verifique se há algo suspeito. Você pode até conseguir escapar ocasionalmente de maneiras restritas à sua imaginação, para ver se consegue enganar o bot a fazer algo que não faria.
Embora seja difícil escrever um algoritmo que detecte bots de maneira confiável, não é tão difícil para um ser humano aprender a identificá-los. Eu acho que muitos jogos de navegador usam essa estratégia, e pode ser bastante eficaz. A desvantagem é que você precisa fazer muito trabalho chato o tempo todo ou precisa pagar mestres de jogos para fazer patrulhas de bot regulares.