Anti-Cheat para questões e soluções de MMOs? [fechadas]

14

A maioria dos jogos on-line sofre com esse problema e existem algumas empresas de software por aí, mas recentemente, pelo que vi, muitas empresas estão tentando evitar que os programas criem seu próprio sistema (nevasca com diretor, aion com verificação própria etc.) ...) mas é um caso muito difícil de evitar tal ...

Só queria dizer que fiz outro tópico de pergunta como wiki da comunidade específico para postar aplicativos, e os recursos e as idéias por trás dessa pergunta aqui não são listá-los, mas sim saber mais sobre quais foram suas tentativas, problemas ao longo do caminho e possíveis soluções , parte de códigos, se aplicável, e assim por diante.

Que tipo de proteção vocês usam para (tentar) impedir tais atos:

  1. Software anti-fraude? (indique quais, por que e possíveis problemas que você enfrentou, por exemplo, aion parou de usar o GameGuard na fase beta devido a uma enorme quantidade de problemas de compatibilidade e reclamações de seus usuários)
  2. Seu próprio código? (que tipo de verificação você costuma executar para garantir que os jogadores de má fé, por exemplo, speedhack, verifique a nova localização em relação à velocidade + última localização, etc ...)
  3. Nenhum, eu não ligo? (algum motivo ou opinião pessoal que você gostaria de compartilhar?)

Algum trecho de código interessante relacionado ao problema que você deseja publicar?

Sinta-se à vontade para refazer meu texto meu inst inglês que ótimo? **

Prémio
fonte
1
Etiqueta feita. Se você espera que isso tenha uma grande quantidade de respostas, crie um wiki da comunidade. Isso permitirá que várias pessoas editem respostas individuais, em vez de pessoas que as reafirmam constantemente.
Jesse Dorsey
1
Para um exemplo de como isso pode ser benéfico. Verifique isto: gamedev.stackexchange.com/questions/480/…
Jesse Dorsey
Obrigado pelo comentário e pelos links, vou dar uma olhada agora e, no meu ponto de vista, esse tipo de pergunta para o desenvolvimento de jogos é um ponto muito bom para discutir, mas a maioria dos jogos de MMO que acredito, então não tenho certeza, também o comunidade é muito pequena no momment e eu tinha medo de ser negativação para tal pergunta de um para começar, então eu não tenho certeza, obrigado por criar a tag :)
Prix

Respostas:

22

Infelizmente, é realmente difícil impedir que as pessoas trapaceiem, e é por isso que softwares como o Punkbuster foram criados para tentar capturar alguns deles.

Para um MMO, a maior coisa que você pode fazer é não confiar em nada que o cliente envie . O cliente não deve ser capaz de dizer para onde o jogador se mudou, quanto dano causou a quem etc. etc. Em vez disso, você deve enviar uma entrada de controle ao servidor, confirmar que é prático (pressionar o botão "atacar" 1000 vezes em 1 segundo, por exemplo, não é válido) e atualize a simulação no servidor. Você enviaria as partes relevantes do novo estado do jogo de volta ao cliente.

Enquanto você está validando a entrada do usuário, também é possível procurar tendências em suas entradas. Se você não permitir macros, poderá capturá-las aqui, observando que o usuário clicou no mesmo botão nas mesmas coordenadas de pixel em intervalos perfeitos de 1 segundo nos últimos 30 minutos.

O cliente em si é o principal local em que as pessoas podem trapacear, de modo que programas como o Punkbuster podem reduzir os wallhacks, os aimbots etc. Além disso, não confiar no cliente e validar qualquer coisa enviada a você pelo cliente ajudará a reduzir a trapaça.

Sean James
fonte
Obrigado pela sua contribuição, espero ver mais pessoas fazendo suas contribuições; Na verdade, esse é um problema muito difícil de combater ... Há também quem reprime o jogo para desativar o mecanismo anti-fraude e é chamado dele ... o que torna as coisas ainda mais difíceis ... a menos que você tenha um acesso on-line GM para verificar essa pessoa ou outras verificações, como você declarou. o que você acha dessa pergunta para o wiki da comunidade? devo manter como está ou mudar algo para torná-lo adequado;
Prix
Provavelmente wiki da comunidade, a menos que você esteja procurando uma resposta específica.
Sean James
Mais detalhes sobre como o Punkbuster funciona para uma resposta mais completa?
Chris Lloyd
Boa resposta - não existe 'uma solução para governar todos eles' - a maioria dos jogos possui vários 'vetores de ataque'. Muitas vezes, trata-se de avaliação de risco mais do que tudo isto é o que é o impacto sobre a comunidade se alguém pode enganar o sistema X etc
zebrabox
Acredito que hackers são inevitáveis, e até temos o programa anti-fraude mais forte. Trapacear é bom se estiver offline tecnicamente, mas não online. Jogar online é mais justo. É assim mesmo?
David Dimalanta
8

Exploração madeireira. Tudo o que acontece no servidor deve ser registrado e, idealmente, tudo o que vem do cliente. O cliente é inerentemente não confiável, mas mesmo o registro de dados não confiáveis ​​pode ser esclarecedor.

Depois que tudo é registrado, a detecção de fraude se torna uma questão de analisar os dados. Alguns truques serão óbvios (valores fora dos limites aceitáveis, por exemplo, poder se mover entre os pontos muito mais rapidamente do que o avatar normalmente permite), outros são mais insidiosos (como aimbots, permitindo uma segmentação perfeita de pixels em prazos artificialmente curtos). Alguns são ainda mais difíceis de detectar (como wallhacks), mas gravar o máximo possível permite a detecção automática e manual. Existem vários artigos, mas geralmente os truques são detectados com muita facilidade na detecção automática, porque são previsíveis / repetíveis, exatamente da maneira que os jogadores humanos não são.

Como a gravação de absolutamente tudo é provavelmente inviável, o registro em camadas é útil. Por exemplo, relatórios de trapaça por usuários, ou registro básico simples que detecta a possibilidade de trapaça (pontuação que está muito acima da curva estatística), seriam suficientes para sinalizar uma determinada chave de cliente / conta / CD para um registro mais detalhado, o que poderia então, seja usado para provar, sem sombra de dúvida, que um truque está sendo usado.

O que você faz quando detecta uma fraude é outra questão inteiramente. O banimento da conta após o fato é bom, especialmente quando você tem um mecanismo de detecção automatizado que é suficientemente confiável. A proibição antecipada dos dois alerta os truques de que eles estão sendo detectados e também corre o risco de falsos positivos devido a mecanismos de detecção inconclusivos. Proibir tarde demais corre o risco de arruinar a experiência de jogo para outros. Esta é uma área muito cinzenta e requer que os desenvolvedores façam o julgamento.

MrCranky
fonte
2

Supondo que todo o trabalho importante do seu jogo esteja ocorrendo no servidor, deve haver pouca ou nenhuma trapaça possível. Se você deseja restringir a macro ou torná-lo desagradável para as pessoas editarem pacotes, faça com que seu programa verifique periodicamente os módulos ativos em seu processo. Se você encontrar, por exemplo, WpeSpy.dll, saberá que eles têm o WPE anexado. Faça isso para as outras ferramentas comuns. Isso pode ser contornado, e é uma corrida armamentista e uma causa perdida, mas se o seu jogo for relativamente pequeno, você pode facilmente reduzir o número de pessoas que brincam em torno de um fator de dez ... e isso pode ser bom suficiente para ti.

James Bellinger
fonte
Obrigado pela contribuição, você já usou algum software anti-fraude ou teve esse problema do tipo que precisava resolver? se assim for, seria bom ouvir sobre isso.
Prix
2
Não usei nenhum software anti-fraude de terceiros, não. No entanto, quando comecei a codificar um RPG on-line, meu servidor apenas chamou 'ataque' quando o cliente enviou 'ataque', em vez de colocar a solicitação em uma fila, coisas assim. Esses são os mais importantes para evitar trapaças. Acelere os hacks, faça todo o tempo no servidor para que eles obtenham pouca vantagem, mas também envie carimbos de data e hora e, se você ficar com muito desvio, saberá que eles estão usando um. Marque a conta, mas não a expulse imediatamente - o feedback imediato é uma ótima maneira de alguém saber o que o seu software detecta.
James Bellinger
1
Eu gosto dessa parte but also send timestamps, and if you get too much drift, you'll know they are using one. Mark their account, but don't kick them immediately -- immediate feedback is a great way for someone to know what your software detects.que recentemente estudei na implementação de um timestamp e avise o sistema de usuários marcados. Atualmente, o que coloquei o player em uma lista em que estou trabalhando agora é que, se alguns tiverem alto uso de abuso, enviarão um alerta para um GM on-line para verificação ...
Prix