Ciao, questo è un problema che affrontiamo continuamente. Se l'inganno è limitato all'istanza del cheater, le domande sono accademiche e dovrebbero essere studiate nel tempo libero.
D'altra parte quando il reddito è influenzato o quando le azioni del Cheater impatto altri giocatori e degradano l'esperienza di gioco si dovrebbe mettere un certo sforzo da testare lo stato del gioco per incongruenze, fissare le transazioni client/server e affrontare barare in modi molto sottili per evitare di scoraggiare completamente l'interesse degli imbroglioni.
Le implementazioni C++ https sono disponibili con curl e boost.
Per quanto riguarda i dati di gioco, il modo più semplice per verificare le incoerenze sono i punteggi. Puoi aggiungere alcuni indicatori per evitare di inquinare le classifiche. È possibile aggiungere checksum speciali in base alle componenti del punteggio (tempo trascorso in gioco, numero di potenziamenti e moltiplicatori di punteggio ricevuti ...) se è possibile ricalcolare il punteggio sul server e se vengono rilevate incoerenze, è possibile gestirle.
Inoltre è possibile catturare istantanei dello stato del gioco e alcuni comandi, codificarlo e riprodurre le sequenze sul server per verificare eventuali incoerenze. Affronta gli imbroglioni come preferisci.
Quando si gioca su un server, lasciare che il server gestisca il gamestate e non consentire modifiche dello stato del gioco lato client che potrebbero avere un impatto sui giocatori. Verifica la coerenza dell'input ecc ...
Quando si utilizzano le micro transazioni, ciascuna micro transazione deve essere verificata con i server dei fornitori prima di essere completamente impegnata nell'account del giocatore.
Anche se questi documenti 1, 2 dalla valvola si riferiscono a giochi FPS, dovrebbero darvi alcuni suggerimenti su come gestire le incoerenze di stato (introdotte dai ritardi di comunicazione). Dovrebbe aiutare ad evitare falsi positivi e rovinare l'esperienza per i non cheaters.
Grazie mille anche se non è un post nuovo. :) –
Sì. Mi rendo conto che non è un post nuovo, tuttavia ho sentito il bisogno di rispondere a questa domanda dato che le persone di solito hanno problemi con il networking multipiattaforma in C++. –