Oppure

Loading
03/06/11 17:15
HeDo
Postato originariamente da Qwertj:

Ecco, e se io modifico x millisecondi? Stessa roba


assolutamente no, perchè il server è in realtime con il client :)
in realtà non mandi un intervallo di tempo tipo 100ms, ma mandi il timestamp iniziale e finale di quando premi e rilasci l'acceleratore!

purtroppo voi non avete presente come funziona il netcode di un gioco multiplayer realtime, vi darò alcuni lumi:

Il problema principale di un motore di questo tipo è la sincronizzazione tra i client, a causa del delay della connessione alcuni client possono vedere prima o dopo di altri l'aggiornamento dello stato del mondo.

il server manda ad ogni client un treno di snapshots in cui è presente l'aggiornamento del mondo. Questi snaps sono distanziati da un delay fisso che da la frequenza di aggiornamento e quindi la qualità del realtime.
Ogni client invia un pacchetto che contiene le azioni da lui intraprese dalla ricezione dell'ultimo snapshot, il server riceve le azioni del client, modifica lo stato del mondo e nello snapshot successivo aggiorna gli altri client.

Il problema che sollevate voi in realtà non esiste, o meglio, esiste se non si usa un po di criterio :)
I pacchetti che manda il client contengono le azioni e il timespan in cui si sono verificate, questo intervallo di tempo è trasmesso come coppia di timestamp riferiti al tempo assoluto del server.
Se un client prova a modificare questo timespan per avere un qualche vantaggio il server semplicemente scarta il pacchetto perchè si accorge se i timestamp non sono compresi tra l'ultimo snapshot inviato e il tempo corrente.

spero di aver reso l'idea, purtroppo il netcode di un gioco online che ha la pretesa di essere multiplayer e realtime è molto complesso, quello che ho scritto io è la base della base :)
aaa
03/06/11 18:37
XBarboX
credo di aver capito.
Grazie di tutto a tutti.

Bisogna dire che per rendere un giocoprogramma sicuro bisogna sbattersi parecchio...
aaa
04/06/11 15:50
Qwertj
Postato originariamente da XBarboX:

credo di aver capito.
Grazie di tutto a tutti.

Bisogna dire che per rendere un giocoprogramma sicuro bisogna sbattersi parecchio...


Già, e anche avere un buon server

@HeDo Ho capito grazie... C'è un po' di differenza tra X millisecondi e due timestamp :yup:
aaa