2012-10-28 8 views

risposta

2

Non c'è niente che tu possa fare per evitarlo. Puoi renderlo più difficile offuscando il codice, ma è ancora possibile hackerare il punteggio.

Un modo per rendere ancora più difficile il doppio salvataggio del punteggio e del ciclo o qualche funzione è controllare se è stato modificato al di fuori della logica di gioco, in questo modo l'utente deve trovare entrambe le variabili.

E se il secondo valore del punteggio è il doppio di un altro valore del punteggio, è ancora più difficile da trovare confrontando il punteggio corrente con tutti i punteggi delle variabili.

+0

Grazie. Io uso http://www.javascriptobfuscator.com/ e funziona bene. – Sekhmet

3

si può mettere la variabile punteggio come una variabile locale all'interno di un costruttore della classe, in questo modo è più difficile da raggiungere:

function MyClass() { 
    var score = 0; 

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

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

} 

E 'naturalmente ancora possibile modificare il codice, ma non è affatto come semplice come cambiare una variabile globale.

+0

Sì, ma l'utente può anche modificare il punteggio. – Sekhmet

+0

@SeCorp È anche possibile sostituire l'intero oggetto! Penso che dovresti proteggere meglio (= "rendere più difficile") il codice che aggiunge il punteggio più alto giocato. – ComFreek

+0

@SeCorp: Sì, non è possibile creare uno script che è impossibile da violare, è solo possibile rendere più difficile capire come farlo. – Guffa

4

In realtà non è possibile proteggere TUTTO il codice eseguito sul lato client!

Pertanto, non è possibile proteggere il contenuto delle variabili. Puoi solo renderlo più difficile da hackerare - come ha detto Guffa.

+0

Esatto, quello che puoi fare è cambiare la difficoltà offuscando, comprimendo o aggiungendo i puntatori del tuo script in modo che sia più difficile decodificarli e assicurarti di rimuovere i commenti, è così che ho facilmente hackerato gli script js – PauAI

7

Javascript è un client lato client. Tutto ciò che accade sul client può essere controllato da esso. Non c'è modo di aggirarlo. Puoi provare a offuscare il tuo codice, ma questo rende solo un po 'più difficile scoprire come imbrogliare. Non può fermare qualcuno che è determinato abbastanza.

L'unico modo per progettare un gioco che è a prova di cheat è di fare tutte le meccaniche di gioco sul server. Questo è ovviamente tecnicamente molto più impegnativo, compromette l'esperienza di gioco quando l'utente ha una cattiva connessione e ti costa risorse aggiuntive perché hai bisogno di molta più capacità del server, ma è l'unico modo.

A proposito: abbiamo un sito gemello http://gamedev.stackexchange.com che è specialmente per domande sullo sviluppo del gioco. Potresti ottenere delle risposte migliori lì.