Existem duas abordagens para combater bots. Eles são proteção do lado do cliente e análise do lado do servidor.
A proteção do lado do cliente é a abordagem mais óbvia - força bruta, em certo sentido. Você faz todos os esforços para garantir que o cliente do jogo seja totalmente legítimo, não tenha sido violado e que nenhum outro programa o afete. Agora, este é um problema difícil e impossível de resolver completamente. Mas muitos jogos tentam e têm algum sucesso com esse método. Sei que existem algumas soluções prontas para a proteção do cliente e sugiro que você as procure. Implementar um você mesmo é uma tarefa assustadora.
Além de ser menos de 100% eficaz, a proteção do cliente tem a desvantagem de ser extremamente irritante para os seus jogadores. Geralmente, isso implica coisas como desativar a alternância de tarefas com a tecla alt-tab, programas antivírus etc.
A análise do lado do servidor é menos invasiva. Nesta abordagem, você tem algum código de servidor que analisa padrões no comportamento dos jogadores. Na maioria das vezes, os robôs jogam comprovadamente diferentes. Por exemplo, jogadores humanos têm um tempo variável entre as ações (como chutes), e dessa vez obedecem a uma distribuição em curva de sino. Os bots primitivos terão tempo constante ou distribuídos uniformemente por algum intervalo. Curiosidade: usando esse método, certa vez capturamos um jogador com um bot mecânico - um dispositivo inteligente que pressionava botões em seu teclado físico. Escusado será dizer que nenhuma quantidade de proteção do cliente pode capturar esse . Ainda assim, essa análise não é perfeita. Bots mais avançados enganarão seus sistemas e, quanto mais verificações você implementar, mais bots avançados se tornarão.
Para melhor proteção, você pode combinar os dois métodos. A proteção do cliente tornará mais difícil o desenvolvimento de bots, e a análise do servidor interromperá bots simples que foram desenvolvidos rapidamente. Mas o que você faz, você nunca pode parar completamente os bots. Bem, a menos que você envie seus representantes para a casa dos jogadores, para supervisionar o jogo deles e denunciar violações. (A propósito, isso não é inédito. Eu definitivamente li uma história sobre a empresa de pôquer online que envia pessoas para a casa de um jogador muito bem-sucedido, para confirmar que ele estava jogando legitimamente. Mas agora não consigo encontrá-la.)
Existem mais duas recomendações duvidosas para combater bots. Primeiro, criptografe o tráfego da sua rede. Eu não acho que isso vai funcionar. Com seu cliente nas mãos de um inimigo, o tráfego pode ser e será descriptografado ... ou seu próprio cliente será usado para criptografia. Por outro lado, a criptografia adiciona lag, e isso é muito ruim para um "atirador em tempo real". A segunda recomendação é "apenas projete seu jogo em torno disso". Embora isso pareça uma boa idéia, ainda não vi um único jogo que conseguiu isso.