Die kurze Antwort ist, dass Sie es nicht tun können. Alles, was auf der Client-Seite ausgeführt wird, insbesondere von der Quelle, kann geändert werden, um Ihre Taktik trivial zu besiegen. Wenn Sie ein clientseitiges Überprüfungsprogramm einrichten, um nach plötzlichen Änderungen zu suchen, kann ein Benutzer das Überprüfungsprogramm einfach deaktivieren.
Die gute Nachricht ist, dass Einzelspieler-Spiele im Allgemeinen kaum betrogen werden. Die einzige größere Ausnahme sind Spiele mit großen "YouTube Highscore" -Communitys wie Line Rider, in denen die Spieler über YouTube miteinander konkurrieren.
Wenn Sie das anstreben oder einfach zu hartnäckig sind, um zu akzeptieren, dass die Leute im Spiel schummeln oder selbst Highscores erzielen (was eine Form des Mehrspielers ist), müssen Sie alle Berechnungen serverseitig durchführen . Ja, alles was zählt. Sie können die Berechnungs-Client-Seite nicht einmal wiederholen, um zu versuchen, dem Benutzer die Punktzahl zu geben und sie dann beim Server zu "verifizieren", da der Benutzer dann einfach die Prüfung deaktivieren und jedes System deaktivieren kann, das sicherstellt, dass Prüfungen vorhanden sind.
Ich wünschte, es gäbe eine bessere Antwort darauf, aber es gibt keine.
Trotzdem gibt es Dinge, die Sie tun können, um das Betrügen etwas zu erschweren. Sie werden niemanden davon abhalten, es ernst zu nehmen und ein Toolkit zum Schummeln freizugeben, aber es wird sie verlangsamen:
- Minimieren und verschleiern Sie Ihren JS, was das Lesen des Codes auf jeden Fall erschwert. Sie können die Minimierung aufheben und die Verschleierung aufheben, aber Sie können niemals die richtigen Variablen- und Funktionsnamen oder Kommentare zurückerhalten.
- Backe Werte in einer anderen Sprache ein. In diesem Fall können Sie PHP oder andere serverseitige Sprachen verwenden, um statische Setup-Variablen zu verarbeiten. Wenn die Sprungdistanz immer 2 Felder betragen soll, definieren Sie normalerweise eine Sprungdistanz für das Spielerobjekt. Tun Sie das nicht, behandeln Sie das mit PHP, damit die JS-Quelle mit 2s endet, die an einer Million Stellen über den gesamten Code verteilt sind. Dies hat den glücklichen zusätzlichen Nebeneffekt, dass Sie auch Ihren JS beschleunigen können.
- Mit etwas Übung werden Sie mit dem Mix vertraut und können sogar Ihren JS für jeden Spieler individuell zusammenstellen. Das ist ein weiterer Weg, um Betrug zu verhindern. Wenn der Code eines jeden Spielers anders ist, ist es schwieriger, einen Cheat zu schreiben, der Teil eines Toolkits sein kann.
- Schließlich können Sie die Quelle anhand der Identität des Spielers prüfen. Sagen Sie ihre IP-Adresse und / oder ihren Benutzernamen. Sie wissen, wie die spielerspezifische Version des JS aussehen wird, können eine Prüfsumme einbinden und verlangen, dass sie am anderen Ende gleich ist. Einfach zu deaktivieren, wie bei jedem clientseitigen JS, macht es jedoch wieder etwas schwieriger, ein Toolkit zu erstellen.
So. Wie Sie sehen, lohnt es sich wahrscheinlich nicht, diesen Weg zu gehen. Es ist schwer. Erfordert eine Menge wirklich alberner Programmierpraktiken und ist letztendlich immer noch relativ einfach zu besiegen. Sie müssen alle Berechnungen serverseitig durchführen, um Betrug zu verhindern. Oder lass los und akzeptiere, dass Betrug passieren wird.