2012-10-28 14 views

Odpowiedz

2

Nic nie możesz zrobić, aby tego uniknąć. Możesz go utrudnić poprzez zaciemnienie kodu, ale nadal możesz zhakować wynik.

Jednym ze sposobów, aby utrudnić, jest podwójne zapisanie wyniku, w pętli lub jakiejś funkcji, po prostu sprawdź, czy zmieniła się poza logiką gry, w ten sposób użytkownik musi znaleźć obie zmienne.

A jeśli druga wartość wyniku jest podwójna od innej wartości wyniku, jej jeszcze trudniejsze do znalezienia poprzez porównanie bieżącego wyniku do wszystkich wyników zmiennych.

+0

Dzięki. Używam http://www.javascriptobfuscator.com/ i działa dobrze. – Sekhmet

3

można umieścić zmienną wynik jako zmiennej lokalnej wewnątrz konstruktora klasy, w ten sposób trudniej dostać się do:

function MyClass() { 
    var score = 0; 

    this.somethingHappened = function() { 
    if (someondition) { 
     score++; 
    } 
    } 

    this.getScore = function() { 
    return score; 
    } 

} 

To oczywiście nadal możliwe hack kod, ale to nie jest w ogóle proste jak zmiana globalnej zmiennej.

+0

Tak, ale użytkownik może także edytować wynik. – Sekhmet

+0

@SeCorp Możesz nawet zamienić cały obiekt! Myślę, że powinieneś lepiej chronić (= "utrudnić") kod, który dodaje najlepszy wynik rozgrywki. – ComFreek

+0

@SeCorp: Tak, nie można zrobić skryptu, który jest niemożliwy do zhakowania, tylko trudniej jest wymyślić, jak to zrobić. – Guffa

4

Nie można faktycznie chronić żadnego kodu, który działa po stronie klienta!

Dlatego nie można chronić zawartości zmiennych. Możesz utrudnić hakowanie - jak powiedział Guffa.

+0

To prawda, możesz zmienić trudność poprzez zaciemnianie, kompresowanie lub dodawanie wskaźników w swoim skrypcie, aby trudniej było rozszyfrować i usunąć komentarze. W ten sposób łatwo zhakuję skrypty js – PauAI

7

Javascript jest wykonywany przez klienta. Wszystko, co dzieje się na kliencie, może być przez niego kontrolowane. Nie da się tego obejść. Możesz spróbować zaciemnić swój kod, ale to tylko sprawia, że ​​nieco trudniej jest dowiedzieć się, jak oszukiwać. Nie może powstrzymać kogoś, kto jest wystarczająco zdeterminowany.

Jedynym sposobem zaprojektowania gry, która jest odporna na oszustwa, jest wykonanie całej mechaniki gry na serwerze. Jest to oczywiście technicznie dużo trudniejsze, upośledza wrażenia z gry, gdy użytkownik ma złe połączenie i kosztuje dodatkowe zasoby, ponieważ potrzebujesz znacznie więcej mocy serwera, ale jest to jedyny sposób.

Nawiasem mówiąc: mamy stronę siostry http://gamedev.stackexchange.com, która jest szczególnie przeznaczona na pytania dotyczące tworzenia gier. Możesz tam uzyskać lepsze odpowiedzi.