Obwohl ich in meinem ersten Kommentar die Frage gestellt habe, ob die Erfahrung eines Teils Ihres Publikums ohne offensichtlichen Gewinn herabgesetzt werden soll, finde ich sie aus technischer Sicht immer noch interessant.
Ich hatte gerade die Idee: Was Betrüger tun, ist, Werte zu finden, die sich ändern und sie einfrieren. Die Suche würde dann nur zwischen Todesfällen oder Ereignissen stattfinden, die die Gesundheit des Spielers verändern. Darüber hinaus könnte der Betrüger die Suche verfeinern, indem er herausfiltert, was sich geändert hat, als er "nicht gestorben" war.
Was ist, wenn sich der "Gesundheits" -Zähler die ganze Zeit ändert? Machen Sie es zu einem Zeiger und ordnen Sie es jedem Frame oder allen N Frames neu zu, wenn der Performance-Hit zu groß ist. Oder XOR mit einem zufälligen Wert, der jeden Frame ändert (XOR wird erneut mit demselben Wert für die Entschlüsselung verglichen, bevor mit einem neuen zufälligen Wert verschlüsselt wird).
Wenn sich während des Spiels auch andere Daten ändern (einschließlich der x- und y-Position des Spielercharakters oder des Zeitzählers), ist es möglicherweise schwieriger herauszufinden, welche der sich ändernden Daten die Gesundheit sind. Und das Einfrieren des gesamten Spielzustands ist für den Betrüger kein Problem.
Zur weiteren Irreführung können Sie die Integrität in einer reinen Nur-Schreib-Variablen speichern, die als Honigtopf gedacht ist.
Bearbeiten :
Dennoch könnte der Betrüger versuchen herauszufinden, welche der Variablen, die sich die ganze Zeit ändern, diejenige ist, die durch Ausprobieren eingefroren werden kann. Eine mögliche Lösung wäre, die Variablen miteinander zu koppeln.
Ein Beispiel:
Anstatt Health (h) und Position (x) zu speichern, speichern Sie sie in zwei Variablen a und b, von denen Sie die Werte später abrufen können:
a = x+h; b = x-h
x = (a+b)/2; h = (a-b)/2
Auf diese Weise wird, wenn der Betrüger nur einen von ihnen einfriert und dann den Charakter bewegt, die Position beeinflusst und je nachdem, welcher eingefroren wurde, wird h negativ (sofortiger Tod). Sie können zwischen den obigen Formeln wechseln und:
a = x-h; b = x+h
x = (a+b)/2; h = (b-a)/2
In aufeinanderfolgenden Frames und Sie garantieren, dass in höchstens 2 Frames, nachdem eine der Variablen eingefroren wurde, der Zustand 0 wird, sobald sich x ändert. Denken Sie daran, dass Sie nur a und b speichern. Kombinieren Sie dies mit dem kontinuierlichen XOR wie oben erwähnt. Das Ergebnis ist eine Sammlung von Variablen, die jeden Frame in scheinbar zufällige Werte ändern, und das Einfrieren eines einzelnen oder einer Teilmenge davon führt nur zu unerwünschten Nebenwirkungen im Spiel, wobei der sofortige Tod einer von ihnen ist.