A resposta curta é que você não pode fazê-lo. Qualquer coisa que execute no lado do cliente, especialmente da fonte, pode ser modificada para derrotar suas táticas trivialmente. Se você colocar um verificador do lado do cliente para procurar alterações abruptas, um usuário poderá simplesmente desativar o verificador.
A boa notícia é que, geralmente, há muito pouca trapaça nos jogos para um jogador. A única exceção importante é para jogos que têm grandes comunidades de "altas pontuações no youtube" como o Line Rider, onde os jogadores competem entre si pelo YouTube.
Se você está buscando isso, ou é teimoso demais para aceitar que as pessoas trapaceiam no jogo ou está mantendo uma pontuação alta (que é uma forma de multiplayer), o que você deve fazer é todos os cálculos do lado do servidor . Sim, tudo o que importa. Você não pode nem repetir o lado do cliente de cálculo para tentar dar ao usuário a pontuação e, em seguida, 'verificá-la' com o servidor, porque o usuário pode simplesmente desativar a verificação e desativar qualquer sistema que garanta a verificação.
Eu gostaria que houvesse uma resposta melhor para isso, mas não existe.
Dito isto, há coisas que você pode fazer para tornar um pouco mais difícil de enganar. Eles não impedirão ninguém sério de fazer isso e liberar um kit de ferramentas para trapacear, mas isso os atrasará:
- Minimize e ofusque seu JS, o que absolutamente tornará o código mais difícil de ler. Você pode desminificar e classificar de ofuscar, mas nunca poderá recuperar os nomes corretos de variáveis e funções, nem comentários.
- Asse em valores com um idioma diferente. Nesse caso, você pode usar PHP ou outras linguagens do lado do servidor para lidar com variáveis de configuração estática. Se a distância do salto sempre deve ter 2 espaços, normalmente você definiria uma distância do salto para o objeto do jogador. Não, lide com isso com PHP para que a fonte JS termine com 2s colados em todo o código em um milhão de lugares. Isso tem o feliz efeito colateral adicional de poder acelerar seu JS também.
- Com alguma prática, você se familiarizará com o mix e poderá até criar seu JS personalizado para cada jogador. Qual é outra maneira de evitar trapaças. Se o código de cada jogador for diferente de alguma forma, será mais difícil escrever uma trapaça que possa fazer parte de um kit de ferramentas.
- Finalmente, você pode somar a fonte com base na identidade do jogador. Diga o endereço IP e / ou nome de usuário. Você sabe qual será a versão específica do jogador do JS, é possível criar uma soma de verificação e exigir que seja a mesma do outro lado. Fácil de desabilitar como qualquer JS do lado do cliente, mas mais uma vez torna um pouco mais difícil criar um kit de ferramentas.
Tão. Como você vê, provavelmente não vale a pena seguir esse caminho. É difícil. Requer muitas práticas de codificação realmente tolas, e ainda é relativamente fácil de derrotar. Você precisará fazer todos os cálculos do lado do servidor para evitar trapaças. Ou deixe ir e aceite que a trapaça acontecerá.