Krótka odpowiedź brzmi: nie możesz tego zrobić. Wszystko, co działa po stronie klienta, szczególnie ze źródła, można zmodyfikować, aby trywialnie pokonać twoją taktykę. Jeśli umieścisz moduł sprawdzania po stronie klienta w celu wyszukiwania nagłych zmian, użytkownik może po prostu wyłączyć moduł sprawdzania.
Dobrą wiadomością jest to, że ogólnie rzecz biorąc, gry dla jednego gracza są bardzo małe. Jedynym ważnym wyjątkiem są gry z dużymi społecznościami „youtube highscore”, takimi jak Line Rider, w których gracze rywalizują ze sobą przez YouTube.
Jeśli dążysz do tego lub jesteś zbyt uparty, aby zaakceptować fakt, że ludzie mogą oszukiwać w grze lub samemu utrzymujesz wysokie wyniki (co jest formą gry wieloosobowej), musisz wykonać wszystkie obliczenia po stronie serwera . Tak, wszystko, co ważne. Nie można nawet powtórzyć obliczeń po stronie klienta, aby spróbować dać użytkownikowi wynik, a następnie „zweryfikować” go na serwerze, ponieważ użytkownik może wtedy po prostu wyłączyć sprawdzanie i wyłączyć dowolny system, który zapewnia kontrole.
Chciałbym, żeby była na to lepsza odpowiedź, ale nie ma.
To powiedziawszy, są rzeczy, które możesz zrobić, aby trochę trudniej było oszukiwać. Nie powstrzymają nikogo poważnie od zrobienia tego i wydania zestawu narzędzi do oszukiwania, ale spowolni to:
- Zminimalizuj i zaciemnij swój JS, co absolutnie utrudni odczytanie kodu. Możesz usunąć i zminimalizować zaciemnienie, ale nigdy nie możesz odzyskać odpowiednich nazw zmiennych i funkcji ani komentarzy.
- Piec wartości w innym języku. W takim przypadku możesz użyć PHP lub innych języków po stronie serwera do obsługi statycznych zmiennych konfiguracyjnych. Jeśli odległość skoku ma zawsze wynosić 2 spacje, zwykle określa się odległość skoku dla obiektu gracza. Nie zajmuj się tym z PHP, tak aby źródło JS skończyło się na 2s otynkowanych w całym kodzie w milionach miejsc. Ma to pozytywny efekt uboczny, ponieważ możesz przyspieszyć swój JS.
- Po pewnym ćwiczeniu zyskasz biegłość w miksowaniu, a nawet stworzysz własne JS dla każdego gracza. Który jest innym sposobem zapobiegania oszustwom. Jeśli kod każdego gracza jest w jakiś sposób inny, trudniej jest napisać kod, który może być częścią zestawu narzędzi.
- Na koniec możesz sprawdzić sumę źródłową na podstawie tożsamości gracza. Powiedz ich adres IP i / lub nazwę użytkownika. Wiesz, jaka będzie wersja JS dla konkretnego gracza, możesz upiec sumę kontrolną i wymagać, aby była taka sama na drugim końcu. Łatwo go wyłączyć, jak każdy JS po stronie klienta, ale jeszcze raz trudniej jest stworzyć zestaw narzędzi.
Więc. Jak widać, prawdopodobnie nie warto iść tą trasą. To jest trudne. Wymaga wielu naprawdę niemądrych praktyk kodowania i ostatecznie jest nadal stosunkowo łatwy do pokonania. Musisz wykonać wszystkie obliczenia po stronie serwera, aby zapobiec oszukiwaniu. Albo puść i zaakceptuj, że nastąpi oszustwo.