O punkbuster existe apenas para evitar trapaças, e ainda assim é comum em jogos habilitados para punkbuster. O Modern Warefare 2 está seriamente bloqueado do usuário final executando seu próprio servidor ou fazendo quaisquer mods, e a trapaça acontece constantemente.
Para um jogo multiplayer em que cada cliente está executando em um PC, o que pode ser feito para reduzir ou eliminar a trapaça?
multiplayer
anti-cheat
security
kevin42
fonte
fonte
Respostas:
Depende de como eles estão trapaceando, concentrando-se em uma das principais maneiras de criar truques, outros processos presos ao seu aplicativo e modificá-lo - você pode enumerar todos os outros processos e conectar seus métodos de manipulação de memória e emulação de teclado / mouse métodos.
Os wallhacks geralmente são escritos injetando código entre o processo e as bibliotecas do DirectX / GL para definir a transparência dos materiais para que possam ser vistos. Você pode adicionar algum código ao seu sistema de cenário / seleção para não atrair outros jogadores / entidades úteis se eles estiverem atrás das paredes (para evitar trapacear dessa maneira).
Se você estiver jogando no modo multiplayer e quiser impedir que pacotes sejam modificados entre cliente / servidor, criar uma soma de verificação dos dados que você está enviando por meio de algum algoritmo próprio e verificar isso à medida que aparece do outro lado pode ser eficaz. (Você provavelmente acabará fazendo isso de qualquer maneira para vários fins de controle de qualidade).
O mesmo vale para a maioria dos recursos da memória, criando uma soma de verificação no início de um quadro e verificando-a em vários estágios pode resultar em alguma detecção bastante útil de manipulação de memória.
Este é um tópico bastante envolvido, mas espero que isso o direcione para uma direção vagamente aceitável.
fonte
Na solução mais extrema, você basicamente nunca confia no cliente. Para jogos como MMOs, os usuários não executam seus servidores e qualquer lógica de jogo é tratada no lado do servidor. Nunca dê ao cliente a autoridade para dizer "eu tenho X saúde" ou "eu tenho X munição" etc.
fonte
Se você possui um sistema em que a lógica é cara e deve ser executada principalmente no cliente para salvar os ciclos do servidor, você pode implementar um sistema probabilístico de detecção de trapaças. A cada poucos minutos, ele escolhe alguns jogadores diferentes para inspecionar atentamente e verificar a consistência no servidor. Como os trapaceiros raramente limitam seus trapaceiros a curtos e raros períodos de tempo, eles serão capturados eventualmente.
Outro benefício disso é que eles não terão um ciclo de retorno rápido para o desenvolvimento - se, em média, levar 10 horas de jogo para o servidor prestar atenção em você, será um ciclo de retorno de 10 horas sempre que você quiser ver se algo funcionou. E se ele fez o trabalho, é ainda mais porque eles não sabem se o servidor deu-lhes um polegar para cima ou simplesmente não tenha chegado a cerca de-los.
fonte
Também existem muitos tipos de hacks de auxílio à mira para atiradores em primeira pessoa que também funcionam conectando-se às chamadas da biblioteca gráfica. OGC Hook para Counter-Strike / HL1 tinha várias opções além de tornar as paredes transparentes.
Se em algum momento as informações de localização dos inimigos forem passadas para uma biblioteca de nível inferior, com código amplamente disponível, essas chamadas podem ser conectadas e os dados de localização, escala, rotação etc. podem ser usados para calcular com precisão o melhor vetor para disparo sobre esse inimigo. Sistemas anti-fraude como o PunkBuster geralmente incluem detecção do tipo heurístico (com que frequência esse jogador consegue uma foto perfeita, com que frequência eles giram em torno de 180 graus para conseguir uma morte instantânea, etc.), além de monitoramento de memória e processo.
Em última análise, a tarefa de evitar trapaças em jogos multiplayer é um jogo de gato e rato. À medida que novas fraudes são desenvolvidas, novos métodos anti-fraude são criados e, em seguida, novos truques são criados para evitar as novas tecnologias anti-fraude.
Como Tetrad disse em sua resposta, as únicas regras rígidas e rápidas para "segurança do jogo" são fornecer ao cliente o mínimo de informações possível e confiar no cliente o mínimo possível. Diferentes tipos de jogos terão requisitos diferentes que podem afetar a aderência a essas regras.
Em um jogo FPS, como a velocidade da jogabilidade é muito rápida, muitas vezes não é possível fornecer apenas ao cliente os dados que ele deve saber sobre esse exato instante. Se você não disser ao cliente que existe um inimigo na esquina e o jogador na esquina, de repente você precisará enviar essas informações a ele em questão de milissegundos ou corre o risco de o jogador ser morto por um inimigo que não o fez. já viu.
A única "correção" para esses problemas atualmente disponíveis provavelmente seria o OnLive. Como esse serviço fornece apenas conteúdo de áudio e vídeo de um cliente executando com segurança no datacenter, o único meio de trapacear seria criar essencialmente uma IA humana que pudesse analisar o fluxo de vídeo recebido e tomar medidas com base nisso - uma tarefa que poucos, se houver, os trapaceiros são capazes.
fonte
Todas as respostas acima são ótimas, mas vou adicionar outra parte:
Alguns jogos têm um recurso de repetição muito sólido, que permite salvar a repetição de todos os jogos após o final do jogo em um formato compacto e assisti-lo de várias maneiras - perspectivas diferentes dos jogadores, interface do usuário de estatísticas em tempo real e assim por diante.
Exemplo com o qual estou muito familiarizado: Starcraft 2. Uma das maneiras pelas quais a Blizzard bloqueia hackers é recebendo evidências de trapaças como replays de jogos.
Um exemplo para o uso em um FPS seria: se você jogou um jogo e suspeita que a outra pessoa trapaceou com uma invasão de parede, assista ao replay e, em seguida, veja que, em sua visão normal de replay, ele não poderia ter vi você e jogou uma granada na esquina, ou o que quer.
Você o denuncia com a repetição e, se a evidência contra ele for boa o suficiente, ele será banido. Até onde eu sei, as empresas que fazem isso apenas pegam evidências sérias ou múltiplas fontes de evidências do mesmo comportamento antes de serem banidas.
Portanto, essa não é uma técnica anti-depuração, é um sistema de relatório do usuário que permite uma prova conveniente de trapaça, assistida por humanos.
fonte
Esta pode não ser uma resposta completa, mas tenho algumas sugestões aqui. Uma das melhores maneiras de evitar trapaças é a ofuscação ou o uso de C / C ++. Isso impede que as pessoas modifiquem o código do cliente.
fonte