La respuesta corta es que no puedes hacerlo. Cualquier cosa que se ejecute del lado del cliente, especialmente desde la fuente, se puede modificar para derrotar sus tácticas de manera trivial. Si implementa un verificador del lado del cliente para buscar cambios abruptos, un usuario puede simplemente deshabilitar el verificador.
La buena noticia es que, en general, hay muy pocas trampas en los juegos para un jugador. La única excepción importante es para los juegos que tienen grandes comunidades "youtube highscore" como Line Rider, donde los jugadores compiten entre sí en YouTube.
Si estás apuntando a eso, o eres demasiado terco para aceptar que las personas podrían hacer trampa en el juego, o estás manteniendo puntuaciones altas (que es una forma de multijugador), entonces lo que debes hacer son todos los cálculos del lado del servidor . Sí, todo lo que importa. Ni siquiera puede repetir el lado del cliente de cálculo para intentar darle al usuario el puntaje y luego 'verificarlo' con el servidor porque el usuario puede simplemente deshabilitar el cheque y deshabilitar cualquier sistema que garantice que haya cheques.
Desearía que hubiera una mejor respuesta a esto, pero no la hay.
Dicho esto, hay cosas que puedes hacer para que sea un poco más difícil hacer trampa. No detendrán a nadie serio de hacerlo y lanzar un juego de herramientas para hacer trampa, pero los ralentizará:
- Minifique y ofusque su JS, lo que hará que el código sea más difícil de leer. Puede desminificar y ordenar ofuscar, pero nunca puede recuperar los nombres correctos de variables y funciones, ni comentarios.
- Hornee en valores con un idioma diferente. En este caso, puede usar PHP u otros lenguajes del lado del servidor para manejar variables de configuración estáticas. Si se supone que la distancia de salto siempre debe ser de 2 espacios, normalmente definiría una distancia de salto para el objeto jugador. No, maneje eso con PHP para que la fuente JS termine con 2s pegados en todo el código en un millón de lugares. Esto tiene el feliz efecto secundario adicional de poder acelerar tu JS también.
- Con algo de práctica, dominarás la mezcla e incluso puedes personalizar tu JS para cada jugador. Que es otra forma de evitar las trampas. Si el código de cada jugador es diferente de alguna manera, entonces es más difícil escribir un truco que pueda ser parte de un juego de herramientas.
- Finalmente, puede sumar la fuente de verificación en función de la identidad del jugador. Diga su dirección IP y / o nombre de usuario. Sabes cuál será la versión específica del jugador del JS, puedes hornear en una suma de verificación y requerir que sea la misma en el otro extremo. Fácil de deshabilitar como cualquier JS del lado del cliente, pero una vez más hace que sea un poco más difícil hacer un kit de herramientas.
Asi que. Como puede ver, probablemente no valga la pena seguir esta ruta. Es difícil. Requiere muchas prácticas de codificación realmente tontas y, en última instancia, sigue siendo relativamente fácil de derrotar. Tendrá que hacer todos los cálculos del lado del servidor para evitar trampas. O déjalo ir y acepta que sucederá un engaño