Chociaż pierwszy komentarz podjąłem w wątpliwość sensu poniżenia części odbiorców bez widocznego zysku, nadal uważam to za interesujące pytanie z technicznego punktu widzenia.
Właśnie wpadłem na ten pomysł: to, co robią oszustowie, to znajdowanie wartości, które je zmieniają i zamrażają. Wyszukiwanie odbywałoby się wtedy tylko między śmiercią lub wydarzeniami, które zmieniły zdrowie gracza. Co więcej, oszust może dopracować wyszukiwanie, odfiltrowując to, co się zmieniło, kiedy „nie umierał”.
Co jeśli licznik „zdrowia” zmienia się cały czas? Ustaw wskaźnik i przenieś go do każdej klatki lub każdej klatki N, jeśli wydajność jest zbyt duża. Lub XOR to z losową wartością, która zmienia każdą ramkę (XORing ponownie w stosunku do tej samej wartości do deszyfrowania przed szyfrowaniem z nową losową wartością).
Jeśli masz inne dane w grze, które zmieniają się przez cały czas (w tym pozycje xiy postaci gracza lub licznik czasu), może to utrudnić ustalenie, które ze wszystkich zmieniających się danych to zdrowie. A zamrożenie całego stanu gry nie jest oszustem.
W celu dalszego wprowadzenia w błąd, możesz przechowywać zdrowie w zwykłej zmiennej tylko do zapisu, oznaczonej jako garnek miodu.
Edytuj :
Mimo to oszust może próbować ustalić, która ze zmiennych, która zmienia się przez cały czas, jest tą, która zamrozi próbę i błąd. Możliwym rozwiązaniem byłoby połączenie ze sobą zmiennych.
Przykład:
Zamiast przechowywać zdrowie (h) i pozycję (x), przechowujesz je w dwóch zmiennych a i b, z których możesz później pobrać wartości:
a = x+h; b = x-h
x = (a+b)/2; h = (a-b)/2
W ten sposób, jeśli oszust zamrozi tylko jedną z nich, a następnie poruszy postać, wpłynie to na pozycję i, w zależności od tego, która została zamrożona, h zostanie ujemne (natychmiastowa śmierć). Możesz przełączać się między powyższymi formułami i:
a = x-h; b = x+h
x = (a+b)/2; h = (b-a)/2
W kolejnych klatkach gwarantujesz, że w co najwyżej 2 klatkach po zamrożeniu jednej ze zmiennych zdrowie zmieni się na 0 w chwili zmiany x. Pamiętaj, że przechowujesz tylko aib. Połącz to z ciągłym XOR, jak wspomniano powyżej. Rezultatem jest zbiór zmiennych, które zmieniają każdą klatkę na pozornie losowe wartości, a zamrożenie dowolnej pojedynczej lub ich części powoduje jedynie niepożądane skutki uboczne w grze, a jednym z nich jest natychmiastowa śmierć.