2011-08-24 16 views
11

Attualmente sto sviluppando un gioco utilizzando JavaScript/JQuery. È un semplice tipo di rompicapo che mantiene il punteggio, i livelli, ecc. Sto pianificando di implementare una classifica che gli utenti possano inviare a punteggio finale. L'unico problema che vedo è che gli utenti manipolano il punteggio utilizzando strumenti di sviluppo sulla maggior parte dei browser. Capisco che mantenere le cose lato server risolverà la maggior parte di questi problemi, tuttavia se c'è un volume elevato di utenti, colpirà il mio server con delle richieste. Cookies - Facilmente cambiato lato client. Sono onestamente fuori dalle idee logiche per promuovere un gioco leale perché ci sono SEMPRE persone che cercano di imbrogliare/diventare il capo della classifica. Detto questo, qual è un modo efficace ed efficiente per tenere traccia del punteggio dell'utente senza dare loro l'accesso per cambiarlo?Previene il gioco cheating su Javascript

+0

Ci dovrebbero essere delle buone risposte in molte delle domande correlate su questa pagina. Come è diversa la tua domanda? –

+1

possibile duplicato di [Quali sono i modi migliori per prevenire l'imbroglio nei giochi multiplayer JavaScript?] (Http://stackoverflow.com/questions/5250403/what-good-ways-ways-are-there-to-prevent-cheating-in- javascript-multiplayer-games) – Konerak

risposta

5

offuscare il proprio punteggio creando un'equazione che può essere calcolata solo sul lato server.

Modifica: RobG è corretto in quanto dovrà essere calcolato sul lato client.

ho inciso il gioco Angry Birds, quando ha lanciato il Chrome:

http://wesbos.com/all-levels-html5-angry-birds/

Tuttavia, essi hanno dato offuscare il codice così tanto che la sua impossibile capire quale funzione di hash calcolato ..

+0

Meravigliosa idea! Non ci ho mai pensato. Definirò sicuramente questo concetto. Grazie mille! –

+2

Il codice è in esecuzione lato client, quindi qualsiasi codifica si verifica sul client e può essere falsificato. Approcci diversi lo rendono più o meno difficile. – RobG

+0

@RobG per un gioco di puzzle c'è l'opportunità di fare lo spoofing del punteggio difficile come il gioco stesso. –

2

Non si può garantire non barare, è impossibile. Il server risponde alle richieste, il gioco è fatto. Non ha idea del codice in esecuzione sul client, del tipo di agente utente o dell'ambiente in cui si trova o anche se sta eseguendo il codice o un fac-simile.

È possibile prendere varie misure per rendere più difficile lo spoofing, ma non è possibile renderlo impossibile. Il costo di tali misure (di solito visto come "sicurezza") è solitamente bilanciato con il valore del bene protetto.

8

rendere la pagina presentare un replay completa del gioco, piuttosto che solo il punteggio finale. Dato il seed casuale e un record frame by frame degli input dell'utente, il tuo server dovrebbe essere in grado di simulare e ricostruire il gioco e verificare il punteggio.

Ovviamente anche il replay può essere simulato, ma ciò equivarrebbe a molto lavoro (effettivamente giocando e ottenendo effettivamente un buon punteggio, sebbene con il vantaggio ingiusto di assistenza AI, rallentamento e altri hack client) quello strumento I punteggi assistiti dovrebbero meritare di essere in classifica.

+0

Questa è la soluzione più efficace, ma non la più semplice. – 7yl4r

1

Un'idea che avevo era di usare un timer di gioco. Se l'utente cambia il punteggio in un importo che ovviamente non è possibile, data la quantità di tempo trascorso, rifiutare di registrare le informazioni. È possibile avviare il timer e controllare il timer nello script sul lato server.

Ora, ovviamente, se cambiano il punteggio solo di alcuni punti questo controllo potrebbe non riuscire, ma, se aggiungono solo un importo inferiore a quello dell'impatto, forse non ti interesserà altrettanto?

0

Si potrebbe anche rendere la classifica meno importante, condividendo solo i punteggi con amici "fidati". O semplicemente permettendo alle persone di condividere il loro punteggio su qualsiasi sito di social networking. Forse questo rimuove la motivazione primaria per imbrogliare in primo luogo.

Si potrebbe quindi confrontare sempre il punteggio in modo implicito con le statistiche raccolte, per sapere se qualcuno sta facendo del bene o meno.

Problemi correlati