Senden Sie nicht einfach eine Ganzzahl an den Server. Senden Sie eine Sammlung von Spielstatistiken, mit denen überprüft werden kann, ob das Ergebnis realistisch ist. Oder Sie können einen Pre-Shared Key für die Berechnung der Punktzahl implementieren . Sie können während des Spiels inkrementelle Punktzahlen und Statistiken senden und sicherstellen, dass die Erhöhung angemessen ist.
Ich würde mir jedoch nicht allzu viele Sorgen machen. Die obigen Vorschläge machen es schwieriger, aber nicht unmöglich, eine gefälschte Punktzahl zu senden. Wenn Sie es jedoch etwas schwieriger machen, wird die überwiegende Mehrheit der Spieler, die Ihr Spiel spielen, nicht daran interessiert sein, es zu betrügen.
Achten Sie darauf, wie Ihr Spiel mit Ihrem Server kommunizieren kann. Sie möchten nicht, dass Ihr Spiel ein Einstiegspunkt für das Hacken auf Ihren Server ist. Stellen Sie sicher, dass Sie Ihre Eingaben immer validieren und dem Client niemals vertrauen.
Wie Byte56 sagte: "Vertraue niemals dem Client", aber:
Niemals dem Kunden zu vertrauen hat einen Preis:
Wenn alle Spiele auf dem Server gespielt werden, steigen die Infrastrukturkosten erheblich.
Vorausgesetzt, die meisten Spieler werden nicht schummeln
und die höchste Punktzahl wird sich nach kurzer Zeit einstellen und aufhören, sich stark zu verändern
Es gibt einen Mittelweg.
Zeichnen Sie die Spiele auf (auf dem Client).
(Abhängig von der Spielart kann dies sehr einfach (z. B. Schach) oder etwas kompliziert (z. B. Multiplayer-FPS) sein,
aber es ist immer machbar.)
Wenn ein Spieler ein Spiel beendet, reichen Sie einfach die Punktzahl ein.
Wenn die Punktzahl in einem bestimmten Bereich oben liegt (z. B. unter 1% oder unter 5),
fordern Sie die aufgezeichneten Daten vom Spieler an
und wiederholen Sie das Spiel auf dem Server.
Wenn die Ergebnisse übereinstimmen, akzeptieren Sie die Ergebnisse.
Auf diese Weise benötigen Sie für die meisten Spiele keine zusätzlichen serverseitigen Ressourcen,
können jedoch sicherstellen, dass die besten Ergebnisse gültig sind.
quelle
Kümmere Dich nicht darum; Schutz vor allen Angriffen ist grundsätzlich unmöglich, wenn Sie dem Client vertrauen. Wenn niemand Fiddler usw. verwendet, um die AJAX-Anforderung zu ändern, kann er einfach einen JS-Debugger starten und Ihre Spieldaten ändern, um sich selbst 1000 Leben usw. zu bescheren, Ihren Code zu ändern oder 100 andere Dinge zu tun, an die Sie nicht gedacht haben.
Ich habe ein solches Spiel vor einigen Jahren geschrieben und nach meinem besten Wissen hat niemand auf diese Weise betrogen. Es gab keinen Preis, außer dass Ihr Name auf der Punktetabelle stand.
quelle
Reduzieren Sie die soziale Motivation zu betrügen, indem Sie z. B. soziale Bestenlisten verwenden (Betrügen macht nur eine Handvoll Freunde ansprechend, es verwöhnt nicht alle).
Überprüfen Sie auf dem Server. Joel Poloney hatte eine gute Beschreibung der Techniken in Game Developer 2012 September "Scale Your Online Game"
quelle
Wenn Sie ein betrugsicheres Online-Spiel erstellen möchten, müssen Sie die gesamte Spielelogik auf dem Server verarbeiten. Alles, was auf der Client-Seite passiert, kann vom Benutzer gesteuert und manipuliert werden. Es gibt Techniken wie Verschlüsselung oder Verschleierung, die Sie ausprobieren können, aber am Ende ist alles nur Sicherheit durch Verschleierung, die von jemandem umgangen werden kann, der ausreichend entschlossen ist.
Sicher, ein Spiel, das auf dem Server läuft, ist viel komplizierter zu entwickeln, erfordert viel mehr Ressourcen auf der Serverseite und die Netzwerklatenz wirkt sich nachteilig auf das Spielerlebnis aus (insbesondere bei schnellen Spielen), aber dies ist der einzige Weg, effektiv zu sein Verhindern Sie, dass die Spieler betrügen.
quelle