Como proteger seu atirador on-line em tempo real contra possíveis robôs

14

Estou procurando criar um jogo multiplayer de cima para baixo. Enquanto leio sobre diferentes tópicos, posso vê-los. Tenho alguns desafios reais pela frente, mas estou pronto para isso.

Uma coisa que não consigo entender é como devo proteger o jogo das pessoas que tentam criar bots?

O que eu quero dizer é que, até onde eu entendi, é impossível proteger o tráfego da rede de uma maneira que os jogadores não possam criar programas que escutem o que está acontecendo e o entendam.

Então, o que me preocupa é que as pessoas possam criar bots que escutem a localização atual dos jogadores rivais e enviar comunicações que imitem como se o jogador estivesse atirando no local "perfeito" exato para vencer a partida.

Então, que tipo de técnicas são usadas para proteger jogos em tempo real de tais bots?

Também gostaria de mencionar que tentei procurar discussões (pois isso parece algo com o qual muitas pessoas lutam), mas não conseguiu encontrar nada sobre isso especificamente, apenas como parte de perguntas mais amplas sobre redes em jogos em tempo real . Se eu deveria ter olhado mais, sinta-se à vontade para me colocar no meu lugar :)

Zaky German
fonte
Punkbuster, hehe .. Há uma razão para que exista um aplicativo de terceiros que detecte aplicativos e alterações de terceiros :) #
James James
Por que você está preocupado se as pessoas criam bots? Talvez você possa contornar isso, então isso simplesmente não é um problema.
Beska
@James Punkbuster é horrível. Muitas outras pessoas tiveram experiências ruins tentando jogar novos jogos quando são lançados. Seja constantemente chutado por algum erro punkbuster, não divertido.
AttackingHobo
@Beska: por mais legal que pareça, preciso convencer seriamente que os bots não destruirão o jogo para jogadores que não são bot. Tenho certeza de que um jogo poderia ser projetado onde os bots não arruinariam a experiência. Estou certo de que, para a maioria dos jogos multiplayer online, não é trivial tornar a mecânica do jogo à prova de bot.
Deft_code 18/03/11
@ AttackingHobo Tudo o que eu quis dizer é que existem empresas inteiras que não fazem nada além de tentar descobrir uma solução para esse problema. PunkBuster é apenas uma das peças mais conhecidas de software que as tentativas de fazer isso, bom ou mau :)
James

Respostas:

8

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.

deixa pra lá
fonte
1
Duvido que você tenha encontrado um cara com um bot mecânico. Era mais provável que um bot de software que emulasse um teclado de hardware para as entradas.
AttackingHobo
2
Não, bot mecânico real. O autor nos enviou fotos. Infelizmente, eles já foram excluídos do servidor (foi em 2007!), Então você terá que aceitar minha palavra.
Nevermind
Obrigado pela resposta. Suponho que a criptografia possa "elevar a fasquia" um pouco e proteger muitos hackers. Mas alguma criptografia de comunicação real seria prática em jogos de tempo crítico, como atiradores ou até MMO?
Zaky German
Nenhum dos jogos em que trabalhei usava criptografia em qualquer lugar, exceto a sequência de login, por isso não sei o quanto isso afeta o atraso. Depende do algoritmo de criptografia, eu acho.
Nevermind
2

Eu não esperaria que nenhum dos grandes jogadores falasse sobre o que eles fazem para proteger seus jogos. Quanto menos as pessoas souberem o que estão fazendo, mais difícil será para as pessoas resolverem o problema. Acho que parte do que o Steam faz é procurar certos aplicativos em execução que estão em uma lista negra.

Pessoalmente, eu tentaria criptografar e ofuscar a comunicação o máximo possível entre as máquinas de comunicação; talvez valha a pena ler sobre o modo como o https / ssl trabalha para obter algumas idéias. Se os hosts gerassem chaves públicas / privadas aleatórias e enviassem a parte pública apenas para outros clientes, algo não seria capaz de interceptar e alterar facilmente o conteúdo dos pacotes enviados, embora se você tiver acesso ao cliente máquina, então nada é completamente seguro.

Você também precisará garantir que o exe do cliente não seja violado.

Roger Perkins
fonte
1

Projete seu jogo para que o trabalho em equipe e as decisões inteligentes sejam mais importantes do que ser capaz de mirar perfeitamente. Torna-se exponencialmente mais difícil fazer bots decentes.

Tom Gullen
fonte
Eu acho que os jogos que dependem do trabalho em equipe e da preparação e os jogos que dependem de habilidades puras de contração têm seu lugar. Ainda assim, eu não acho que ninguém deve adaptar seus projeto opções de jogo para os obstáculos técnicos
Zaky alemão
@Zaky: Certa vez, prototipei um jogo no estilo de vermes, onde durante a morte súbita a tela se enchia lentamente com um fluido SPH. Pareceu muito legal até o jogo demorar até a morte. Eu acho que muitas decisões de design de jogos são realizadas por obstáculos técnicos.
Deft_code 18/03/11
@deft_code I design do jogo significou como na mecânica de jogo, não de design artística ou gráfica
Zaky alemão
Meu uso do SPH é tanto uma mecânica de jogo quanto a morte aquosa nos vermes. Acabei de mudar a maneira como a água interagia com o jogo.
Deft_code 18/03/11
0

E pergunte a si mesmo a pergunta mais importante sobre se vale a pena. Traidores e botters podem fazer duas coisas:

  1. destruir o jogo por si mesmos. Eles não podem jogar sem o bot, perdem rapidamente o interesse e saem porque não é divertido.
  2. destruir o jogo para os outros. Eles se tornam excessivamente poderosos com o bot, custando, assim, a você clientes. Isso geralmente é acompanhado por um único jogador controlando vários bots no mesmo computador físico (ou usa muito mais computadores do que se espera que um único jogador controle manualmente).

Os dois não são mutuamente exclusivos, é claro.

Normalmente, o maior problema é 3+ (como um ser humano pode, com o treinamento, usar 2 teclados ou outros dispositivos de entrada ao mesmo tempo, mas não mais porque ele tem apenas duas mãos) clientes dos mesmos endereços IP ou MAC (ou MAC) endereços) agindo em uníssono direto, executando comandos em milissegundos um do outro. Portanto, se você detectar, digamos, 5 clientes originários do mesmo endereço IP, todos dando comandos a uma taxa anormalmente alta e a uma coordenação anormalmente próxima, provavelmente encontrará o seu botter. Geralmente, isso será mais prejudicial em cenários de PvP em que esse exército de bot pode dominar um combate contra um número semelhante de toons controlados por humanos devido à sua maior coordenação e velocidade. Em cenários anteriores, normalmente há danos limitados no jogo (exceto pelo fato de permitir que uma pessoa treine vários toons para níveis altos mais rapidamente,

jwenting
fonte