2012-10-13 16 views
5

Sto implementando un'applicazione di gioco basata su cocos2d-x. Per prevenire tecnicamente il cheating, una delle idee da fare è usare HTTPS per tutte le comunicazioni client-server, il che rende difficile ottenere il formato dei dati/la logica del gioco e inviare una richiesta modificata per imbrogliare. (So ​​che "prevenire" è in realtà impossibile ma per aumentare il costo di rendere il gioco ingannevole va bene:). La mia domanda è,HTTPS su Cocos2d-x

  1. In Cocos2d-x, come effettuare la richiesta HTTPS? Possibile?
  2. In un caso più generale, tecnicamente cosa fare per ridurre questo tipo di hacking? Quale strategia tenere?

risposta

0

utilizzando la libreria di arricciature è possibile effettuare la connessione https. se vuoi proteggere tecnicamente il tuo gioco usa una tecnica di crittografia forte.

Grazie

2

Per nativo multi-piattaforma C++ rete si può considerare l'utilizzo di librerie Boost C++. Boost.Asio è quello utilizzato per il networking.

Boost.Asio link: tutorial http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio.html

Boost.Asio dei collegamenti: http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial.html

Anche se non ufficialmente supportato (solo per la mancanza di test di regressione su iOS e Android), Boost funziona senza alcun problema su iOS e Android (e probabilmente anche altre piattaforme mobili basate su C++).

Per evitare imbrogli, di solito ci si basa su una fonte esterna (che può essere il server di gioco) ad es. se il tuo gioco si basa sull'ora del giorno potresti ottenere il tempo da un server esterno. È possibile utilizzare librerie di crittografia per il trasferimento dei dati sul lato client e server.

+0

Grazie mille anche se non è un post nuovo. :) –

+1

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++. –

0

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.