La risposta breve è che non puoi farlo. Tutto ciò che gestisce il lato client, specialmente dalla fonte, può essere modificato per sconfiggere banalmente le tue tattiche. Se si imposta un controllo lato client per cercare modifiche improvvise, un utente può semplicemente disabilitare il controllo.
La buona notizia è che, in generale, c'è molto poco inganno nei giochi per giocatore singolo. L'unica eccezione importante è per i giochi che hanno grandi community "youtube highscore" come Line Rider, in cui i giocatori competono tra loro su YouTube.
Se stai mirando a questo, o sei troppo testardo per accettare che le persone possano imbrogliare nel gioco, o stai mantenendo tu stesso i punteggi più alti (che è una forma di multiplayer), allora tutto ciò che devi fare è tutti i calcoli sul lato server . Sì, tutto ciò che conta. Non è nemmeno possibile ripetere il lato client di calcolo per provare a dare all'utente il punteggio e quindi 'verificarlo' con il server perché l'utente può semplicemente disabilitare il controllo e disabilitare qualsiasi sistema che garantisca che ci siano controlli.
Vorrei che ci fosse una risposta migliore a questo, ma non lo è.
Detto questo, ci sono cose che puoi fare per rendere un po 'più difficile imbrogliare. Non impediranno a nessuno serio di farlo e di rilasciare un toolkit per imbrogliare, ma li rallenterà:
- Minimizza e offusca il tuo JS, il che renderà il codice più difficile da leggere. È possibile de-minificare e smascherare una sorta di de-offuscamento, ma non è mai possibile recuperare la variabile corretta, i nomi delle funzioni e i commenti.
- Inserisci valori con una lingua diversa. In questo caso è possibile utilizzare PHP o altre lingue lato server per gestire variabili di configurazione statiche. Se si suppone che la distanza di salto sia sempre di 2 spazi, normalmente si definirebbe una distanza di salto per l'oggetto giocatore. No, gestiscilo con PHP in modo che la sorgente JS finisca con 2s intonacati in tutto il codice in un milione di posti. Questo ha il felice effetto collaterale aggiuntivo di poter accelerare anche il tuo JS.
- Con un po 'di pratica, diventerai abile con il mix e potrai persino costruire il tuo JS su misura per ogni giocatore. Questo è un altro modo per prevenire i tradimenti. Se il codice di ogni giocatore è diverso in qualche modo, è più difficile scrivere un trucco che può far parte di un toolkit.
- Infine, puoi fare il checksum della fonte in base all'identità del giocatore. Pronuncia il loro indirizzo IP e / o nome utente. Sai quale sarà la versione specifica del giocatore di JS, puoi effettuare un checksum e richiedere che sia lo stesso dall'altra parte. Facile da disabilitare come qualsiasi JS lato client, ma ancora una volta rende più difficile la creazione di un toolkit.
Così. Come vedi, probabilmente non vale la pena percorrere questa strada. È difficile. Richiede molte pratiche di programmazione davvero stupide ed è ancora relativamente facile da sconfiggere. Dovrai fare tutti i calcoli sul lato server per evitare imbrogli. O lascia andare, e accetta che accada succederà.