Oppure

Loading
03/06/11 5:13
XBarboX
Salve,
ultimamente mi è venuto un dubbio sulla sicurezza dei giochi multiplayer.
Vi espongo il quesito:
Poniamo che avvio un packet sniffer e apro un videogioco, faccio una partita che mi fa scalare nel rank di X posizioni. Se guardo il log dello sniffer noterò di sicuro una il pacchetto mandato al server del gioco per indicare che ho fatto quel punteggio e che quindi il mio rank deve essere aumentato.
Molto probabilmente il pacchetto sarà criptato però una cosa non mi torna:

Una persona potrebbe benissimo rimandare tale e quale quel pacchetto anche se criptato al server e di consueguenza dovrebbe aumentare il rank di X posizioni...

Il mio ragionamento è sbagliato? (spero :rotfl: )Se si perchè?
E poi come é possibile rendere sicuro un punteggio online come in questo esempio?


p.s. Non è una domanda lamerona è solo che sto facendo un mini gioco/prova con rank online e vorrei capire come renderlo sicuro.
Ultima modifica effettuata da XBarboX 03/06/11 5:13
aaa
03/06/11 6:45
HeDo
quello che hai detto è verissimo.
peccato che un gioco online, se ben fatto, non lascia NULLA da calcolare/controllare al client, fa tutto lato server.
quando si sviluppa un gioco online bisogna tener presente che il client potrebbe essere TOTALMENTE compromesso, il giocatore potrebbe usare cheat, hax e trainers.
Tutti controlli sull'exp, livello e quant'altro vanno assolutamente calcolati sul server!
aaa
03/06/11 9:59
XBarboX
Ma se ad esempio voglio fare un gioco di macchine il tempo usato per finire il circuito lo deve calcolare il client. Come si fa in questo caso?
aaa
03/06/11 11:17
HeDo
Postato originariamente da XBarboX:

Ma se ad esempio voglio fare un gioco di macchine il tempo usato per finire il circuito lo deve calcolare il client. Come si fa in questo caso?


si fa che i client mandano le azioni che compiono gli utenti al server. Quest'ultimo simula la gara con tutti i partecipanti ed invia ai client la posizione della macchina con i tre vettori velocità (x y z).

In questo modo è impossibile barare per un client, in quanto quello che il server vuole sono le AZIONI che compie il giocatore e non il loro risultato. Il server ovviamente deve farsi carico della simulazione, il che è pesante dal punto di vista computazionale, ma è l'unico modo per sconfiggere i cheat :)
aaa
03/06/11 13:55
Qwertj
HeDo quello che hai detto è vero, ma se io mando al server pacchetti con azioni diverse da quelle che effettivamente eseguo?
Metti, ad esempio, che per la velocità uso un tasto (X), e che il client mandi un pacchetto con la velocità che l'utente imprime.
Se io modifico questo pacchetto il gioco è fatto.
aaa
03/06/11 15:22
HeDo
Postato originariamente da Qwertj:

HeDo quello che hai detto è vero, ma se io mando al server pacchetti con azioni diverse da quelle che effettivamente eseguo?
Metti, ad esempio, che per la velocità uso un tasto (X), e che il client mandi un pacchetto con la velocità che l'utente imprime.
Se io modifico questo pacchetto il gioco è fatto.


niente, non hai ancora capito :)
al server il client manda un pacchetto in cui dice "sto accelerando per X millisecondi", il server fa il calcolo data la velocità della macchina e la sua potenza di quanto sta effettivamente accelerando, ricava la sua velocità finale e la manda al client che la renderizzerà all'utente.
aaa
03/06/11 16:33
XBarboX
e se ad esempio manda al server sto accelerando di X m/s^2 per T secondi ?
Ovviamente si potrebbe modificare il pacchetto però bisognerebbe intuire come è criptato il pacchetto.

Insomma ho capito che per il multiplayer i cheater sono una brutta razza XD
aaa
03/06/11 16:40
Qwertj
Postato originariamente da HeDo:
niente, non hai ancora capito :)
al server il client manda un pacchetto in cui dice "sto accelerando per X millisecondi", il server fa il calcolo data la velocità della macchina e la sua potenza di quanto sta effettivamente accelerando, ricava la sua velocità finale e la manda al client che la renderizzerà all'utente.

Ecco, e se io modifico x millisecondi? Stessa roba
aaa