Quais são algumas maneiras de evitar ou reduzir trapaças em jogos multiplayer online? [fechadas]


19

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?



1
Esta não é uma resposta completa, por isso não a listarei como uma, mas se você adicionar uma certa quantidade de valor à conta dos jogadores, além dos métodos tradicionais de anti-fraude, acredito que possam ajudar. Por exemplo, se os novos jogadores são relegados para os servidores "noob" até ganharem experiência suficiente para acessar o resto do jogo, torna difícil para os hackers refazer o nível de sua conta após serem banidos todas as vezes. Provavelmente ainda existem alguns hackers que podem superar isso, mas proteger seus servidores de conta / correspondência é muito mais fácil do que proteger clientes.
Lewis Wakeford

Respostas:


18

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.


Ou ainda melhor do que esconder objetos atrás das paredes (que ainda podem ser hackeados), não fornecendo ao cliente informações sobre a localização desse jogador (ou apenas sobre o que é necessário para, por exemplo, um bom efeito de som 3d)
Bart van Heukelom,

17

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.


4
Isso é ótimo se você realmente tem os recursos para executar um servidor dedicado, mas é uma maneira bastante simplista de vê-lo. Muito provavelmente você ainda executaria muita lógica nos clientes e um subconjunto mínimo da lógica no servidor, com sincronização ocasional para impor regras básicas. Também não necessariamente prevenir contra todos os truques do lado do cliente como manipulação Wallhacks / memória para enganar o cliente a revelar informações úteis / etc
Rob Ashton

10

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.


+1 Em termos de desempenho, abordagens estocásticas como essas são a única resposta realista para questões mais amplas, a IMO. Além do OnLive, isto é, se você estiver segmentando apenas os EUA.
Engineer

5

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.


3

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.


0

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.


Vale ressaltar que existem muitos desobuscadores por aí. Também os jogos .Net (C #, XNA) podem ser modificados usando um Reflection. Pelo que sei, acho que o C / C ++ é realmente uma maneira de dificultar a adulteração do código.
User1306322

Sim. O que quero dizer é que a ofuscação impede que o código facilmente descompilado seja ilegível e o C / C ++ não é fácil de compilar, são duas boas opções.
LiquidFeline

Além disso, se você corrigir o seu jogo com freqüência e mudar offsets binários no executável ou inserir NOPs aleatórios, sem corte vai sobreviver o tempo suficiente ...
SirKnigget

@CPP_Person: Na verdade, o C é bastante famoso por ser muito fácil de compilar. É uma questão totalmente diferente para C ++, que é realmente uma linguagem bastante complexa da perspectiva dos compiladores. No entanto, eu não entendo, por que isso importa, como é fácil compilar uma certa linguagem de programação - você deseja impedir que as pessoas escrevam ferramentas de truques, e não um bom compilador - elas usariam um compilador C ++ existente de qualquer maneira - tornando descompilar muito parece muito mais interessante para mim do que dificultar a compilação.
Kaiserludi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.